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

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

Вопрос:

Как передать мой ввод в 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()?


person Vinod Paliwal    schedule 24.12.2018    source источник


Ответы (1)


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

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()
person Rich Elswick    schedule 18.11.2019