我目前正在编写alexa拼写技能,以询问不同的拼写并根据我们拥有的数据检查用户输入。我创建了以下意图和位置以完成预期的工作:
意图: SpellingIntent-从单词列表中随机询问一个单词 AnswerIntent-验证用户输入
广告位: 单词-跟踪所有单词 拼写-点分隔格式的单词拼写
例如,如果单词是apple,那么拼字版位将带有a.p.p.l.e
如果用户正确拼写单词,我的应用程序运行正常,但是如果用户拼错单词,则直到answerIntent进行验证,我才会收到事件。
我对此进行了研究,发现亚马逊不赞成使用内置插槽类型的Amazon.LITERAL来触发用户说的任何单词,我必须使用SearchQuery。但是无论用户说什么,我都不会如何将事件触发我的回答意图。
谁能帮我解决这个问题。预先感谢
答案 0 :(得分:0)
我还没有测试过,但是我建议尝试以下方法作为解决方案。
1-停止使用AMAZON.SearchQuery
,而是定义一个自定义广告位值,如下所示:
{
"types": [
{
"name": "LETTER",
"values": [
{
"name": {
"value": "a",
"synonyms": []
}
},
{
"name": {
"value": "b",
"synonyms": []
}
},
{
"name": {
"value": "c",
"synonyms": []
}
},
// ... and so on
]
}
]
}
2-重新定义您的AnswerIntent
,以接受不同数量的LETTER
广告位值,如下所示:
{
"intents": [
{
"name": "AnswerIntent",
"slots": [
{
"name": "LetterOne",
"type": "LETTER"
},
{
"name": "LetterTwo",
"type": "LETTER"
},
{
"name": "LetterThree",
"type": "LETTER"
},
// ... and so on
],
"samples": [
"{LetterOne}",
"{LetterOne} {LetterTwo}",
"{LetterOne} {LetterTwo} {LetterThree}",
// ... and so on
]
}
]
}
理论上,此设置应在用户说出一系列字母时触发AnswerIntent
。然后,您应该能够收集插槽值中传递的字母并将它们与正确的拼写进行比较。
作为一个潜在的附加步骤,您可以尝试将同义词添加到广告位值中,以语音匹配单词,例如以下内容。然后通过键值访问代码中的插槽。
{
"name": {
"value": "b",
"synonyms": [
"be",
"bee"
]
}
}