首页 > 解决方案 > Slack app_home_opened 事件调用两次

问题描述

我已经构建了一个 slack 应用程序。但是对于 onbording 进程slack 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
}

我正在使用python 的slackeventsapi包与 slack 交互。我知道如果我们在 3 秒内没有响应,slack 会重试请求,但我会在 3 秒内响应每个请求。

标签: pythoneventsslackslack-api

解决方案


这可能不是这个问题的预期解决方案,但是:我已经就此与 Slack 团队联系,结果证明这是一个错误,他们意识到了这一点,尽管他们似乎没有预计何时修复。

考虑到这一点,恐怕如果您遇到此问题,您应该考虑在您的事件 API 中实现一种解决方法,这将保证您只处理该系列中的一个事件。根据您的用例和基础设施(数据库、框架等),实际的解决方案可能会有所不同。


推荐阅读