我正在构建一个聊天机器人,它会向用户提出一个具有多种可能响应的问题,例如:
机器人:“你想让你的用户简介说什么?”
用户A:“我的名字是鲍勃。#chatbots 很酷!!!”
或者
用户B:“123”
我希望 Lex 几乎可以接受任何用户响应。目前,如果用户响应与现有槽不兼容,它将不断重复相同的问题。
是否有一个内置插槽,或者有一种方法可以构建一个以这种方式运行的自定义插槽?
我正在构建一个聊天机器人,它会向用户提出一个具有多种可能响应的问题,例如:
机器人:“你想让你的用户简介说什么?”
用户A:“我的名字是鲍勃。#chatbots 很酷!!!”
或者
用户B:“123”
我希望 Lex 几乎可以接受任何用户响应。目前,如果用户响应与现有槽不兼容,它将不断重复相同的问题。
是否有一个内置插槽,或者有一种方法可以构建一个以这种方式运行的自定义插槽?
Lambda initialization and validation hook
您可以在其中调用elicit slot
以将整个用户响应作为参数取回。
查看一些示例 Lex lambda 函数,了解如何使用elicit slot
.
您可以创建一个没有任何意图值的插槽,然后取消选中所需的复选框。然后在 中Lambda initialization and validation hook
,只需从中获取用户的输入event['inputTranscript']
并将该值分配给插槽。
希望能帮助到你。
Lex 没有AMAZON.SearchQuery,但处理它的一种方法是在 SlotType 枚举中包含许多不同的值,就像在此博客文章中的 CloudFormation 堆栈创建的 Lex 机器人中所做的那样。在这种情况下,自定义插槽类型有 81 个枚举值,包括 -
此机器人案例中的槽值用于在 Elasticsearch 实例中进行搜索。
您可以尝试遵循该路径。自定义插槽类型最多可以有 10,000 个枚举值。另请注意,必须启用“扩展值”选项。