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

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

【问题讨论】:

    标签: amazon-web-services aws-lambda chatbot amazon-lex


    【解决方案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,希望能提供更多的清晰度。
    • 我试过之后没有任何改变
    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2021-01-14
    • 2017-12-12
    相关资源
    最近更新 更多