多个意图共享相同的槽值

Multiple intents sharing the same slot value

我正在编写一项 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:客户的名字是什么。 用户:萨拉·约翰 Alexa:Sara John 的年龄是多少 用户:65

这里当我给出65时,不是匹配ClientSuggestIntent中的with,而是匹配CheckStatusIntentTicketNumber

这很令人困惑,请告诉我哪里出错了,我该如何解决。

谢谢

您需要使用 "state handlers" 执行此操作。这是我制作的视频,解释了如何操作。 https://youtu.be/ukR0Aw5P3W8

如果您使用节点的 ask-sdk,您将使用 Alexa.CreateStateHandler(...) 创建一个状态处理程序,其中包含您的 CheckStatusIntent 函数,另一个状态处理程序包含您的 ClientSuggestIntent 函数。

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

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

您需要为 Alexa 提供一种方法来区分您的每个意图。例如,"ticket {TicketNumber}" 和 "my age is {age}".

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

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