Slack 应用用于通过 Slack 提供代理或团队,使用 FastAPI 服务器处理 Slack 事件并发送消息。
设置步骤
设置和配置
先决条件
请确保您已具备以下条件:
- 拥有管理员权限的 Slack 工作区
- ngrok(用于开发)
- Python 3.7+
配置 OAuth 和权限
- 在 Slack 应用设置中导航至“OAuth & Permissions”
- 在“Scopes”下,点击“Add an OAuth Scope”
- 添加以下 Bot Token Scopes:
app_mention
chat:write
chat:write.customize
chat:write.public
im:history
im:read
im:write
- 滚动到顶部,点击“Install to Workspace”
- 点击“Allow”授权应用
设置环境变量
在项目根目录下创建一个 .envrc
文件,并包含以下内容,将占位符值替换为您的实际凭证:
export SLACK_TOKEN="xoxb-your-bot-user-token" # Bot User OAuth Token
export SLACK_SIGNING_SECRET="your-signing-secret" # App Signing Secret
在您的 Slack 应用设置中找到这些值:
- Bot User OAuth Token:位于“OAuth & Permissions”下
- Signing Secret:位于“Basic Information” > “App Credentials”下
确保您的 shell 已加载此文件(例如,通过使用 direnv allow
)。
使用 ngrok 设置 Webhook
- 对于本地开发,请使用 ngrok 将您的本地服务器暴露到互联网:
ngrok http 8000
# 或者,如果您有付费 ngrok 计划并拥有静态域名:
# ngrok http --domain=your-custom-domain.ngrok-free.app 8000
- 复制 ngrok 提供的
https://
URL
- 在您的 Slack 应用设置中,转到“Event Subscriptions”
- 通过切换开关来启用事件
- 添加您的请求 URL:
- 格式:
https://your-ngrok-url.ngrok.io/slack/events
- 等待 Slack 验证终结点(您的应用必须正在运行)
配置事件订阅
- 在 Event Subscriptions 的“Subscribe to bot events”下:
- 点击“Add Bot User Event”并添加:
app_mention
message.im
message.channels
message.groups
- 点击“Save Changes”
- 重新安装您的应用以应用新的权限
启用应用主页
- 在 Slack 应用设置中转到“App Home”
- 在“Show Tabs”下:
- 启用“Messages Tab”
- 勾选“Allow users to send Slash commands and messages from the messages tab”
- 保存更改
最终安装
- 返回 Slack 应用设置中的“Install App”
- 点击“Reinstall to Workspace”
- 使用新的权限授权应用
- 您的应用现在已准备就绪!
示例用法
创建一个代理,用 SlackAPI
包装它,然后提供它:
from agno.agent import Agent
from agno.app.slack.app import SlackAPI
from agno.models.openai import OpenAIChat
basic_agent = Agent(
name="Basic Agent",
model=OpenAIChat(id="gpt-4o"), # 请确保已设置 OPENAI_API_KEY
add_history_to_messages=True,
num_history_responses=3,
add_datetime_to_instructions=True,
)
slack_api_app = SlackAPI(
agent=basic_agent,
)
app = slack_api_app.get_app()
if __name__ == "__main__":
slack_api_app.serve("basic:app", port=8000, reload=True)
核心组件
SlackAPI
: 用于通过 FastAPI 集成 Agno 代理/团队到 Slack。
SlackAPI.serve
: 使用 Uvicorn 为 FastAPI 应用提供服务,并进行 Slack 配置。
SlackAPI
类
Agno Slack 应用的主入口点。
初始化参数
参数 | 类型 | 默认值 | 描述 |
---|
agent | Optional[Agent] | None | Agno Agent 实例。 |
team | Optional[Team] | None | Agno Team 实例。 |
settings | Optional[APIAppSettings] | None | API 配置。如果为 None 则使用默认值。 |
api_app | Optional[FastAPI] | None | 已存在的 FastAPI 应用。如果为 None 则会创建一个新的。 |
router | Optional[APIRouter] | None | 已存在的 APIRouter。如果为 None 则会创建一个新的。 |
app_id | Optional[str] | None | 应用标识符(如果未设置则自动生成)。 |
name | Optional[str] | None | 应用的名称。 |
description | Optional[str] | None | 应用的描述。 |
请提供 agent
或 team
,但不要同时提供两者。
Slack 集成的核心端点:
POST /slack/events
- 描述: 处理所有 Slack 事件,包括消息和应用提及。
- 安全: 为每个请求验证 Slack 签名。
- 事件类型:
- 功能:
- 线程对话
- 后台任务处理
- 长响应的消息分割
- 支持直接消息和频道交互
测试集成
- 使用
python <my-app>.py
在本地启动您的应用程序(确保 ngrok 正在运行)。
- 使用
/invite @YourAppName
将机器人邀请到频道。
- 尝试在频道中提及机器人:
@YourAppName 你好
。
- 通过与机器人开启私信来测试直接消息。
故障排除
- 验证所有环境变量是否设置正确。
- 确保机器人具有正确的权限并已成功邀请到频道。
- 检查 ngrok 连接和 URL 配置。
- 验证事件订阅是否配置正确。
- 监控应用程序日志以获取详细的错误消息。
如需更多帮助或报告问题,请参阅文档或在仓库中提交 issue。
Responses are generated using AI and may contain mistakes.