如何使用Java版本的Alexa ASK 2 DialogeStage和Delegate?

时间:2018-10-31 09:31:18

标签: java alexa-skills-kit alexa-skill alexa-slot

我正在尝试使用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委托示例吗?还是可以指出正确的方向?

0 个答案:

没有答案