我实现了这个 AWS Lambda,它接收来自 slack 的事件并响应回 slack 的句子,我想监控它们返回 lambda 的答案,以验证消息是否已到达并发布。
// Lambda handler
exports.handler = (data, context, callback) => {
switch (data.type) {
case "url_verification": verify(data, callback); break;
case "event_callback": process(data.event, callback); break;
default: callback(null);
}
};
// Post message to Slack - https://api.slack.com/methods/chat.postMessage
function process(event, callback) {
// test the message for a match and not a bot
if (!event.bot_id && /(aws|lambda)/ig.test(event.text)) {
var text = `<@${event.user}> isn't AWS Lambda awesome?`;
var message = {
token: ACCESS_TOKEN,
channel: event.channel,
text: text
};
var query = qs.stringify(message); // prepare the querystring
https.get(`https://slack.com/api/chat.postMessage?${query}`);
}
callback(null);
}
我想知道如何将 HTTPS 请求(通过 slack 发送给我)的响应返回到我的 lambda?
最佳答案
如果我理解正确,您想等待获取查询的结果。
在您的代码中,回调会立即被调用,并且 lambda 会完成其执行。 为了能够等待响应,您需要从代码中的当前位置删除回调,并在执行请求后调用它。
// Post message to Slack - https://api.slack.com/methods/chat.postMessage
function process(event, callback) {
// test the message for a match and not a bot
if (!event.bot_id && /(aws|lambda)/ig.test(event.text)) {
var text = `<@${event.user}> isn't AWS Lambda awesome?`;
var message = {
token: ACCESS_TOKEN,
channel: event.channel,
text: text
};
var query = qs.stringify(message); // prepare the querystring
https.get(`https://slack.com/api/chat.postMessage?${query}`, (res, err) => {
if (err) return callback(err);
callback(null);
})
}
// callback was here
}
关于javascript - AWS Lambda 在请求后获取 https 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46449744/