AWS SES
适用于Lex
Test Chatbot,但在使用Slack应用程序发布聊天机器人后,它无效(不会触发电子邮件服务)。然而,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);
}
});
callback(null, {
"dialogAction": {
"type": "ConfirmIntent",
"fulfillmentState": "Fulfilled",
"message": {
"contentType": "PlainText",
"content": "message to convey to the user, i.e. Are you sure you want a large pizza?"
}
}
});
};
编辑1:我发现问题是,当我在[event.currentIntent.slots.Email]
上发布Lex
机器人时,我无法获得Slack
中的值。
答案 0 :(得分:2)
尝试以下步骤来确定根本原因:
确保使用this分步教程正确配置了Slack的机器人。
如果您的机器人在您的测试机器人(LEX内部)中工作正常但在Slack上没有,请确保您发布了机器人的最新版本。
在您的AWS Lambda上尝试以下代码,看看您获得的回报。
callback(null, {
"dialogAction": {
"type": "ConfirmIntent",
"fulfillmentState": "Fulfilled",
"message": {
"contentType": "PlainText",
"content": "Echo: " + JSON.stringify(event.currentIntent.slots) <-- This
}
}
});
希望这有帮助。
答案 1 :(得分:0)
我有一个类似的问题,机器人在lex控制台工作,但没有松弛。虽然与电子邮件无关,但这是我发现的。
由于某种原因,空会话属性
传递给slack时存储为NULL
。因此,您无法为其添加变量。您希望它为{}
,因此如果NULL
将其值更改为{}
if(intentRequest.sessionAttributes == null){
intentRequest.sessionAttributes = {};
}
答案 2 :(得分:0)
根据上面的评论,这就是让我的 slack bot 与我的测试 lex chat 正在做的事情保持一致的原因:
session_attributes = intent_request['sessionAttributes'] if intent_request['sessionAttributes'] is not None else {}