【发布时间】:2022-01-21 11:17:59
【问题描述】:
例如,意图中存在一个非必需的插槽,我在 Lex 上输入的值是 A,然后我需要将插槽的值更改为 B。
【问题讨论】:
标签: amazon-web-services aws-lambda chatbot amazon-lex
例如,意图中存在一个非必需的插槽,我在 Lex 上输入的值是 A,然后我需要将插槽的值更改为 B。
【问题讨论】:
标签: amazon-web-services aws-lambda chatbot amazon-lex
可以通过使用您的自定义 Lambda 函数来实现。
我的建议是使用sessionAttributes 来存储修改后的槽值。使用您的 Lambda 函数更改槽的原始值,然后将其保存到 sessionAttributes。
确保您在 Lambda 函数的响应中正确设置这些 sessionAttributes。
有关请求和响应格式的完整架构,请参阅开发人员指南。
Lambda Function Input Event and Response Format
如果您想编辑原始值,您也可以这样做。以下是我支持 V1 Lex 机器人的 Python Lambda 函数的 sn-p:
if first_name is not None:
originalValue = event['currentIntent']['slotDetails']['firstName']['originalValue']
originalValue = originalValue.replace("-"," ")
slot_values["firstName"] = originalValue
然后我将修改后的slot_values 包含在对 Lex 的响应中:
'dialogAction': {
'type': 'ElicitSlot',
'intentName': ...,
'slots': slot_values,
'slotToElicit': ...,
'message': ...
}
您可以通过为type 设置正确的值来修改响应以执行所需的对话操作。
【讨论】: