我最近创建了Alexa的“谜语”技能,但在发声方面遇到了麻烦。我创建了一个意图“ GetRiddleIntent”,然后关联了一些话语,例如用这个意图“让我困惑”。我没有包含任何意图插槽。测试技能时,必须使用调用名称才能从lambda返回结果。
内置意图在调用时起作用“ LaunchRequest”和“ Amazon HelpRequest”,但针对我的自定义意图的所有示例话语均未返回任何结果,因此,我不断收到“请求的技能响应存在问题”。
这是使用JAVA和ask-sdk V2实现的一个谜语技能。
我尝试从头开始实现负责谜语的处理程序。
编辑了Riddle字符串,以确保没有任何字符可能导致任何响应失败。
沉迷于将“ shouldEndSession”更改为true和false(当前将其设置为false)
我还将来自开发人员控制台的错误响应复制到了我的lambda配置中,以获取更详细的错误日志,并且没有任何内容专门针对我的说法。我得到一个java.lang.NullPointerException指向内置库中的错误,例如com.amazon.ask.SkillStreamHandler.handleRequest(SkillStreamHandler.java:71)
我还查看了V2中的以下示例技能以寻求帮助,但没有一个帮助。 https://github.com/alexa/alexa-skills-kit-sdk-for-java/tree/2.0.x/samples
package lambda.riddle.handlers;
import static com.amazon.ask.request.Predicates.intentName;
import java.util.Optional;
import com.amazon.ask.dispatcher.request.handler.HandlerInput;
import com.amazon.ask.dispatcher.request.handler.RequestHandler;
import com.amazon.ask.model.Response;
import riddle_generator.Riddle;
import riddle_generator.GenerateRiddles;
public class GetRiddleIntentHandler implements RequestHandler
{
public boolean canHandle(HandlerInput input)
{
return input.matches(intentName("GetRiddleIntent"));
}
@Override
public Optional<Response> handle(HandlerInput input)
{
String speechText, repromptText;
speechText = "I am caucasian, internet famous and best known for my catchphrase, catch me outside how about that. Who am I?";
repromptText = "I am caucasian, internet famous and best known for my catchphrase, catch me outside how about that. Who am I?";
return input.getResponseBuilder()
.withSimpleCard("RiddleSession", speechText)
.withSpeech(speechText)
.withReprompt(repromptText)
.withShouldEndSession(false)
.build();
}
}
我应该在开发控制台中获得SpeechText作为响应,但是会收到“请求的技能的响应存在问题”消息。
以下是错误响应:
{
"request": {
"type": "SessionEndedRequest",
"requestId": "amzn1.echo-api.request.338924d9-8cf9-448a-85a2-6a8bacc5e1be",
"timestamp": "2019-02-02T12:01:04Z",
"locale": "en-GB",
"reason": "ERROR",
"error": {
"type": "INVALID_RESPONSE",
"message": "An exception occurred while dispatching the request to the skill."
}
}
}