alexa aws lambda 集成问题|如何处理重新提示?

alexa aws lambda integration issue| How to handle reprompt?

我是node.js的新手,正在尝试开发基于lambda的示例alexa技能function.My启动请求函数是这样的。

    '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');
},

我想捕捉用户表达的价值是什么?语音输出发出正常但基于用户值 entered\uttered 我想调用不同的意图。 怎么做?

另外,当我测试 lambda 函数时,console.log stmt 从未被打印出来。它从 GetmyFactIntent 方法打印得很好。

this.event.request.intent.slots.Answer.value;

我们需要在意图中定义插槽,然后捕获该值。

在 Alexa 交互模式中,为每个 Intent 创建具有许多示例话语的不同 Intent。如果您想从用户那里获得任何价值,请添加带有话语的插槽,即 "my favorite color is green" 这里绿色是用户输入,您可以从插槽中获取。

下面是 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": []
        }

但是answer Intent需要slot来从用户回复中得到答案。在下面的用户交互模型中,用户将给出状态名称,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