在 Aws Lex 中 - 我们可以使用 lambda 更改槽值吗?

Posted

技术标签:

【中文标题】在 Aws Lex 中 - 我们可以使用 lambda 更改槽值吗?【英文标题】:In Aws Lex - using lambda can we change the slot values? 【发布时间】:2022-01-21 11:17:59 【问题描述】:

例如,意图中存在一个非必需的插槽,我在 Lex 上输入的值是 A,然后我需要将插槽的值更改为 B。

【问题讨论】:

【参考方案1】:

可以通过使用您的自定义 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 设置正确的值来修改响应以执行所需的对话操作。

【讨论】:

如何更改原始值,我尝试设置如下内容: event["sessionState]["intent"]["slot"] = value 但它不起作用 我已经更新了原始答案以包含一个代码 sn-p,希望能提供更多的清晰度。 我试过之后没有任何改变

以上是关于在 Aws Lex 中 - 我们可以使用 lambda 更改槽值吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用AWS lambda函数调用lex chat bot

AWS Lex V2 - DailogHook 验证

为AWS LEX编写条件AWS Lambda函数

在 AWS LEX 中从一个意图调用到另一个意图

通过Amazon lex上载文件/文档

确定我们是否在AWS Lambda + Zappa下运行?