从 AWS Lambda 函数获取对 AWS Lex 机器人的响应时出错?
Getting response from AWS Lambda function to AWS Lex bot is giving error?
我创建了一个 AWS Lex
机器人,我正在从该机器人调用一个 lambda
函数。在测试 lambda
函数时,我得到了正确的响应,但在机器人中我得到了以下错误:
An error has occurred: Received invalid response from Lambda: Can not
construct instance of IntentResponse: no String-argument
constructor/factory method to deserialize from String value
('2017-06-22 10:23:55.0') at [Source: "2017-06-22 10:23:55.0"; line:
1, column: 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
no String-argument constructor/factory method to deserialize from String value
您收到此错误因为您必须在 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'.
也是如此
我创建了一个 AWS Lex
机器人,我正在从该机器人调用一个 lambda
函数。在测试 lambda
函数时,我得到了正确的响应,但在机器人中我得到了以下错误:
An error has occurred: Received invalid response from Lambda: Can not construct instance of IntentResponse: no String-argument constructor/factory method to deserialize from String value ('2017-06-22 10:23:55.0') at [Source: "2017-06-22 10:23:55.0"; line: 1, column: 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
no String-argument constructor/factory method to deserialize from String value
您收到此错误因为您必须在 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'.
也是如此