Как использовать Java-версию Alexa ASK 2 DialogeStage и Delegate? - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь работать с версией Alexa ASK 2.7.1 Java.

<dependency>
  <groupId>com.amazon.alexa</groupId>
  <artifactId>ask-sdk</artifactId>
  <version>2.7.1</version>
</dependency>

Следующий код, кажется, успешно делегирует обратно в Alexa для отсутствующего слота.

@Override
public Optional<Response> handle(HandlerInput input) {
   Request request = input.getRequestEnvelope().getRequest();
   IntentRequest intentRequest = (IntentRequest) request;
   Intent intent = intentRequest.getIntent();
   return input.getResponseBuilder().addDelegateDirective(intent).build();
}

Однако я не смог обработать намерение, когда все слоты предоставлены. Например, попытка вернуть следующее не удалась с ошибкой после делегирования.

return input.getResponseBuilder()
            .withSpeech(speechText)
            .withReprompt(repromptText)
            .build();

Глядя на официальные примеры JavaScript, мне кажется, мне нужно сделать два класса. Один для делегирования и один для отправки речи. Но когда я пытаюсь сделать что-то похожее на intentRequest.getDialogState().equals(DialogState.COMPLETED) в методе 'canHandle' или 'handle', я получаю исключение NullPointerException.

Официальные образцы Java не показывают, как это сделать. У вас есть рабочий пример делегирования Java? Или можете указать мне правильное направление?

...