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 会相应地回应你。
我现在正尝试在 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 会相应地回应你。