【发布时间】:2018-11-15 20:14:42
【问题描述】:
我正在使用 Slack API 从 Slack 工作区获取链接。它可以工作,除非在发布消息时触发不止一次。每次。这是我的代码:
exports.slack = (req , res) => {
var message = req.body;
if (message.challenge) {
res.send(message.challenge);
} else if (message.event.type == 'message_received') {
if (message.event.text.includes('<')) {
// Link
console.log('NEW LINK');
var link = message.event.text.slice(1, -1);
getArticleInfo(link, (error, body) => {
if (error)
console.error(error);
else {
newArticleToDB(body , link, req);
}
});
}
}
}
每次发布新消息时,我都会多次收到“新链接”日志。任何想法在哪里寻找这个问题?
谢谢。
【问题讨论】:
-
有事件ID吗?也许您可以尝试检查收到的事件是否具有与之前的事件不同的事件,例如
if(message.event.id != lasteventid){ run even handler },通过 ID 我的意思是某种数字随着每个收到的事件而改变或增加 -
@stetoc 刚刚检查过,当发布一条消息时,每个消息 ID 都不同。所以还是会触发多次。
-
也许问题出在您在此处作为代码发布的内容之外?也许你多次添加一些处理程序?你检查了吗?
-
@stetoc 是的,我删除了所有 if 语句,只是控制台记录了“消息”,但我仍然收到多个日志。
-
如果你没有通过某种 HTTP 200 OK 确认请求,那么 Slack 会认为你没有收到它并重试几次请求。见api.slack.com/events-api#graceful_retries
标签: javascript node.js api express slack-api