我是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斜杠命令应用程序。那...
我失败的原因原本是:我的lambda是异步的,并且在我尝试执行另一个异步或同步功能时返回。 Lambda只是返回太快,或者卡在另一个函数中等待返回。