我正在研究一项 Alexa 技能,当他通过 LaunchRequest 打开技能时,我想将用户重定向到一个意图。
- 用户说
Open xyz skill
- LaunchRequest 接收到这个并将请求转发给另一个意图。
this.emit('AnotherIntent')
AnotherIntent
有一个 SLOT 是其功能所必需的。- 我已经根据需要设置了 SLOT,并且在单独
AnotherIntent
调用时可以正常工作。
但是,当我启动该技能并尝试AnotherIntent
从上面第 2 步中提到的从其中调用时,Alexa 技能无法启动。
还有一点需要注意的是,当我在此场景的技能构建器中测试相同的 Alexa 技能时,输出 json 正确地向我显示了被引出的 SLOT。不确定当我尝试从 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"
}
- 阿米特