2017-05-08 46 views
0

亚马逊莱克斯聊天机器人框架提供使用自定义插槽类型。但是,该机制将提供一组将被验证的值。但我想要一个定制的验证器,例如检查输入是否在数据库中。自定义插槽类型与AWS LAMBDA钩亚马逊莱克斯

理想情况下,我想开发,其接收所述输入参数的AWS拉姆达钩,然后执行一些程序返回任一公格式化槽型或给出错误如果输入是无效的。任何人的想法?

+0

你提问有关与莱克斯BOT整合?或者,lambda如何接收输入,运行第三方代码并返回结果? – johni

+0

@johni我正在谈论与Lex bot的集成。我不问Lambda如何运行第三方代码。我希望Lex跳转到lambda函数,而不是评估值列表。 – georgschlenkhoff

回答

4

AWS暴露的API来动态创建插槽类型,以及更新所述机器人LEX。 (参见:http://docs.aws.amazon.com/lex/latest/dg/API_PutSlotType.htmlhttp://docs.aws.amazon.com/lex/latest/dg/API_CreateSlotTypeVersion.html

在理论上可以动态地改变这个名单时,您的数据的基础上有一个更新

但是它不会出现的自定义插槽类型(可能会遇到速率限制问题虽然)。像你这样的限制有效答卷认为他们这样做:http://docs.aws.amazon.com/lex/latest/dg/gl-guidelines.html

具体该位:

请注意以下有关亚马逊莱克斯如何从用户话语捕获槽值:

亚马逊莱克斯使用您提供的枚举值在插槽类型定义来训练其机器学习模型。假设你定义一个名为GetPredictionIntent具有下列样品话语意图:

“告诉我的{}符号预测”

其中{}符号是自定义类型ZodiacSign的插槽。 ZodiacSign有12个枚举值(通过双鱼座的白羊座)。从用户的话语“告诉我对...的预测”,亚马逊Lex明白接下来是一个星座。

如果用户说:“告诉我,地球预测”,亚马逊莱克斯推断,“地球”可能是另一个ZodiacSign并将它传递给你的实践活动。因此,您的履行活动必须验证槽位值。

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

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

自定义时隙类型不是枚举的等效。如果口头语言理解系统认可,则列表之外的值仍然可以返回。尽管对自定义槽类型的输入会加权到列表中的值,但它并不仅限于列表中的项目。使用插槽值时,您的代码仍然需要包含验证和错误检查。

因此,即使您确实动态创建了此自定义插槽类型,它只会使输入在预定选项的方向上稍微倾斜。不要限制它们。

+0

我想你错过了这部分文档:如果使用PutSlotType操作将valueSelectionStrategy字段设置为TOP_RESOLUTION,或者如果在控制台中选择了“限制到插槽值和同义词”,则返回的值将限制为您为插槽类型定义。 –

+0

是的,自从我发布这个答案以来API已经更新。我会回去纠正 –