使用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?"
}
}
});
答案 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))
属性在响应中是必需的。
其他事情是您必须在响应中为*
传递fulfillmentState
或PlainText
。在你的情况下,它只是SSML
。
contentType
以上代码可以解决您的问题。
但是,如果您在网络标签中看到req-res,则会收到HTTP错误424,其中显示DependencyFailedException,其中显示 " Amazon Lex没有足够的权限来调用Lambda函数" 非常具有误导性。