Lambda函数中针对松弛型bot的HTTPS GET请求?

问题描述 投票:0回答:1

我是Node,AWS Lambdas和Slackbots的新手,因此,除了尝试同时找出它们之外,还有什么更好的方法来学习它们?开个玩笑。

我创建了一个slackbot斜杠命令应用程序。也就是说,当使用Slack的用户键入'/ anondm @username msg'时,Slack会将此命令发送给我的Lambda函数,该函数随后将答案直接返回给发送方。

目标是让Lambda接收邮件,删除用户名,然后将邮件匿名转发给收件人。

现在,首先存在。或者至少,我可以在GitHub上找到代码仓库。但是我想要一个品牌版本,并且想添加一些小技巧。

有效:—创建bot and slash命令不是问题。—让Lambda接收消息并回复发件人也不成问题。

如果您感兴趣,您只需要一个API网关和一个Lambda函数,本教程就可以满足:https://api.slack.com/tutorials/aws-lambda

不起作用:—我需要向Slack API发出HTTPS GET请求,以便它将执行将消息发送给用户的命令。

我花了整整一天的时间来解决这个问题,并在许多解决方案之间来回走动,但是今天早上在一些咖啡倒在我真正喜欢的东西上之后。

我见过有人建议使用SNS主题。因此,一个Lambda接收Web请求,然后发布到SNS主题,该主题触发另一个Lambda发送。好吧,这对于我可能会使用作业队列的大量工作来说听起来不错,但是...我的意思是这是一个Web处理程序和一个GET请求...这应该是几行代码。

所以问题:在收到Web请求的Lambda期间执行GET请求的最简单方法是什么?

这是不起作用(以最简单的形式),但是应该是解决方案:

'use strict';

var qs = require('querystring');
var https = require('https');

var target = "_snip_";

exports.handler = function(event, context) {
    console.log("This will for sure execute.");

    https.get(target, function(res) {
        console.log("Got response: " + res.statusCode);
    }).on('error', function(e) {
        console.log("Got error: " + e.message);
    });

    console.log("This will for sure NOT execute.");

    return "Your quest is complete.";
};

这是可行的方法:

'use strict';

var qs = require('querystring');
var https = require('https');

var target = "_snip_";

exports.handler = function(event, context) {
    console.log("This will for sure execute.");

    https.get(target, function(res) {
        console.log("Got response: " + res.statusCode);

        context.succeed("Your quest is complete");
    }).on('error', function(e) {
        console.log("Got error: " + e.message);
    });
};

我是Node,AWS Lambdas和Slackbots的新手,因此,除了尝试同时找出它们之外,还有什么更好的方法来学习它们?开玩笑。我创建了一个slackbot斜杠命令应用程序。那...

node.js https aws-lambda slack slack-api
1个回答
0
投票

我失败的原因原本是:我的lambda是异步的,并且在我尝试执行另一个异步或同步功能时返回。 Lambda只是返回太快,或者卡在另一个函数中等待返回。

© www.soinside.com 2019 - 2024. All rights reserved.