我有一个应在“是”,“否”或“重复”上调用的处理程序。在“不”和“重复”上,它绝对完美。回答“是”,我得到一个错误。然后我检查Cloudwatch,它说找不到合适的处理程序。但是,当我在Lambda中测试广告位的值时,“ yes”是完美的。
这可能是怎么回事?是出于某些原因,“是”不应该通过设计起作用吗?与AMAZON有关。也许是Intent吗?
这是我的意图交互模型的摘录:
{
"name": "RoundingVerifyIntent",
"slots": [
{
"name": "RoundingVerify",
"type": "ROUNDING_VERIFY"
}
],
"samples": [
"{RoundingVerify}"
]
},
这是插槽类型的详细信息:
{
"name": "ROUNDING_VERIFY",
"values": [
{
"name": {
"value": "no",
"synonyms": [
"that's wrong",
"wrong",
"nah",
"noooo",
"no way",
"nope",
"nah"
]
}
},
{
"name": {
"value": "yes",
"synonyms": [
"correct",
"that's correct",
"yop",
"yup",
"yep",
"yeah"
]
}
},
{
"name": {
"value": "repeat",
"synonyms": [
"pardon me",
"say again",
"repeat again"
]
}
}
]
},
更新:我试图添加一个elicit插槽指令,以直接推入所需的意图并引发该插槽,并且仍然保留相同的行为...感谢您的帮助。
UPDATE2: 好的,所以我在修改指令后就可以使用它了。这样就可以了。
.addDirective({
"type": "Dialog.ElicitSlot",
"slotToElicit": "RoundingVerify",
"updatedIntent": {
"name": "RoundingVerifyIntent",
"confirmationStatus": "NONE",
"slots": {
"RoundingVerify": {
"name": "RoundingVerify",
"value": "yes",
"resolutions": {},
"confirmationStatus": "NONE"
}
}
}
})
我假设如果将值放在其中,它将自动将其设置为yes,这不是我想要的...但是由于某种原因,它会等待用户输入。有人可以告诉我为什么吗?
非常感谢。
仍然坚信我的第一种方法应该可行,并且可能存在错误,但这无疑是一个更好的解决方案。