Как интегрировать lex с лямбдой в amazon aws? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть простой бот со следующей логикой.

Бот: выберите один из следующих предметов, которые вас интересуют

 (response card)
 -ecommerce
 -travel etc

Человек: клики, например, путешествия

Бот: ответная карта

 -marketing 

 -digital

Вот что у меня в лямбда-функции

'use strict';
exports.handler = (event, context, callback) => {
    const sessionAttributes = event.sessionAttributes;
    const slots = event.currentIntent.slots;
    const videommerceType = slots.videommerceType;


    // predefined list of available pizza
    const validData = ['ecommerce', 'startup', 'lead generation', 'crm', 'travel'];


    // negative check: if valid slot value is not obtained, inform lex that user is expected 
    // respond with a slot value 
    if (videommerceType && !(videommerceType === "") && validData.indexOf(videommerceType.toLowerCase()) === -1) {
        let response = {
            sessionAttributes: event.sessionAttributes,
            dialogAction: {
                type : "'ElicitSlot",
                message: {
                    contentType: "PlainText or SSML",
                    content: "Message to convey to the user. For example, Thanks, your pizza has been ordered."
                },
                responseCard: {
                    version: "1",
                    contentType: "application/vnd.amazonaws.card.generic",
                    genericAttachments: [{
                        title: "card-title",
                        subTitle: "card-sub-title",
                        imageUrl: "URL of the image to be shown",
                        attachmentLinkUrl: "URL of the attachment to be associated with the card",
                        buttons: [{
                            text: "button-text",
                            value: "Value sent to server on button click"
                        }]
                    }]
                }
            }
        }
        callback(null, response);
    }


    let response = {
        sessionAttributes: sessionAttributes,
        dialogAction: {
            type: "Delegate",
            slots: event.currentIntent.slots
        }
    }
    callback(null, response);
};

К сожалению, это не работает, на lex bot я получаю следующую ошибку

Intent videommerceIntent is ReadyForFulfillment: name:jim videommerceType:ecommerce

Что не так с моим кодом? любая помощь или подобное рабочее демо будет оценено, спасибо

...