设置步骤
设置和配置
1
先决条件
请确保您已具备以下条件:
- 拥有管理员权限的 Slack 工作区
- ngrok(用于开发)
- Python 3.7+
2
创建 Slack 应用
- 前往 Slack 应用目录
- 点击“创建新应用”
- 选择“从头开始”
- 提供:
- 应用名称
- 要安装到的工作区
- 点击“创建应用”
3
配置 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”授权应用
4
设置环境变量
在项目根目录下创建一个 在您的 Slack 应用设置中找到这些值:
.envrc
文件,并包含以下内容,将占位符值替换为您的实际凭证:- Bot User OAuth Token:位于“OAuth & Permissions”下
- Signing Secret:位于“Basic Information” > “App Credentials”下
direnv allow
)。5
使用 ngrok 设置 Webhook
- 对于本地开发,请使用 ngrok 将您的本地服务器暴露到互联网:
- 复制 ngrok 提供的
https://
URL - 在您的 Slack 应用设置中,转到“Event Subscriptions”
- 通过切换开关来启用事件
- 添加您的请求 URL:
- 格式:
https://your-ngrok-url.ngrok.io/slack/events
- 格式:
- 等待 Slack 验证终结点(您的应用必须正在运行)
6
配置事件订阅
- 在 Event Subscriptions 的“Subscribe to bot events”下:
- 点击“Add Bot User Event”并添加:
app_mention
message.im
message.channels
message.groups
- 点击“Save Changes”
- 重新安装您的应用以应用新的权限
7
启用应用主页
- 在 Slack 应用设置中转到“App Home”
- 在“Show Tabs”下:
- 启用“Messages Tab”
- 勾选“Allow users to send Slash commands and messages from the messages tab”
- 保存更改
8
最终安装
- 返回 Slack 应用设置中的“Install App”
- 点击“Reinstall to Workspace”
- 使用新的权限授权应用
- 您的应用现在已准备就绪!
示例用法
创建一个代理,用SlackAPI
包装它,然后提供它:
核心组件
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 签名。
- 事件类型:
- URL 验证挑战
- 消息事件
- 应用提及事件
- 功能:
- 线程对话
- 后台任务处理
- 长响应的消息分割
- 支持直接消息和频道交互
测试集成
- 使用
python <my-app>.py
在本地启动您的应用程序(确保 ngrok 正在运行)。 - 使用
/invite @YourAppName
将机器人邀请到频道。 - 尝试在频道中提及机器人:
@YourAppName 你好
。 - 通过与机器人开启私信来测试直接消息。
故障排除
- 验证所有环境变量是否设置正确。
- 确保机器人具有正确的权限并已成功邀请到频道。
- 检查 ngrok 连接和 URL 配置。
- 验证事件订阅是否配置正确。
- 监控应用程序日志以获取详细的错误消息。