多个意图共享相同的槽值
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,而是匹配CheckStatusIntent
的TicketNumber
。
这很令人困惑,请告诉我哪里出错了,我该如何解决。
谢谢
您需要使用 "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 纯数字输入。
我希望这有助于澄清事情。我知道你刚开始的时候很复杂。我发现使用多个独特的意图让事情变得非常简单是最简单的。
我正在编写一项 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,而是匹配CheckStatusIntent
的TicketNumber
。
这很令人困惑,请告诉我哪里出错了,我该如何解决。
谢谢
您需要使用 "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 纯数字输入。
我希望这有助于澄清事情。我知道你刚开始的时候很复杂。我发现使用多个独特的意图让事情变得非常简单是最简单的。