Как ответить с изображением в Amazon-Lex

Я получаю сообщение об ошибке при отображении изображения в качестве ответа. Я получаю эту ошибку:

Произошла ошибка: недопустимый лямбда-ответ: получен недопустимый ответ от лямбда-выражения: нераспознанное поле responseCard (класс IntentResponse), не отмеченное как игнорируемое в [Источник: {"sessionAttributes": {}, "dialogAction": {"type": "Close", "executionState": "Fulfilled", "message": {"contentType": "PlainText", "content": "

function close(sessionAttributes, fulfillmentState, message) {
    return {
        sessionAttributes,
        dialogAction: {
            type: 'Close',
            fulfillmentState,
            message,
        },
        responseCard: {
            version: '2',
            contentType: "application/vnd.amazonaws.card.generic",
            genericAttachments: [
                  {
                     imageUrl:"URL of the image to be shown",
                  }
               ] 
        }
    };
}

exports.handler = (event, context, callback) => {
    console.log( "EVENT= "+JSON.stringify(event) );

    const intentName = event.currentIntent.name;
    var sessionAttributes = event.sessionAttributes;

    var responseMsg = "";

    if (intentName == "greetings") {
        var message = {
            'contentType': 'PlainText', 
            'content': 'Hi! How can I help you?'
        }

        responseMsg = close( sessionAttributes, 'Fulfilled', message );
    }
    else {
        console.log( "ERROR unhandled intent named= "+intentName );
        responseMsg = close( sessionAttributes, 'Fulfilled', {"contentType":"PlainText", "content":"Sorry, I can't help with that yet."});
    }

    console.log( "RESPONSE= "+JSON.stringify(responseMsg) );
    callback(null,responseMsg);
}

Как мне отображать изображение в окне чата? Какую ошибку я здесь делаю?


person Noob    schedule 17.02.2018    source источник


Ответы (1)


responseCard должен находиться внутри dialogAction.

Пытаться:

function close(sessionAttributes, fulfillmentState, message) {
    return {
        sessionAttributes,
        "dialogAction": {
            "type": "Close",
            fulfillmentState,
            message,
            "responseCard": {
                "version": "2",
                "contentType": "application/vnd.amazonaws.card.generic",
                "genericAttachments": [
                      {
                         "imageUrl":"http://...",
                      }
                ] 
            }
        }
    };
}

Я также добавил кавычки к клавишам, которые не являются переменными, на всякий случай.


Дополнительная информация о карточках ответов:

Формат ResponseCard: contentType, genericAttachments, версия
GenericAttachment format: attachmentLinkUrl, buttons, imageUrl, подзаголовок, заголовок
Формат кнопок: текст, значение
Ничего не требуется, но вот пример всех свойств responseCard:

"responseCard": {
  "version": integer-value,                                     //change to integer
  "contentType": "application/vnd.amazonaws.card.generic",      //don't change
  "genericAttachments": [
      {
         "title":"card-title",                                  //change to any string         
         "subTitle":"card-sub-title",                           //change to any string 
         "imageUrl":"http://...",                               //change to full url 
         "attachmentLinkUrl":"http://...",                      //change to full url 
         "buttons":[ 
             {
                "text":"button-text",                           //change to any string 
                "value":"Value sent to server on button click"  //change to any string
             }
          ]
       } 
   ] 
}
person Jay A. Little    schedule 17.02.2018
comment
Нет ошибок, но также нет изображений или кнопок, в чем может быть проблема? В разделе подробностей я получаю genericAttachments, но без изображения. - person Noob; 17.02.2018
comment
Я добавил в ответ несколько ссылок и пример руководства для формата responseCard. Просто проверяю ... вы заменили это: "URL of the image to be shown" реальной строкой URL? - person Jay A. Little; 18.02.2018
comment
да, это ссылка, которую я использую: [ссылка] (wikihow.com/images/thumb/c/ c1 /), кнопка не отображается. - person Noob; 18.02.2018
comment
Мне кажется, все в порядке. Где ты это тестируешь? Карточка ответа не будет отображаться в тестовом чат-боте в консоли Lex. Но как только вы подключите своего бота Lex к Facebook или Twilio-SMS, вы увидите карточку ответа. - person Jay A. Little; 18.02.2018
comment
о, я этого не знал, я тестировал это на своей консоли. - person Noob; 18.02.2018
comment
нп, частая ошибка, я добавлю это к своему ответу для следующего человека. - person Jay A. Little; 18.02.2018
comment
Спасибо, сэр! Обратите внимание, вы можете проверить это в консоли - person Krik; 27.03.2020