1

Amazon Lex 聊天机器人框架提供使用自定义槽类型。但是,该机制是提供一组将被验证的值。但我想要一个自定义验证器,例如检查输入是否在数据库中。

理想情况下,我想开发一个 AWS lambda 挂钩,它接收输入参数,然后执行一些程序,该程序返回格式正确的插槽类型或在输入无效时给出错误。任何人的想法?

4

1 回答 1

4

AWS 公开了一个 API 来动态创建槽类型,并更新 LEX 机器人。(请参阅:http ://docs.aws.amazon.com/lex/latest/dg/API_PutSlotType.html和http://docs.aws.amazon.com/lex/latest/dg/API_CreateSlotTypeVersion.html

理论上,您可以在数据库有更新时动态更改此列表(尽管可能会遇到速率限制问题。)

但是,自定义插槽类型似乎不会像您认为的那样限制有效响应:http: //docs.aws.amazon.com/lex/latest/dg/gl-guidelines.html

特别是这一点:

请注意以下有关 Amazon Lex 如何从用户话语中捕获槽值的信息:

Amazon Lex 使用您在槽类型定义中提供的枚举值来训练其机器学习模型。假设您使用以下示例话语定义了一个名为 GetPredictionIntent 的意图:

“告诉我{Sign}的预测”

其中 {Sign} 是自定义类型 ZodiacSign 的插槽。ZodiacSign 有 12 个枚举值(白羊座到双鱼座)。从用户话语“告诉我……的预测”中,Amazon Lex 了解到接下来是一个星座。

如果用户说“告诉我地球的预测”,Amazon Lex 会推断“地球”可能是另一个 ZodiacSign 并将其传递给您的履行活动。因此,您的履行活动必须验证槽值。

换句话说,它似乎不是一个强制执行的枚举列表。

文档的另一个例子是这样说的:https ://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/migrating-to-the-improved-built-in-and-custom-slot-类型#literal

自定义槽类型不等同于枚举。如果被口语理解系统识别,列表之外的值仍可能返回。尽管自定义槽类型的输入根据列表中的值加权,但它不仅限于列表中的项目。使用槽值时,您的代码仍需要包含验证和错误检查。

因此,即使您确实动态地创建了这种自定义插槽类型,它也只会使输入稍微倾向于您预定选项的方向。不限于他们。

于 2017-05-18T20:18:01.640 回答