【问题标题】:Getting response from AWS Lambda function to AWS Lex bot is giving error?从 AWS Lambda 函数获取对 AWS Lex 机器人的响应给出错误?
【发布时间】:2017-11-25 13:51:29
【问题描述】:

我创建了一个AWS Lex 机器人,我正在从该机器人调用一个lambda 函数。在测试lambda 函数时,我得到了正确的响应,但在机器人上我得到了以下错误:

发生错误:收到来自 Lambda 的无效响应:不能 构造 IntentResponse 实例:无字符串参数 从字符串值反序列化的构造函数/工厂方法 ('2017-06-22 10:23:55.0')在 [来源:“2017-06-22 10:23:55.0”;线: 1、栏目:1]

不确定,出了什么问题以及我在哪里失踪。谁能帮帮我?

【问题讨论】:

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


    【解决方案1】:

    上述问题的解决方案是,我们需要确保 lambda 函数返回的响应,用于 AWS lex 聊天机器人应该是以下格式:

    {
    "sessionAttributes": {
    "key1": "value1",
    "key2": "value2"
    ...
     },
      "dialogAction": {
    "type": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close",
    Full structure based on the type field. See below for details.
    }
    }
    

    由此,聊天机器人需要 DialogAction 和相应的元素来处理消息,即 IntentResponse。

    参考:http://docs.aws.amazon.com/lex/latest/dg/lambda-input-response-format.html

    【讨论】:

      【解决方案2】:

      没有从字符串值反序列化的字符串参数构造函数/工厂方法

      您收到此错误因为您必须在 lambda 函数的响应中传递字符串值。您必须在响应中传递一个预定义的 json 对象蓝图。

      因为 Lex 和 Lambda 之间的通信不是像普通函数那样简单的值传递。 Amazon Lex 期望 Lambda 以特定 JSON 格式输出,数据以特定 JSON 格式发送到 Lambda。示例在这里:Lambda Function Input Event and Response Format.

      仅仅复制和粘贴蓝图是行不通的,因为在某些字段中,您可以在某些预定义值之间进行选择,而在某些字段中,您必须输入有效的输入。

      例如,

      "dialogAction": { "type": "Close", "fulfillmentState": "Fulfilled or Failed", "message": { "contentType": "PlainText or SSML", "content": "Thanks, your pizza has been ordered." } }

      您已将值“Fulfilled”或“Failed”分配给“fulfillmentState”字段。 'contentType' 也是如此。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-13
        • 2019-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-16
        • 2019-02-05
        • 2021-09-19
        相关资源
        最近更新 更多