多个意图共享相同的槽值

时间:2017-10-22 20:26:44

标签: alexa-skills-kit

我正在编写一个Alexa技能,可以从一个意图中捕获一个票号,并从不同的意图中捕捉年龄。基本上,这两个是类型编号。

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

{
  "intents": [
    {
      "slots": [
        {
          "name": "TicketNumber",
          "type": "AMAZON.NUMBER"
        }
      ],
      "intent": "CheckStatusIntent"
    },
    {
      "slots": [
        {
          "name": "ageAndCurrency",
          "type": "AMAZON.NUMBER"
        }
      ],
      "intent": "ClientSuggestIntent"
    }
  ]
}

我的样本话语是

CheckStatusIntent I want to check on the status of a ticket
CheckStatusIntent {TicketNumber}


ClientSuggestIntent I have a client meeting tomorrow.
ClientSuggestIntent {ageAndCurrency}
ClientSuggestIntent {personName}

在我的ClientSuggestIntent中,流程应如下所示。

用户:明天我会召开客户会议。 Alexa:客户的名字是什么。 用户:Sara John Alexa:萨拉约翰的年龄是多少 用户:65

当我提供65时,而不是ClientSuggestIntent中的匹配,它与TicketNumber的{​​{1}}匹配。

这非常令人困惑,请让我知道我哪里出错了,我该如何解决这个问题。

由于

2 个答案:

答案 0 :(得分:4)

你需要使用“状态处理程序”来做到这一点。这是我做过的视频,解释了如何做到这一点。 https://youtu.be/ukR0Aw5P3W8

如果您正在使用ask-sdk for node,则使用Alexa.CreateStateHandler(...)创建一个状态处理程序,其中包含CheckStatusIntent函数,另一个状态处理程序使用ClientSuggestIntent函数。

另请阅读https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs#making-skill-state-management-simpler

答案 1 :(得分:2)

详细说明史蒂夫上面的答案,问题是Alexa无法区分" CheckStatusIntent {TicketNumber}"和" ClientSuggestIntent {ageAndCurrency}"因为两者都只是一个数字。

您需要为Alexa提供一种区分每个意图的方法。例如,"票证{TicketNumber}"和#34;我的年龄是{age}"。

或者,您可以按照Steve的描述设置上下文,并使用单个意图来处理任何数字输入。

我希望这有助于澄清事情。我知道你刚开始的时候很复杂。我发现使用多个独特的意图使事情变得非常简单是最容易的。