Slack 事件适配器没有给出正确的响应

Slack events adaptor not giving a proper response

我现在正尝试在 ngrok 上使用 slackeventsapi 运行 制作一个 slack 机器人。

它可以正常发送消息,但松弛事件适配器似乎无法正常工作。每次发送消息但没有有效负载时,它都会给出代码 200。我尝试打印它,但打印时什么也没显示。

还有一个 post 问了一个类似的问题,最终的解决方案是在 slack 上制作一个新应用 API 但它似乎并没有解决我的问题。我做了另一个应用程序,但问题仍然存在。

我正在学习一个教程,所以我试图完全匹配他的代码,但即使那样它似乎也不起作用。如果有帮助 - https://www.youtube.com/watch?v=6gHvqXrfjuo&list=PLzMcBGfZo4-kqyzTzJWCV6lyK-ZMYECDc&index=2.

The slack API scopes Slack API Subscriptions

import slack
import os
from pathlib import Path
from dotenv import load_dotenv
from flask import Flask
from slackeventsapi import SlackEventAdapter

env_path = Path('.')/'.env'
load_dotenv(dotenv_path=env_path)
client = slack.WebClient(token=os.environ['TEST2_SLACK_TOKEN'])
BOT_ID = client.api_call("auth.test")['user_id']

app = Flask(__name__)
slack_event_adaptor = SlackEventAdapter(os.environ['SIGNING_SECRET2'], '/slack/events', app)

client.chat_postMessage(channel=f'#new', text="Hello")

if __name__ == "__main__":
    app.run(debug=True)

@slack_event_adaptor.on('message')
def message(payload):
    print(payload)
    event = payload.get('event',{})
    channel_id = event.get('channel')
    user_id = event.get('user')
    text = event.get('text')

    if BOT_ID != user_id:
        client.chat_postMessage(channel= channel_id, text = text) 

我在使用 slack_event_adaptor 时遇到了类似的问题,然后尝试使用 slack_bolt 并且一切正常。让我分享一个例子,如果你愿意,你可以试试:

import re

from config import config
from flask import Flask, request
from slack_sdk import WebClient
from slack_bolt import App
from slack_bolt.adapter.flask import SlackRequestHandler

app = Flask(__name__)

slack_token = config.slack_token
client = WebClient(slack_token)
bolt_app = App(token=slack_token, signing_secret=config.signing_secret)
handler = SlackRequestHandler(bolt_app)

@bolt_app.message(re.compile("Hello bot",re.IGNORECASE))
def reply_in_thread(payload: dict):
    """ This will reply in thread instead of creating a new thread """
    response = client.chat_postMessage(channel=payload.get('channel'),
                                     thread_ts=payload.get('ts'),
                                     text=f"Hello<@{payload['user']}>")

@app.route("/datalake/events", methods=["POST"])
def slack_events():
    """ Declaring the route where slack will post a request """
    return handler.handle(request)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

当你写“Hello bot”时,bot 会相应地回应你。