AWS lambda函数 – “发生错误:收到来自Lambda:Handled的错误响应”

使用AWS Lex创buildChatBot并在AWS Lambda使用Node.js。

错误:发生错误:收到来自Lambda:Handled的错误响应

Lambdafunction:

 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添加下面的响应testing仍然得到相同的错误响应。

 exports.handler = (event, context, callback) => { callback(null, { "dialogAction": { "type": "ConfirmIntent", "message": { "contentType": "PlainText or SSML", "content": "message to convey to the user, ie Are you sure you want a large pizza?" } } }); 

正如在lambda-input-response-format文档中提到的那样, fulfillmentState属性在响应中是必需的。

其他的事情是你必须在响应中传递contentType PlainTextSSML 。 在你的情况下,它只是PlainText

  exports.handler = (event, context, callback) => { callback(null, { "dialogAction": { "type": "ConfirmIntent", "fulfillmentState": "Fulfilled", // <-- Required "message": { "contentType": "PlainText", "content": "message to convey to the user, ie Are you sure you want a large pizza?" } } }); 

上面的代码应该可以解决你的问题。

但是,如果您在networking选项卡中看到req-res,则会收到HTTP错误424,该错误说明DependencyFailedException ( “Amazon Lex没有足够的权限来调用Lambda函数”)非常具有误导性。