使用AMAZON.LITERAL槽类型导致Alexa技能构建失败求助
解决AMAZON.LITERAL槽类型导致的Alexa技能构建失败问题
我之前也踩过这个坑,AMAZON.LITERAL这个槽类型其实在Alexa的新交互模型(v2)里早就被废弃了,这就是你明明定义了槽位What却报UndefinedSlotName错误的核心原因!
问题根源
Alexa推出v2交互模型后,就彻底不再支持AMAZON.LITERAL槽类型了。哪怕你在意图schema里明确定义了这个槽,构建系统也会直接忽略它,导致识别不到槽位What,进而抛出构建错误。而换成其他官方支持的槽类型(比如AMAZON.SearchQuery)或自定义槽类型时,系统能正常识别槽位,所以构建就能成功。
具体解决方案
根据你的需求,推荐两种实用的替代方案:
- 方案一:用
AMAZON.SearchQuery替代
这个槽类型专门用来捕获用户的自由文本输入,完美适配AMAZON.LITERAL的使用场景。修改你的意图模型,把What槽的类型改成AMAZON.SearchQuery即可,示例代码如下:{ "interactionModel": { "languageModel": { "invocationName": "你的技能调用名称", "intents": [ { "name": "你的目标意图名称", "slots": [ { "name": "What", "type": "AMAZON.SearchQuery" } ], "samples": [ "我想查询{What}", "{What}相关信息" ] } ] } } } - 方案二:创建自定义槽类型
如果你的用户输入有特定的候选值范围,建议自定义槽类型,把所有可能的输入值添加进去,能大幅提升Alexa的识别准确率。示例代码如下:{ "interactionModel": { "languageModel": { "invocationName": "你的技能调用名称", "intents": [ { "name": "你的目标意图名称", "slots": [ { "name": "What", "type": "CustomWhatType" } ], "samples": [ "我想查询{What}", "{What}相关信息" ] } ], "types": [ { "name": "CustomWhatType", "values": [ {"name": {"value": "今日天气"}}, {"name": {"value": "科技新闻"}}, {"name": {"value": "股票行情"}} ] } ] } } }
额外提醒
如果你是从旧版v1交互模型迁移过来的,一定要把所有AMAZON.LITERAL槽全部替换成支持的类型,v2模型完全不兼容这个旧槽类型。修改后可以在Alexa开发者控制台的测试面板模拟用户输入,确认槽位能正常被捕获。
内容的提问来源于stack exchange,提问作者SimpleJ
相关产品推荐
相关产品推荐

