我正在尝试使用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示例,看来我需要做两个类。一位代表发言,一位代表讲话。但是,当我尝试在'canHandle'或'handle'方法中执行类似于intentRequest.getDialogState().equals(DialogState.COMPLETED)
的操作时,会收到NullPointerException。
官方Java示例未显示如何执行此操作。您有一个有效的Java委托示例吗?还是可以指出正确的方向?