【发布时间】:2016-08-09 10:30:30
【问题描述】:
我做了一个 Slack 命令,允许用户代表其他人发帖……只是为了好玩。这是一个存在于 AWS Lambda 中的节点函数。
通过输入 /mybot danturcotte^ hello 我进入 Slack:
烦人的是每次我发帖,我的 Slackbot “Dante”都会回复。
当我postToSlack 时,我尝试了这两个选项以确保我的机器人不会跟进松弛的帖子:
1) context.succeed();
2) callback(error, null);
两种方式仍然让 Dante 回复 null。我怎样才能只发布传入的 webhook 而没有其他内容(又名 danturcotte 打招呼)?
AWS Lambda NodeJS 代码 sn-p:
var AWS = require('aws-sdk');
var qs = require('querystring');
var request = require('request');
exports.handler = function (event, context, callback) {
var params = qs.parse(event.postBody);
var botPayload = {};
botPayload.channel = params.channel_name;
if (typeof params.text !== 'undefined') {
botPayload.userToGet = params.text.split('^')[0];
getUserData(botPayload, function (error, status, body) {
var userDataArray = JSON.parse(body),
profileFound = false;
for (var i = 0; i < userDataArray.members.length; i++) {
if (!profileFound) {
if (userDataArray.members[i].name === botPayload.userToGet) {
//set bot to user
}
}
}
postToSlack(botPayload, function (error, status, body) {
//context.succeed();
callback(error, null);
});
});
}
};
function getUserData (payload, callback) {
request({
uri: 'https://slack.com/api/users.list?token=mytoken',
method: 'GET'
}, function (error, response, body) {
callback(error, response.statusCode, body);
});
};
function postToSlack (payload, callback) {
var incoming_webhook = 'https://hooks.slack.com/services/T02LHM7GA/B11BS608F';
request({
headers: {
'content-type': 'application/json'
},
uri: incoming_webhook,
body: JSON.stringify(payload),
method: 'POST'
}, function (error, response, body) {
if (error) {
return callback(error);
}
callback(null, response.statusCode, body);
});
};
【问题讨论】:
标签: node.js amazon-web-services lambda slack