Я пытаюсь работать с версией 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? Или можете указать мне правильное направление?