Amazon Lex Bot - 回复你好

Amazon Lex Bot - Replying to Hello

我已经开始学习 Amazon lex,浏览了他们的文档和示例机器人。

我面临的问题是所有的机器人都是问答类型,如果我必须让机器人回复你好,正确的方法应该是什么或如何去做?

据我了解:

I am thinking of creating an intent for Hello and when it gets fulfilled i can make the bot reply How can i help you? with Lambda Function, this is the way it is supposed to be done?

用户可以提出许多其他直接问题,我是否必须为具有 lambda 函数的意图回复所有问题?我正在使用 java 脚本。

我卡住了,请问有什么方法吗?

编辑 1

这就是我一直在寻找的,任何建议都会有所帮助。

要在 Lambda 函数中实现从 JavaScript (Node.js) 返回格式化的响应:

首先创建一些方便的函数来构建正确的 Lex 响应格式。

function close(sessionAttributes, fulfillmentState, message) {
    return {
        sessionAttributes,
        dialogAction: {
            type: 'Close',
            fulfillmentState,
            message,
        },
    };
}

您可以在 AWS-Lex-Convo-Bot-Example index.js

中找到更多类似 Node response-building 的函数

然后只需调用该函数并将其传递给它所需的内容,如下所示:

var message = {
    'contentType': 'PlainText', 
    'content': 'Hi! How can I help you?'
}

var responseMsg = close( sessionAttributes, 'Fulfilled', message );

(在 'content' 中写下您的消息,如果使用 SSML 标签,请将 'contentType' 更改为 'SSML')

然后将responseMsg传递给exports.handlercallback


把它们放在一起,你会得到:

function close(sessionAttributes, fulfillmentState, message) {
    return {
        sessionAttributes,
        dialogAction: {
            type: 'Close',
            fulfillmentState,
            message,
        },
    };
}

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

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

    var responseMsg = "";

    if (intentName == "HelloIntent") { // change 'HelloIntent' to your intent's name
        var message = {
            'contentType': 'PlainText', 
            'content': 'Hi! How can I help you?'
        }

        responseMsg = close( sessionAttributes, 'Fulfilled', message );
    }
    // else if (intentName == "Intent2") { 
    //      build another response for this intent
    // }
    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);
}