Alexa SDK V2 StateHandler-多个意图共享相同的插槽值

时间:2018-12-06 08:39:53

标签: alexa-skills-kit alexa-sdk-nodejs

我正在写一种Alexa技能,该技能可以从一种意图中捕捉年龄,并从不同意图中获取体重。和基本上,这两个是数字类型。

当我尝试输入重量数字时,它被捕获在第一个Intent的插槽中。这是我的意图模式。

{
  "intents": [
    {
      "slots": [
        {
          "name": "AGE",
          "type": "AMAZON.NUMBER"
        }
      ],
      "intent": "AgeIntent"
    },
    {
      "slots": [
        {
          "name": "WEIGHT",
          "type": "AMAZON.NUMBER"
        }
      ],
      "intent": "WeightIntent"
    }
  ]
}

我的样本话语是

AgeIntent

My age is {AGE}
{AGE}

WeightIntent

My weight is {WEIGHT}
{WEIGHT}

对话

User : open my test skill
Alexa: what is your age
User: 28
Alexa: what is your weight
User: 68

此处,当用户给他的体重输入68时,它与 AgeIntent 匹配,而不是匹配 WeightIntent 。我的request.intent.name中出现了AgeIntent。

我知道它将与 我的体重为68 一起使用;并且我可以使其与Alexa-SDK-V1的StateHandler功能一起使用,但是我正在使用Alexa-SDK-V2

所以这里的问题是:技能总是从交互模型中发送第一个匹配的IntentName(即AgeIntent)的intentName,我希望我的第二个问题得到第二个匹配的IntentName(即WeightIntent)。

1 个答案:

答案 0 :(得分:1)

该解决方案很简单,要么您仅制定1个意图,然后使用dialog management来获取所需的所有插槽值,要么如果需要使它们成为单独的意图,则在技能交流会中使用状态变量并确保您可以同时设置和更新状态。您可以按照以下方式进行操作:

effectiveAppearance

尽管最好使用“对话框”来使状态没有混乱,并且以后可以轻松添加更多插槽。