我已将漫游器订阅了以下活动: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
}
答案 0 :(得分:1)
似乎可以通过检查标头中的重试次数来避免:
if (headers['x-slack-retry-num']) return;