slack-api - 为什么我的 app_home_opened 事件有时会触发两次?
问题描述
我为我的机器人订阅了以下事件:https ://api.slack.com/events/app_home_opened
当您打开/关注机器人的聊天 (DM) 频道时,它会起作用,并且会触发该事件。但是,有时(并非总是)该事件会触发两次,我不知道为什么。
有趣的是,第二个事件可能会比第一个事件晚几秒钟(~2-3 秒)出现,而无需我切换窗口或任何东西。
我使用来自 Slack 的以下适配器: https ://github.com/slackapi/node-slack-events-api
这就是我的代码的样子:
slackEvents.on('app_home_opened', (event: any, body: any) => {
if (body.token !== process.env.SLACK_VERIFICATION_TOKEN) return;
console.log('App home opened event: ', event);
console.log('App home opened body: ', body);
BotMessageInterpreter.handleAppHomeOpenedMessage(app, messagesDB, body);
});
这是从 Slack 发送的事件和正文数据。我删除了敏感信息,但控制除了 event_id 和 event_ts 之外的所有内容都是相同的。
// First event
App home opened event:
{
type: 'app_home_opened',
user: 'my-slack-id',
channel: 'my-channel-id'
}
App home opened body: {
token: 'my-token',
team_id: 'my-team-id',
api_app_id: 'the-api-app-id',
event:
{
type: 'app_home_opened',
user: 'my-slack-id',
channel: 'my-channel-id'
},
type: 'event_callback',
event_id: 'EvKHQ2G7NU',
event_time: 1560409852
}
// Second event
App home opened event:
{
type: 'app_home_opened',
user: 'my-slack-id',
channel: 'my-channel-id'
}
App home opened body:
{
token: 'my-token',
team_id: 'my-team-id',
api_app_id: 'the-api-app-id',
event:
{
type: 'app_home_opened',
user: 'my-slack-id',
channel: 'my-channel-id'
},
type: 'event_callback',
event_id: 'EvKKU0U6CE',
event_time: 1560409840
}
解决方案
似乎可以通过检查标头中的重试次数来避免这种情况:
if (headers['x-slack-retry-num']) return;
推荐阅读
- excel - 从 txt 复制粘贴到 excel 并将文本运行到列功能时丢失数据
- graphviz - 使用graphviz在像kcachegrind这样的标签中创建百分比条
- javascript - jquery datepicker onselect 事件在 IE 11 中显示无效日期
- python - Python REGEX 如何从变量中提取特定数字
- javascript - 选择或取消选择复选框 - ReactJS
- r - 在 R 中查找 3D 顶点对象的维度
- c# - Active Directory 访问令牌过期检测
- java - 有没有办法在java中使用DOM4J从混合xml标签中解析数据?
- javascript - 根据查询参数返回匹配的数据
- jmeter - Jmeter 从采样器结果中提取数据