1

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

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

不知道,出了什么问题,我在哪里失踪。有人可以帮助我吗?

4

2 回答 2

2

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

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

因为 Lex 和 Lambda 之间的通信不是像普通函数那样简单的值传递。Amazon Lex 期望 Lambda 以特定 JSON 格式输出,数据以特定 JSON 格式发送到 Lambda。示例在此处:Lambda 函数输入事件和响应格式。

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

例如在,

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

您已为字段“fulfillmentState”分配了一个值“已完成”或“失败”。'contentType' 也是如此。

于 2017-06-27T10:26:14.700 回答
2

上述问题的解决方案是,我们需要确保 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

于 2017-06-23T05:42:01.820 回答