我正在编写一个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}}匹配。
这非常令人困惑,请让我知道我哪里出错了,我该如何解决这个问题。
由于
答案 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的描述设置上下文,并使用单个意图来处理任何数字输入。
我希望这有助于澄清事情。我知道你刚开始的时候很复杂。我发现使用多个独特的意图使事情变得非常简单是最容易的。