AWS lambda函数 - '发生错误:Lambda收到错误响应:已处理'

时间:2017-05-23 11:19:51

标签: node.js amazon-web-services lambda

使用AWS Lex创建ChatBot并使用Node.js中的AWS Lambda

  

错误:发生错误:Lambda收到错误响应:   处理

Lambda函数:

var aws = require('aws-sdk');
var ses = new aws.SES({region: 'us-east-1'});

    exports.handler = function(event, context, callback) {

        var eParams = {
            Destination: {
                ToAddresses: [event.currentIntent.slots.Email]
            },
            Message: {
                Body: {
                    Text: {
                        Data: "Hi, How are you?"
                    }
                },
                Subject: {
                    Data: "Title"
                }
            },

            Source: "abc@gmail.com"
        };
        var email = ses.sendEmail(eParams, function(err, data){
            if(err) 
            else {

                context.succeed(event);

            }
        });
    };

成功执行后如何从Lambda到Lex获得正确的响应(电子邮件服务正常工作)。我试过context.done();,但没有成功。

编辑1: 尝试从AWS Documentation for LEX添加以下响应测试仍然得到相同的错误响应。

exports.handler = (event, context, callback) => { 

callback(null, { 
"dialogAction": { 
"type": "ConfirmIntent", 
"message": { 
"contentType": "PlainText or SSML", 
"content": "message to convey to the user, i.e. Are you sure you want a large pizza?" 
} 

} 


});

1 个答案:

答案 0 :(得分:2)

lambda-input-response-format 中所述,文档here =INDEX(Categories!D$3:D$53,MATCH(1, ISNUMBER(SEARCH(Categories!C$3:C$53,I2)) * (Categories!A$3:A$53 = J2) ,0)) 属性在响应中是必需的。

其他事情是您必须在响应中为*传递fulfillmentStatePlainText。在你的情况下,它只是SSML

contentType

以上代码可以解决您的问题。

但是,如果您在网络标签中看到req-res,则会收到HTTP错误424,其中显示DependencyFailedException,其中显示 " Amazon Lex没有足够的权限来调用Lambda函数" 非常具有误导性。