Как восстановить ответ на Amazon lex от AWS lambda? - PullRequest
1 голос
/ 27 апреля 2019

Я настроил бота в консоли lex, который собирает данные от пользователей, такие как интересующий их продукт / услуга, адрес электронной почты, номер телефона и т. Д. Теперь каждый раз, когда посетитель взаимодействует с ботом, я бы хотелполучить электронное письмо с чатами: Невозможно создать экземпляр IntentResponse: нет конструктора String-аргумента / метода фабрики для десериализации из строкового значения

Согласно документации, я восстановил ответ и вернул его.

import json

def lambda_handler(event, context):
    print(event)

    var1 = '''dialogAction": {
    "type": "close",
    "fulfillmentState": "fulfilled",
    "message": {
      "contentType": "PlainText or SSML or CustomPayload",
      "content": "Message to convey to the user. For example, What size pizza would you like?"
    },
    }
    }'''
    return(var1)

А вот как выглядит ошибка: -

An error has occurred: Invalid Lambda Response: Received invalid response from Lambda: Can not construct instance of IntentResponse: no String-argument constructor/factory method to deserialize from String value ('"dialogAction": { "type": "close", "fulfillmentState": "fulfilled", "message": { "contentType": "PlainText or SSML or CustomPayload", "content": "Message to convey to the user. For example, What size pizza would you like?" }, } }') at [Source: "\"dialogAction\": {\n \"type\": \"close\",\n \"fulfillmentState\": \"fulfilled\",\n \"message\": {\n \"contentType\": \"PlainText or SSML or CustomPayload\",\n \"content\": \"Message to convey to the user. For example, What size pizza would you like?\"\n },\n }\n }"; line: 1, column: 1]

1 Ответ

1 голос
/ 27 апреля 2019

Вы неправильно передаете ответ в виде строки. И используя тройные кавычки ''', он добавляет разрывы строк \n, которые вы можете видеть в источнике ошибок, и вам они не нужны.

Так что попробуйте это, просто верните ответ как объект. Я считаю, что функция обратного вызова автоматически преобразуется в JSON перед доставкой в ​​Lex.

 var1 = {
    dialogAction": {
         "type": "close",
         "fulfillmentState": "fulfilled",
         "message": {
               "contentType": "PlainText or SSML or CustomPayload",
               "content": "Message to convey to the user. For example, What size pizza would you like?"
         },
    }
}
return var1
...