Как передать Input в handle() и как вызвать handle() из LaunchRequestHandler в alexa SDK V2 для Java?

Я перехожу на ASK SDK v2 для Java, где в SDK v2 каждый onLaunch, onSessionEnded, а также ontIntent case разделен на другой обработчик.

Вопрос:

Как передать мой вклад в handle(HandlerInput input) из LaunchRequestHandler и как позвонить handle(HandlerInput input) из LaunchRequestHandler из моего кода?

Также в V2 SpeechletRequestEnvelope класс был удален, так как создать requestEnvelope получить Request а также Session подробности?

public class LaunchRequestHandler implements RequestHandler {
  @Override
  public boolean canHandle(HandlerInput input) {
    return input.matches(Predicates.requestType(LaunchRequest.class));
  }

  @Override
  public Optional<Response> handle(HandlerInput input) {
  String speechText = "Welcome to the Alexa Skills Kit, you can say hello";
    return input.getResponseBuilder()
        .withSpeech(inputString)
        .withSimpleCard("HelloWorld", inputString)
        .withReprompt(inputString)
        .build();
  }
}

Место вызова:

String body = myO ject.getAdditionalProperties().get("request").toString();
byte[] myRequest = URLDecoder.decode(body, StandardCharsets.UTF_8.name()).getBytes();

Как пройти myRequest в handle() из LaunchRequestHandler и как же звонить handle() метод?

0 ответов

Для вашего второго вопроса, связанного с деталями запроса и сеанса

public ResponseEntity<String> handleAlexaRequest(HttpServletRequest request) {

    RequestEnvelope requestEnvelope;
    ServletRequest servletRequest;

    byte[] serializedRequestEnvelope;

    try {
        serializedRequestEnvelope = IOUtils.toByteArray(request.getInputStream());
        RequestEnvelope deserializedRequestEnvelope = this.serializer.deserialize(new String(serializedRequestEnvelope, StandardCharsets.UTF_8), RequestEnvelope.class);

        servletRequest = new ServletRequest(request,serializedRequestEnvelope,deserializedRequestEnvelope);

        requestEnvelope = verifier.verify(alexaHttpRequest);

    }


    requestEnvelope.getRequest();
    requestEnvelope.getSession()
Другие вопросы по тегам