技能
消息通讯 官方

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 指南):

  1. 创建应用——在 api.slack.com 创建并启用 Socket Mode。
  2. 生成 App-Level Tokenxapp-...),授予 connections:write 权限。这是启用 Socket Mode 所必需的。
  3. 订阅机器人事件message.channelsmessage.groupsmessage.im,使机器人能够接收来自公共频道、私有频道和私信的消息。
  4. 配置 OAuth 权限chat:writechannels:historygroups:historyim:historychannels:readgroups:readusers:read
  5. 将应用安装到工作区以获取 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 机器人只能读取已被明确添加到的频道中的消息。