技能
消息通讯 官方
Slack
添加 Slack 作为消息频道。使用 Socket Mode——无需公网 URL。
功能特性
- 通过 Socket Mode 将 NanoClaw 连接到 Slack
- 无需公网 URL 或 Webhook 端点
- 支持公共频道、私有频道和私信
- 可与其他频道并行使用或独立运行
- 完整的 OAuth 权限配置,支持读取和发送消息
前置条件
- 已安装并运行 NanoClaw
- 拥有管理员权限的 Slack 工作区
- 在 api.slack.com 创建 Slack 应用
- 已启用 Socket Mode 并获取 App-Level Token
安装
/add-slack 工作原理
/add-slack 技能使用 Socket Mode 将 NanoClaw 连接到 Slack。这是一种基于 WebSocket 的连接,不需要公网 URL 或 Webhook 端点——机器人通过出站连接接入 Slack 服务器。这使得在本地机器或防火墙后运行 NanoClaw 变得非常理想。
该技能通过技能引擎应用 SlackChannel 类,安装 @slack/bolt 依赖,并集成到消息处理管道中。如果你已经配置了 WhatsApp 或 Telegram 等其他频道,Slack 会作为新增频道一并添加。
设置 Slack 应用需要在 Slack API 控制面板中完成几个步骤。技能会提供详细说明(并引用带截图的 SLACK_SETUP.md 指南):
- 创建应用——在 api.slack.com 创建并启用 Socket Mode。
- 生成 App-Level Token(
xapp-...),授予connections:write权限。这是启用 Socket Mode 所必需的。 - 订阅机器人事件:
message.channels、message.groups和message.im,使机器人能够接收来自公共频道、私有频道和私信的消息。 - 配置 OAuth 权限:
chat:write、channels:history、groups:history、im:history、channels:read、groups:read和users:read。 - 将应用安装到工作区以获取 Bot Token(
xoxb-...)。
将两个令牌(App-Level Token 和 Bot Token)粘贴到技能中,技能会将其保存到你的环境变量。
注册频道
应用安装完成后,你需要获取 NanoClaw 要运行的 Slack 频道的 Channel ID。最简单的方法是在 Slack 中右键点击频道名称,选择”查看频道详情”——Channel ID 位于详情面板的底部。
技能会将该频道注册到数据库中。你可以注册多个频道:一个作为主频道,其他作为仅触发频道。
已知限制
Slack 集成目前存在一些限制:
- 消息线程被展平 ——机器人将线程回复视为普通消息,线程上下文不会保留。
- 无输入指示器 ——Slack 的 API 不支持像其他平台那样的持续”正在输入”状态。
- 不处理文件和图片 ——Slack 消息中的文件附件目前不会被智能体处理。
- 消息拆分较简单 ——长回复按字符边界拆分,而非在自然段落处断开。
这些问题已知并已列入后续改进计划。
使用技巧
- Socket Mode 意味着你无需暴露端口或设置 ngrok。连接仅为出站方向,对于个人使用更简单也更安全。
- 如果机器人停止响应,请检查两个令牌是否有效。App-Level Token 不会过期,但 Bot Token 在重新安装应用时可能会被撤销。
- 部分 Slack 工作区有管理策略限制可安装的应用。如果遇到权限问题,你可能需要工作区管理员的审批。
- 注册频道前请先将机器人邀请到该频道——Slack 机器人只能读取已被明确添加到的频道中的消息。