我一直在尝试aws lex上的lambda代码钩,这将是我将要返回的响应
response = {
"dialogAction" : {
"type": "ElicitSlot",
"message": {
"contentType": "PlainText",
"content": "Please make enter value of slot1 first before proceeding."
},
"intentName": "AWSLexIntentName",
"slots": {
"slot1" : null,
"slot2" : null,
"slot3" : null,
"slot4" : null,
"slot5" : null
},
"slotToElicit" : "slot1"
}
}
我已经尝试使用lambda测试事件对其进行测试,但是在Lex上进行尝试时,我不断收到错误消息
An error has occurred: Invalid Lambda Response: Received invalid response from Lambda: Can not construct instance of IntentResponse, problem: The validated object is null at [Source: {}; line: 1, column: 2]
我仍然对Amazon Web Services还是陌生的,对所有编程知识也不多,但是我无法追溯此错误,因为在我的任何代码中都找不到“ Source”键或亚马逊文档。也感谢您抽出宝贵的时间阅读本文。
答案 0 :(得分:1)
好的,所以我弄清楚了为什么Lex机器人没有获得任何价值。在我的lambda处理程序中,我从一个函数中收到了一个诺言,该函数可以解决我所需的响应。在处理程序内部,我通过使用promise.then(data,function(){// do stuff})接收此解析,然后在then函数内部,返回包含响应的数据值。
这导致处理程序返回一个未定义的值,所以我所做的是,不是返回而是使用了lambda的回调功能。
很抱歉,如果解释令人困惑,因为我也很困惑为什么以及如何使用它。
答案 1 :(得分:1)
我遇到了同样的错误。所以,我的问题是我使用了 lex v2
但使用了 lex v1
响应格式。 lex v2
具有不同的响应格式,即
{
"sessionState": {
"dialogAction": {
"type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
},
"intent": {
"confirmationState": "Confirmed",
"name": "IntentName",
"state": "Failed | Fulfilled | InProgress | ReadyForFulfillment",
},
},
"messages": [
{
"contentType": "PlainText",
"content": "Select from the list",
}
]
}
了解更多详情aws lex v2 response