在AWS Lex中,我使用默认的AMAZON.Country作为插槽类型。 但是,当我与测试机器人进行交互时,我可以输入任何值(例如“我不知道”),并且当我检查响应时,JSON表示“国家”的值为“我不知道”
插槽类型的目的是将答案限制为现有国家/地区名称。没有一些随机的句子。知道为什么我没有得到预期的行为吗?
答案 0 :(得分:3)
“广告位类型的目的是限制答案。...
这实际上是不正确的,并且是在开始使用Lex开发时的常见误解。
经验告诉我们,广告位类型的主要目的只是为了改善输入识别并用最期望或期望的内容填充广告位,但是它不限制可以填充广告位的值
这就是为什么我们Lex开发人员还使用Lambda编写解析和验证代码来自己仔细检查插槽值或inputTranscript的原因。
Lex似乎应该为您做得更好(我想我们都以为是这样),但是一旦您开始自己的解析/验证,您就会意识到实际上需要进行多少控制您的机器人更聪明,更自然。
文档
Amazon Lex Built-In Slot Types将Lex开发人员推荐给Alexa文档。
Amazon Lex支持Alexa Skills Kit中的内置插槽类型。
...请参阅Alexa Skills Kit文档中的插槽类型参考
Slot Type Reference in Alexa Skills Kit中有一条警告消息:
重要:内置的插槽类型与枚举不等效。如果语音理解系统识别出列表之外的值,则仍会返回该值。尽管插槽类型的输入权重于列表中的值,但它不仅限于列表中的项。使用插槽值时,您的代码仍然需要包括验证和错误检查。