Получен неверный ответ от Lambda: невозможно создать экземпляр IntentResponse - PullRequest
1 голос
/ 10 июля 2019

Я пробовал лямбда-кодовый крючок на aws lex, и вот как будет выглядеть ответ, который я буду возвращать

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

Я уже пытался протестировать его с помощью событий лямбда-теста, но при тестировании на 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 и не очень разбираюсь в программировании, но не могу отследить эту ошибку, поскольку этот ключ "Source" не найден ни в одном из моих кодов. или документация амазонки. Также спасибо, что нашли время, чтобы прочитать это.

1 Ответ

1 голос
/ 17 июля 2019

Хорошо, я понял, почему бот Lex не получает никакой ценности.Внутри моего лямбда-обработчика я получаю обещание от функции, которая разрешает ответ, который мне нужен.Внутри обработчика я получаю это разрешение, используя обещание .then (data, function () {// do stuff}), а внутри функции then возвращаю значение данных, которое содержит ответ.

Это приводит к тому, что обработчик возвращает неопределенное значение, поэтому вместо возврата я использую функцию обратного вызова лямбды.

...