AWS Lex: произошла ошибка: недопустимый лямбда-ответ: лямбда-ответ вызван для недопустимого имени слота - PullRequest
1 голос
/ 28 мая 2020

Использование обработчика проверки для AWS lex. Если я пытаюсь вызвать слот, lex не работает с:

Произошла ошибка: Недопустимый лямбда-ответ: Лямбда-ответ вызван для недопустимого имени слота

Ниже мой lex и ответ от моей лямбда-функции. У меня 2 прорези, топпинг и корочка. Топпинг был первым слотом, уже предоставленным клиентом. Краст был отсутствующим слотом.

Я просмотрел большую часть 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"
    }
}

Ответ от лямбды

{
    "sessionAttributes": {},
    "dialogAction": {
        "type": "ElicitSlot",
        "message": {
            "contentType": "PlainText",
            "content": "What type of crust do you want?"
        },
        "intentName": "Pizza",
        "slotToElicit": "​Curst",
        "slots": {
            "topping": "Chicken"
        }
    }
}

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Я попытался проверить структуру ответа Lambda с помощью JSONLint и заметил, что в значение ключа slotToElicit включен дополнительный символ, который в противном случае невидим. Это может указывать на то, почему Лекс не может найти имя слота.

1 голос
/ 28 мая 2020

Ошибка «Лямбда-ответ вызван для недопустимого имени слота» конкретно говорит о том, что слот, который вы пытаетесь вызвать с помощью "slotToElicit", не соответствует слоту, настроенному в вашем боте.

Возможно, это опечатка, вызывающая проблему: "slotToElicit": "​Curst",

Попробуйте "slotToElicit": "​Crust", или строчные "slotToElicit": "​crust",

...