AWS Lex:发生错误:无效的 Lambda 响应:针对无效的插槽名称引发的 Lambda 响应
AWS Lex: An error has occurred: Invalid Lambda Response: Lambda response elicited for an invalid slot name
使用 AWS lex 的验证挂钩。如果我尝试引出插槽,lex 会失败:
An error has occurred: Invalid Lambda Response: Lambda response elicited for an invalid slot name
下面是我的 lex 事件和来自我的 lambda 函数的响应。我有 2 个插槽,顶部和地壳。浇头是客户已经给出的第一个插槽。地壳是缺失的插槽。
我已经查看了大部分 AWS 文档、Whosebug 和其他教程,但我似乎无法突破这一点……有人知道吗?
莱克斯事件:
{
"messageVersion": "1.0",
"invocationSource": "DialogCodeHook",
"userId": "cbzn2ql6dl59dro",
"sessionAttributes": {},
"outputDialogMode": "Text",
"currentIntent": {
"name": "Pizza",
"slots": {
"topping": "Chicken"
},
"confirmationStatus": "None"
},
"bot": {
"name": "PizzaMaker",
"alias": "$LATEST",
"version": "$LATEST"
}
}
Lambda 的回应
{
"sessionAttributes": {},
"dialogAction": {
"type": "ElicitSlot",
"message": {
"contentType": "PlainText",
"content": "What type of crust do you want?"
},
"intentName": "Pizza",
"slotToElicit": "Curst",
"slots": {
"topping": "Chicken"
}
}
}
错误 "Lambda response elicited for an invalid slot name" 明确表示您尝试使用 "slotToElicit"
引出的插槽与您的机器人中配置的插槽不匹配。
可能是这个错字导致了问题:"slotToElicit": "Curst",
尝试 "slotToElicit": "Crust",
或小写 "slotToElicit": "crust",
我尝试使用 JSONLint 验证您的 Lambda 响应结构,并注意到 slotToElicit
键的值中包含一个额外的符号,否则该符号是不可见的。这将指出 Lex 无法找到插槽名称的原因。
使用 AWS lex 的验证挂钩。如果我尝试引出插槽,lex 会失败:
An error has occurred: Invalid Lambda Response: Lambda response elicited for an invalid slot name
下面是我的 lex 事件和来自我的 lambda 函数的响应。我有 2 个插槽,顶部和地壳。浇头是客户已经给出的第一个插槽。地壳是缺失的插槽。
我已经查看了大部分 AWS 文档、Whosebug 和其他教程,但我似乎无法突破这一点……有人知道吗?
莱克斯事件:
{
"messageVersion": "1.0",
"invocationSource": "DialogCodeHook",
"userId": "cbzn2ql6dl59dro",
"sessionAttributes": {},
"outputDialogMode": "Text",
"currentIntent": {
"name": "Pizza",
"slots": {
"topping": "Chicken"
},
"confirmationStatus": "None"
},
"bot": {
"name": "PizzaMaker",
"alias": "$LATEST",
"version": "$LATEST"
}
}
Lambda 的回应
{
"sessionAttributes": {},
"dialogAction": {
"type": "ElicitSlot",
"message": {
"contentType": "PlainText",
"content": "What type of crust do you want?"
},
"intentName": "Pizza",
"slotToElicit": "Curst",
"slots": {
"topping": "Chicken"
}
}
}
错误 "Lambda response elicited for an invalid slot name" 明确表示您尝试使用 "slotToElicit"
引出的插槽与您的机器人中配置的插槽不匹配。
可能是这个错字导致了问题:"slotToElicit": "Curst",
尝试 "slotToElicit": "Crust",
或小写 "slotToElicit": "crust",
我尝试使用 JSONLint 验证您的 Lambda 响应结构,并注意到 slotToElicit
键的值中包含一个额外的符号,否则该符号是不可见的。这将指出 Lex 无法找到插槽名称的原因。