我是node.js的新手,并尝试开发基于lambda函数的示例alexa技能。我的启动请求函数是这样的。
'LaunchRequest': function () {
const speechOutput = HELP_MESSAGE;
console.log("Inside launch");
const reprompt = "Welcome to US Facts. Do you want a new fact";
this.response.speak(speechOutput).listen(reprompt);
this.emit(':responseReady');
// this.emit('GetmyFactIntent');
},
我想捕捉用户说出的价值是什么? speechoutput被很好地发出但是根据输入的用户值\发出我要调用不同的Intents。 怎么做?
此外,当我测试lambda函数时...从不打印console.log stmt。它从GetmyFactIntent方法打印得很好。
答案 0 :(得分:0)
this.event.request.intent.slots.Answer.value;
我们需要在intent中定义插槽,然后捕获该值。
答案 1 :(得分:0)
在Alexa交互模式中,为每个Intent创建具有许多样本话语的不同意图。如果您想从用户那里获得任何价值,请添加带有话语的插槽,即"我最喜欢的颜色是绿色"这里绿色是用户输入,您可以从插槽中获取。
以下是Quiz Intent的交互模型,您不需要任何插槽。
{
"name": "QuizIntent",
"samples": [
"start a quiz",
"start a quiz game",
"and start a quiz",
"and quiz me",
"for a quiz",
"a quiz"
],
"slots": []
}
但是回答Intent需要插槽才能从用户回复中得到答案。在下面的用户交互模型中,用户将给出状态名称,Alexa将从内部插槽类型AMAZON获取它.US_STATE
{
"name": "AnswerIntent",
"samples": ["{StateName}"],
"slots": [
{
"name": "StateName",
"type": "AMAZON.US_STATE",
"samples": []
} ]
}
您可以使用以下代码行
获取Node.js lambda函数中的槽值let slots = this.event.request.intent.slots;
let stateName = this.event.request.intent.slots["StateName"];
请参阅本教程以获取更多信息https://github.com/alexa/skill-sample-nodejs-quiz-game