我正在迁移到 ASK SDK v2 for Java,在 SDK v2 中,每个onLaunch
,onSessionEnded
和ontIntent
case 都被分离到不同的处理程序中。
问题:
如何将我的输入传递给handle(HandlerInput input)
ofLaunchRequestHandler
以及如何从我的代码中调用handle(HandlerInput input)
of ?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()
ofLaunchRequestHandler
以及如何调用相同的handle()
方法?