alexa aws lambda整合问题|如何处理责备?

时间:2018-04-06 08:11:20

标签: aws-lambda alexa alexa-skills-kit

我是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方法打印得很好。

2 个答案:

答案 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