跳到内容
BeeuniBeeuni
中文
Esc
↑↓导航↵打开⌘J预览
本页内容

Slack 与频道

将 Slack 连接到项目,并从频道控制会话。

频道用于将聊天平台连接到项目。在已连接的频道中发送消息会启动一个会话。智能体会在同一话题串中回复。

目前支持的频道

Beeuni 目前支持四种频道平台:

  • Slack — 通过 Beeuni 管理的应用一键连接,或使用你自己的机器人令牌。
  • Microsoft Teams — 通过组织管理员同意的 OAuth 连接,或使用你自己的 Azure Bot(实验性功能;可在Settings → Feature flags中启用)。
  • 电子邮件 — 由 AgentMail 提供支持的频道(实验性功能;可在Settings → Feature flags中启用)。
  • 语音 — 实时语音频道(实验性功能;可在Settings → Feature flags中启用)。与 Agent 进行实时语音对话。

只有 Slack 和 Microsoft Teams 可通过 CLI 和控制面板连接。电子邮件和语音需在控制面板中管理。本页介绍 Slack。Teams 遵循相同的会话、身份关联和凭据规则。

频道如何启动会话

Slack 话题串或 Teams 对话中的第一条消息会创建一个会话。即使沙盒停止后又恢复,该话题串仍会保留此会话。

在 Slack 频道中,之后的消息只有在提及机器人时才会发送给会话。未标记机器人的回复是给话题串中其他人的。下次有人提及机器人时,智能体会读取这些回复。在私信中,每条消息都会发送给会话。

一个 Slack 工作区连接到多个项目时,首次提及时会显示项目选择器。

身份关联

在智能体为聊天发送者运行之前,Beeuni 会先将每位发送者关联到一个 Beeuni 账户。在 Slack 中运行 /beeuni login,然后通过链接登录。Teams 也有同样的要求。未关联的发送者会收到关联提示,而不会启动会话。

登录链接只能使用一次,并会在 10 分钟后过期。已连接到一个 Beeuni 账户的 Slack 账户无法再连接到其他账户:请先运行 /beeuni logout。如果你的组织要求双重身份验证,Beeuni 会在连接你之前要求你提供第二重验证信息,聊天操作也会以你用于连接的验证方式运行。

每项操作都以执行者所关联的账户身份运行,并遵循该账户的项目角色。账户所有者和管理员视为项目管理员。

操作 谁有权执行
在新消息或其话题串中提及机器人 有权访问该项目的已关联账户,且须遵守频道策略
停止一次运行 发送了当前回复所针对消息的人,或已获准加入该会话且仍可使用此项目的任何人
更改频道的项目、智能体、模型或策略 项目管理员;在与机器人的私信中,任何项目成员均可
处理审核项 项目管理员
批准或拒绝连接器调用 项目管理员,或启动会话的人
批准某人加入 owner_approval 话题串 会话所有者
link-bot 项目管理员

凭据存放位置

已连接频道的机器人令牌是连接器范围的密钥。它不会显示在项目的 Secrets 页面中。Beeuni 绝不会将它注入沙盒。智能体发送或读取聊天消息时,Beeuni 会在服务器端解析该令牌。

连接 Slack

开始连接

在 CLI 中运行:

beeuni channels connect

在配置了共享 Slack 应用的主机上(例如 Beeuni Cloud),此命令会显示一键安装链接。打开链接并选择工作区。点击 Allow。添加 --wait,让命令持续轮询,直到安装完成。

也可以在控制面板中打开项目的 Channels 页面,然后在那里连接 Slack。使用的是相同的安装流程。

使用自己的 Slack 应用

若要使用自己的 Slack 应用,请运行 beeuni channels manifest 以输出应用清单。根据该清单,在 api.slack.com/apps 创建应用。将应用安装到工作区。然后运行:

beeuni channels connect --manual --bot-token xoxb-... --signing-secret ...

检查连接

beeuni channels status

运行 beeuni channels disconnect 以移除连接。所有标志请参阅 CLI 参考。

连接 Slack 后,Beeuni 会为你在 beeuni.yaml 添加一条 channel 连接器条目。你无需手动编写此条目。

使用 Slack

在机器人已加入的任意频道中提及机器人并附上任务,或打开一条私信。话题串会按上述说明保留会话。在频道话题串中再次提及机器人即可继续对话。若只提及机器人但未提供任务,它会提醒你补充任务,而不会启动会话。

智能体可以读取的内容

智能体通过项目的 Slack 连接器读取 Slack(beeuni_slack,或沙盒中的 slack 命令)。连接到同一 Slack 工作区的每个项目都使用同一个机器人,因此 Beeuni 会将每次读取限制在各项目自己的对话中:

对话 读取权限
连接到此项目的频道或私信 允许
此项目的会话在任意频道中启动或加入的话题串 允许
其他项目的频道、私信或话题串 拒绝
未连接到任何项目的对话 仅当工作区尚未连接其他项目时允许

读取被拒绝时,403 会返回原因 conversation_not_in_project,并显示包含对话名称的消息。若要读取尚未连接到任何项目的对话,请先连接:在其中运行 /beeuni switch,然后选择此项目。

  • 频道历史记录不会包含其他项目话题串中的消息。
  • get_history 和 get_thread 会为每条作者身份可由 Slack 确认的消息添加 user_name,并显示在 user ID 旁边。每次读取最多标注 25 人;Slack 在 2 秒内未返回姓名的用户会被略过。
  • list_channels 会列出所有公开频道,以及智能体可读取的私密频道和私信。
  • channel_info 会对任何公开频道作答。私密频道或私信遵循上表规则。
  • 当文件分享在智能体可读取的对话或此项目的话题串中时,file_info 会作答。slack download 遵循相同规则:如果文件只分享在其他项目的对话中,则会对 403 作答。下载大小上限为 50 MB,超出时会对 413 作答。
  • search_messages 只会在工作区未连接其他项目时运行,因为搜索无法限制在某个项目的对话范围内。
  • list_users、user_info 和 auth_test 会读取工作区目录,不受限制。

写入操作遵循下文的独立规则。

智能体可以发布的内容

发布消息、发送文件、编辑、删除、添加反应、加入频道和绑定话题串都遵循同一规则:智能体绝不会在其他项目的频道或话题串中操作。

目标 写入权限
此项目的频道,或其会话启动或加入的话题串 允许
未连接到任何项目的频道 允许。新消息会在此项目中启动一个话题串,因此提及机器人的回复会回到该会话
与某人的私信 允许,即使该人与机器人的私信正在运行其他项目也允许
其他项目的频道或群组私信 拒绝
任意对话中属于其他项目的话题串 拒绝:无法回复、编辑、删除或添加反应

写入被拒绝时,403 会返回原因 conversation_not_in_project,并显示包含对话名称的消息。slack send --file 和 slack bind-thread 遵循相同规则。

channel 必须是对话 ID 或用户 ID,例如 C0123ABCD 或 U0123ABCD,而不是频道名称。Slack 会按名称发布消息,而名称无法通过规则检查。如果 Slack 最终将消息发布到已检查的对话以外的位置,Beeuni 会删除该消息并拒绝发布。

若要在由其他项目运行的频道中发布消息,请在其中运行 /beeuni switch 并选择此项目,或从那个项目发布。

使用斜杠命令控制会话

在 Slack 中将这些命令作为 /beeuni <command> 输入,或在私信中作为纯文本输入。斜杠命令无法在 Assistant 私信面板中运行,因此 Beeuni 会在其中解析相同的纯文本内容。

命令 功能
login、logout 关联或取消关联你的 Slack 身份
switch、unbind 重新绑定或解除此频道与其项目的绑定
projects 列出你可以绑定到的项目
sessions 列出此工作区中最近启动的会话
whoami 显示频道面板:项目、智能体、模型、策略和你已关联的身份
models 为此频道选择模型 — 请参阅模型和密钥
agent <name>、model <id> 设置此频道使用的智能体或模型
policy <mode> 设置谁可以在此处启动会话
help 列出所有命令

policy 接受 project_open(默认值 — 任何提及机器人的项目成员都会启动会话)、owner_approval 或 owner_only。这是针对单个频道的资源级设置,不是角色。它不会授予角色判定所拒绝的任何权限 — 请参阅账户与访问权限。

模型和密钥

/beeuni models 会列出你可以在此处运行的所有模型,与网页选择器相同:Beeuni 模型,以及通过提供商 API 密钥或 ChatGPT 订阅使用的模型。每个模型都会注明付费方式。列表较长时,你可以在单个选择框中输入搜索。选择一个模型,或输入 /beeuni model <id>;/beeuni model default 会恢复为项目默认值。

哪些密钥可用取决于对话类型:

  • 与机器人的私信 — 你自己的密钥和 ChatGPT 订阅,以及与项目共享的密钥。该会话仅你可见。
  • 频道或群组私信 — 仅限与整个项目共享的密钥。若要使用基于个人密钥运行的模型,请改在私信中选择。

基于密钥运行的模型会使用你可使用的该提供商的所有密钥,并在触发速率限制时轮换密钥。频道的模型会用于启动每个新话题串;话题串会继续使用启动时的模型。如果某个话题串无法再运行原模型,则会为该条消息替换模型,而不会直接失败。请参阅提供商密钥与成员访问权限。

包含图像的后续消息会使用能够读取图像的模型运行。如果可用模型都无法读取图像,提示词中会告知智能体这一点:它会说明自己无法查看图像,并要求提供文字,而不是猜测。

频道和人员名称

Slack 会发送 ID,例如 C0123ABCD 和 U0123ABCD。Beeuni 会显示 Slack 用户看到的名称,并在操作时使用 ID。

位置 显示内容
Channels 页面、beeuni channels bindings 公开或私密频道的 #channel、私信的联系人、群组私信的成员
会话中的 Slack 消息 发送者的姓名和 #channel
会话中的 slack send 回复 #channel,或私信中的联系人
会话标题 按 Slack 显示方式呈现提及:@Beeuni,而非 <@U0123ABCD>
智能体的提示词 ID 旁的名称:Sam Rivera (U0123ABCD)、#general (C0123ABCD)
智能体在 Slack 中的计划步骤 人员显示为 @Sam Rivera,频道显示为 #general。步骤不会通知任何人
Slack 中的审批卡片 频道参数显示为频道链接,名称取决于你自己的访问权限。用户参数显示为该用户的姓名

Slack 无法找到的频道会显示为 Unavailable channel,并保留其 ID。如果频道已被删除或机器人已被移除,就会发生这种情况。Slack 在 2 秒内未返回的名称会从该消息中略去。提示词将只包含 ID,而且该轮处理不会等待。

审批

智能体需要人工决定才能继续时,会提交一个审核项。如果会话是从此话题串启动的,决定事项会以卡片形式显示在这里,其中包含标题、摘要、风险等级以及 Approve、Request changes 和 Deny。

Request changes 会打开一个输入框,让你填写需要更改的内容。你输入的内容会随决定一并保存并传给智能体,因此智能体无需再次询问。此项可选 — 留空发送后,智能体会被告知需要询问。批准和拒绝仍只需点击一次。

处理审核项需要关联的 Beeuni 账户具有项目写入权限。

停止运行

智能体工作时,其实时消息上会显示 Stop 按钮。此按钮会在运行时终止运行,而不只是停止消息显示 — 如果运行仍处于打开状态,它会吞掉话题串中的下一条消息,而不是回复。

发送了当前回复所针对消息的人可以停止运行;已获准加入该会话且仍可使用此项目的人也可以停止。频道中的旁观者无法停止运行;他们会收到一条私密提示,告知其没有权限。

无法使用的功能

  • 斜杠命令无法在 Assistant 私信面板中触发。请改为在其中输入纯文本 /beeuni <command>。
  • 目前不支持 Telegram 等其他聊天平台作为频道。只有 Slack 和 Microsoft Teams 可通过 CLI 和控制面板连接;电子邮件和语音需通过控制面板连接。

这个页面有帮助吗?