跳转到内容

将 Slack 桥接到你的工作区

学完本教程,你将拥有:

  • 一个为你的工作区创建的 Slack 应用,权限和事件都已设置妥当
  • Slack 与 Control Center 之间的一条实时连接
  • 你自己的 Slack 账户已关联到你的 Control Center 用户
  • 一个在 Slack 话题中回答你的智能体,以及一张由斜杠命令登记的工单

先决条件:

  • 你的第一个工作区 与 派发你的第一个智能体 已完成——没有智能体的工作区能收到 Slack 消息,却没有人来回答它
  • 工作区的 CEO 智能体已在 设置 → 工作区 → 智能体中设置好适配器和模型。桥接唤醒的是 CEO,而不是你在上一个教程中配置的智能体;没有适配器的智能体会在内置循环上运行,并使用 Anthropic 的默认模型。
  • 在 Control Center 工作区中拥有 owner 或 admin 角色(连接聊天应用代表的是整个工作区)
  • 在你的 Slack 工作区中创建和安装应用的权限

这里不需要公网地址、隧道或入站端口。Control Center 会通过 Socket Mode 向 Slack 主动外连,因此这在 NAT 之后的笔记本电脑上也能用。

这是唯一需要你手动获取的密钥。有了它,Control Center 才能替你创建、并在之后编辑这个应用。

  1. 打开 api.slack.com/apps
  2. 滚动到页面底部的应用配置 token 部分
  3. 为你的 Slack 工作区生成一对 token
  4. 复制 refresh token——它以 xoxe- 开头
  1. 在 Control Center 中,前往 设置 → 工作区 → 通用,找到 聊天桥接 卡片
  2. 在 Slack 区块上,点击 为我创建应用
  3. 粘贴应用配置 token
  4. 查看机器人将呈现的样子:
    • 应用名称:Slack 中该应用的显示名,例如 Control Center · Acme
    • 机器人名称:成员在 @ 之后输入的内容,例如 control-center
    • 简短描述与机器人对自己能力的介绍
    • 斜杠命令:默认为 cc,因此命令是 /cc
    • 私信:保持开启,成员就能私信机器人
  5. 点击 创建应用

Control Center 会组装出完整的应用定义——开启 Socket Mode、机器人所需的权限范围和事件订阅、斜杠命令、Messages 标签页——并在 Slack 中创建它。

第 3 步:完成只有 Slack 能做的两个步骤

标题为“第 3 步:完成只有 Slack 能做的两个步骤”的部分

Slack 没有用于生成应用级 token 或安装应用的 API,所以对话框会把这两件事都以链接的形式交给你:

  1. 生成应用级 token——打开 Basic Information → App-Level Tokens。创建一个具有 connections:write 权限范围的 token 并复制它。它以 xapp- 开头
  2. 安装应用——打开 Install App。安装到你的工作区,然后复制 Bot User OAuth Token。它以 xoxb- 开头

把这两个值留到下一步使用。

  1. 回到对话框中,点击 粘贴凭据
  2. 输入 机器人 token(xoxb-…)和 应用级 token(xapp-…)
  3. 将 应用配置 token 留空——第 1 步中的那个已经存好了(Slack 轮换了它,Control Center 保存了新的那个)
  4. 点击 连接

Control Center 会先向 Slack 验证机器人 token,然后才存储任何内容,接着打开套接字。这一行现在会显示机器人的名称和你的 Slack 工作区名称,并带有一个 已连接 标签。

连接让机器人可以被触达;关联则让机器人能认出_你_。在你的 Slack 身份被关联之前,机器人不会对你的消息采取行动——它绝不会把消息归属到安装应用的人身上。

关联是个人行为,因此它与整个工作区共享的连接位于不同的页面上。

  1. 前往 设置 → 工作区 → 个人资料与身份,找到 已关联的聊天账户 卡片
  2. 点击 关联我的 Slack 账户
  3. 复制它显示的命令,例如 /cc link K7M2QP
  4. 在 Slack 中,通过私信把该命令发送给机器人
  5. 机器人会回答“已关联到 …”

该代码只能使用一次,并在 15 分钟后过期。如果你的 Slack 邮箱与某个已经是此工作区成员的 Control Center 用户匹配,那么你第一次与桥接对话时它就会自动完成关联,你可以跳过这一步。

如果在这之前你就提及了机器人,它会拒绝并说明原因。三种拒绝各不相同,因此请看清你遇到的是哪一种:

  • 未关联的发送者:机器人会告诉你如何关联。请回到这一步。
  • 已关联,但不是此工作区的成员:请让管理员邀请你。
  • 角色为只读的成员(viewer 或 guest):机器人不会代表你启动工作。
  1. 在 Slack 中,把机器人邀请进某个频道:/invite @control-center

  2. 用一个真实请求提及它:

    @control-center 总结一下 api 仓库上所有打开的 PR

桥接会:

  1. 为该 Slack 话题创建一个 Control Center 空间,以 Slack 频道名和你的请求命名
  2. 唤醒工作区的入口智能体(有 CEO 智能体时就是它,否则就是第一个智能体)
  3. 在智能体的回答被写出的同时,把它流式传回该 Slack 话题

在同一个 Slack 话题中回复即可继续——无需再次提及,因为该 Slack 话题现在已被桥接。你也可以不用频道,改为私信机器人;每个私信会话都会驱动它自己的 Control Center 空间,并带有一个标题,以及在智能体工作期间显示“正在思考…”的状态行。

流式输出需要 Slack 的流式 API,而并非每个套餐都有。如果你的应用被它拒绝,桥接会在这条连接的整个生命周期内不再尝试,改为把每条回复作为单条消息发送,并且 聊天桥接 卡片会显示“此 Slack 应用未开启实时流式传输——回复会作为一条消息送达。”其他一切照旧。

/cc ticket Fix the flaky login test | It fails on CI about once a day.

机器人会用它所登记工单的工单键作答。该工单是一张普通的本地 Control Center 工单,由你报告,随时可以分配给某个智能体。/cc help 会列出该命令能做的一切。

你从 Control Center 创建了一个 Slack 应用,通过出站套接字连接了它,把你的 Slack 身份关联到了你的 Control Center 用户,并从一条 Slack 话题驱动了一个智能体。Slack 中发生的一切在 Control Center 里同样存在:Slack 话题是一个空间,回复是一份转录,工单就是工单。

下一步: 设置 Slack 集成 介绍了手动操作路径、轮换 token 和故障排查。要了解其背后的模型,请阅读 聊天桥接。