我正在写一种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)。
答案 0 :(得分:1)
该解决方案很简单,要么您仅制定1个意图,然后使用dialog management来获取所需的所有插槽值,要么如果需要使它们成为单独的意图,则在技能交流会中使用状态变量并确保您可以同时设置和更新状态。您可以按照以下方式进行操作:
effectiveAppearance
尽管最好使用“对话框”来使状态没有混乱,并且以后可以轻松添加更多插槽。