我建立了一个懒人应用,但在登录过程中,我发现了一个问题 懒惰的app_home_opened 事件调用两次,我检查了两个事件几乎在同一时间被触发。编码
from slackeventsapi import SlackEventAdapter
slack_events_adapter = SlackEventAdapter(
Constants.ENV["SLACK_APP_SIGNING_SECRETS"], "/slack/events", app
)
@slack_events_adapter.on("app_home_opened")
def app_home_opened(event_data):
threading.Thread(target=handleOnBording).start()
return "", 200
第一次事件有效载荷。
{
'token': '*****',
'team_id': 'T311FQLU8CT',
'api_app_id': 'K711C41FET3',
'event': {
'type': 'app_home_opened',
'user': 'F511MQLU8KB',
'channel': 'E211HGWLUKG',
'tab': 'messages',
'event_ts': '1590756776.195938'
},
'type': 'event_callback',
'event_id': 'Ev014P7CG7N0',
'event_time': 1590756776
}
第二次事件有效载荷:
{
'token': '*******',
'team_id': 'T311FQLU8CT',
'api_app_id': 'K711C41FET3',
'event': {
'type': 'app_home_opened',
'user': 'F511MQLU8KB',
'channel': 'E211HGWLUKG',
'tab': 'messages',
'event_ts': '1590756776.212203'
},
'type': 'event_callback',
'event_id': 'Ev014FLBULHK',
'event_time': 1590756776
}
我用的是 slackeventsapi 我知道,如果我们在3秒内没有响应,slack就会重试请求,但我对每个请求都在3秒内响应,我已经建立了一个slack应用,但在登录过程中,slack app_home_opened事件调用了两次。
这可能真的不是这个问题的预期解决方案,但是:我已经联系了Slack团队,事实证明这是一个bug,他们已经意识到了这个问题,不过他们似乎还没有什么时候能修复的ETA。
考虑到这一点,恐怕如果你遇到了这个问题,你应该考虑在你的事件API中实现一个变通方法,这将保证你只能处理系列中的一个事件。根据你的用例和你的基础设施(数据库、框架等),实际的解决方案可能有所不同。