繁体   English   中英

使用 python Flask 的 Slack 事件 API 响应

[英]Slack event API response using python flask

我正在使用 slack 事件 API。 我正在获取有关订阅事件的事件。 但是如何使用 python 请求发送响应。 slack 几秒钟后再次发送相同的事件我需要将什么 json 作为响应发送回 slack 以停止获得相同的响应? 如果您知道代码,在此先感谢您:)

@flask.route("/slack_webhook")
def slack_webhook():
    print("Slack Webhook.....!!!")

    data = json.loads(request.data.decode("utf-8"))
    if 'challenge' in data:
    return(data['challenge'])

    if data['type'] == 'event_callback':
        response = make_response("", 200)
        response.headers['X-Slack-No-Retry'] = 1
        print("returning response")
        return response

    else:
        slack_event_handler.delay(data)

您需要做的就是在 3 秒内直接使用HTTP 200 OK响应来自 Slack 的请求。 如果您的应用程序在该时间内终止,这将自动发生。

如果您需要更多处理时间,您应该考虑将事件排队以供以后处理或启动异步处理进行处理。

这是文档中的内容

您的应用应在三秒内使用 HTTP 2xx 响应事件请求。 如果没有,我们将认为事件传递尝试失败。 失败后,我们将重试 3 次,以指数方式回退。

保持响应成功率至少为每 60 分钟 5% 的事件,以防止自动禁用。

尽快用 HTTP 200 OK 响应事件。 避免在同一流程中实际处理和响应事件。 实现一个队列来处理接收到的入站事件。

如果成功接收到所需信息,则直接返回状态。

return 'HTTP 200 OK'

尝试这个:

return {"isBase64Encoded": True, "statusCode": 200, "headers": { }, "body": ""}

我发现这个旧主题没有为我的问题提供适当的解决方案。 通过试验和失败的方法,我想出了这个:

@app.route("/slack_verification", methods=('GET', 'POST'))
def slack_verification():
    if request.method == 'POST':
        return request.get_json()

它起作用了:) 请求 URL 已经过验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM