【问题标题】:AWS Lex: An error has occurred: Invalid Lambda Response: Lambda response elicited for an invalid slot name ​AWS Lex:发生错误:无效的 Lambda 响应:针对无效插槽名称引发的 Lambda 响应
【发布时间】:2020-05-28 01:11:11
【问题描述】:

使用 AWS lex 的验证钩子。如果我尝试引出插槽,则 lex 失败并显示:

发生错误:无效的 Lambda 响应:针对无效插槽名称引发的 Lambda 响应​

下面是我的 lex 事件和来自我的 lambda 函数的响应。我有 2 个插槽,顶部和外壳。 Topping 是客户已经给出的第一个位置。地壳是缺少的插槽。

我已经查看了大部分 AWS 文档、stackoverflow 和其他教程,但我似乎无法超越这一点。任何人有任何想法吗?

LexEvent:

{
    "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"
        }
    }
}

【问题讨论】:

  • 忘记添加了,我验证了插槽名称在 lex 和 lambda 中匹配(大小写也一样)。插槽配置为 1 个提示和 1 个带选项的响应卡。没有插槽混淆

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


【解决方案1】:

我尝试使用 JSONLint 验证您的 Lambda 响应结构,并注意到 slotToElicit 键的值中包含一个额外的符号,否则它是不可见的。这将指出 Lex 无法找到插槽名称的原因。

【讨论】:

  • 这就是问题所在。谢谢你调查它。最简单的事情会造成最大的痛苦。
【解决方案2】:

错误“Lambda response elicited for an invalid slot name”明确表示您尝试使用 "slotToElicit" 引出的插槽与您的机器人中配置的插槽不匹配。

可能是这个错字导致问题:"slotToElicit": "​Curst",

试试"slotToElicit": "​Crust",或小写"slotToElicit": "​crust",

【讨论】:

  • 感谢您的支持..这是一个 lint 问题 :(.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 2018-02-28
  • 2021-10-23
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 2021-09-19
相关资源
最近更新 更多