我正在研究Alexa技能,当用户通过LaunchRequest打开技能时,我想将用户重定向到一个意图。
-
用户表示
Open xyz skill
-
LaunchRequest接收该请求并将请求转发给另一个intent。
this.emit('AnotherIntent')
-
AnotherIntent
-
我已按要求设置插槽,并且
另一个内容
单独调用时,它的工作非常好。
然而,当我启动技能并尝试呼叫时
另一个内容
如上文第2步所述,Alexa skill无法启动。
还有一件事需要注意的是,当我在这个场景的skill builder中测试相同的Alexa技能时,输出json正确地显示了所引出的槽。当我试图从Echo设备运行它时,不确定发生了什么。
我正在使用NodeJS和Lambda部署我的Alexa处理程序。
任何帮助都将不胜感激。
基于评论的进一步参考-
处理程序-
var handlers = {
'LaunchRequest': function () {
console.log("LaunchRequest::" + JSON.stringify(this.event.request));
this.emit('fooIntent');
},
'SessionEndedRequest': function () {
console.log('session ended!');
},
'fooIntent': function () {
const intentObj = this.event.request.intent;
if (!intentObj || (intentObj && !intentObj.slots.WHEN.value)) {
console.log('fooIntent::UserId' + this.event.session.user.userId);
const slotToElicit = 'WHEN';
const speechOutput = 'Ask a question here ?';
const repromptSpeech = speechOutput;
console.log("emitting elict now");
this.emit(':elicitSlot', slotToElicit, speechOutput, repromptSpeech);
} else {
// SLOT is filled, let's query the database to get the value for the slot.
console.log("fooIntent intent:something is requested for " + this.event.request.intent.slots.WHEN.value);
// All the slots are filled (And confirmed if you choose to confirm slot/intent)
fooIntentFunction(this,this.event.request.intent.slots.WHEN.value);
}
},
'AMAZON.HelpIntent': function () {
var speechOutput = "Need to come up with one.";
var reprompt = "What can I help you with?";
this.emit(':ask', speechOutput, reprompt);
},
'AMAZON.CancelIntent': function () {
this.emit(':tell', 'Goodbye!');
},
'AMAZON.StopIntent': function () {
this.emit(':tell', 'Goodbye!');
}
};
LaunchRequest中捕获的JSON请求
{
"type": "LaunchRequest",
"requestId": "amzn1.echo-api.request.972bb705-d181-495e-bf60-991f2bd8fbb1",
"timestamp": "2017-12-30T21:35:21Z",
"locale": "en-US"
}
从LaunchRequest调用时在Intent中捕获的JSON请求。这表明
intent
然后未设置。我相信这就是为什么当我尝试在fooIntent实现中发出elicit时它总是失败的原因,如上图所示。
{
"type": "LaunchRequest",
"requestId": "amzn1.echo-api.request.972bb705-d181-495e-bf60-991f2bd8fbb1",
"timestamp": "2017-12-30T21:35:21Z",
"locale": "en-US"
}