javascript - AWS Lambda 在请求后获取 https 响应

标签 javascript amazon-web-services aws-lambda

我实现了这个 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/

相关文章:

javascript - 使用 # 打开基于 url 的模态

javascript - 使用 css3 或 javascript 动画 webkit 渐变的方法?

python - 如何在计算机关闭时运行 cmd 脚本?

使用 RapidSSL 证书时 Node.js HTTPS 服务器没有响应

python - 无法使用 Linux Alpine docker 为 AWS lambda 构建 zip 文件

javascript - Angularjs limitTo 在使用(键,值)时不起作用

javascript - 不使用 jQuery 的双范围 slider

amazon-web-services - 如何在aws中替换.pem文件

go - AWS Go SDK lambda.Start()编译错误

python - 我们可以使用 boto3 Python 在 aws s3 存储桶之间递归复制文件和文件夹吗?