Slack Bot

以 Markdown 格式查看

AIephant OpenCore Bot 允许已批准的 Slack 用户通过 OpenCore Slack listener 提问。Slack app、token、频道成员关系与回复策略仍属于管理员负责的边界。

仅当部署正在运行 Slack bot listener,并且管理员可以访问 Slack Bots 设置时,此能力才可用。在 OpenCore 中创建记录不会创建 Slack app,也不会启动已被部署禁用的 listener。

可用性与前置条件

要求必要原因检查
OpenCore 管理员访问权限Bot 与频道配置端点需要完整 Admin Panel 访问权限。确认预期运维人员可以打开 Admin Panel 中的 Slack Bots
正在运行的 Slack bot listenerSocket Mode 事件由独立 listener 进程消费。确认部署 profile 已启用 Slack bot workload,并且其日志显示已建立 socket 连接。
Slack app 管理权限必须使用当前 listener 所需的事件与 scope 安装 app。使用已批准的 Slack workspace,并安排可以在 scope 变化后重新安装 app 的所有者。
已批准的数据边界频道回复可能暴露公开知识,而私密回复可以使用用户已获授权的内容。发布前确定频道、Agent 或文档集范围以及回复可见性。

通过 manifest 创建 Slack app

OpenCore 表单只接收 token,不会生成 Slack app manifest。请在 Slack 中选择从 app manifest 创建,审查请求的 scope,再安装到已批准 workspace。以下模板匹配当前 listener 的 Socket Mode 事件和 API 调用;管理员仍须按 Slack 当前要求复核,并移除未使用的可选能力。

可选 slash command 与 User Token scope 分别用于相应 listener 路径和增强的私有频道搜索路径。如果部署不使用这些能力,只能在测试变更后的工作流后再移除。

1display_information:
2 name: AIephant OpenCore Bot
3features:
4 bot_user:
5 display_name: AIephant OpenCore Bot
6 always_online: true
7 slash_commands:
8 - command: /opencore
9 description: Ask AIephant OpenCore Bot
10 should_escape: false
11oauth_config:
12 scopes:
13 bot:
14 - app_mentions:read
15 - channels:history
16 - channels:read
17 - chat:write
18 - commands
19 - groups:history
20 - groups:read
21 - im:history
22 - im:read
23 - reactions:write
24 - usergroups:read
25 - users:read
26 - users:read.email
27 user:
28 - channels:history
29 - channels:read
30 - groups:history
31 - groups:read
32 - im:history
33 - im:read
34 - mpim:history
35 - mpim:read
36 - search:read
37 - users.profile:read
38 - users:read
39settings:
40 event_subscriptions:
41 bot_events:
42 - app_mention
43 - message.channels
44 - message.groups
45 - message.im
46 interactivity:
47 is_enabled: true
48 socket_mode_enabled: true

在 Slack 中创建具备 Socket Mode 连接 scope 的 app-level token;只要 Slack 提示 scope 或事件变化需要重新安装,就重新安装 app。将 AIephant OpenCore Bot 邀请到它应接收消息的每个私有或公开频道;scope 不会授予频道成员关系。

在 OpenCore 中添加 token

打开 Admin Panel → Slack Bots → New Slack Bot,并使用精确可见名称 AIephant OpenCore Bot。后端会在保存前通过 Slack 验证每个已提供 token。

字段是否必填来源与边界
NameAdmin Panel 本地标签。请保持为 AIephant OpenCore Bot,确保可见身份一致。
Slack Bot Token已安装 app 的 Bot OAuth token,通常以 xoxb- 开头,用于 Slack Web API 调用。
Slack App TokenSocket Mode 的 app-level token,通常以 xapp- 开头,用于建立 WebSocket 连接。
Slack User Tokenxoxp- 开头的 User OAuth token。它只用于受支持的增强 Slack 搜索路径,并会扩大该凭据可访问的数据范围。

只在密码字段和已批准的密钥管理流程中保存 token。不要把它们粘贴到 manifest、聊天、工单、日志、截图或源代码控制中。

频道与回复边界

边界当前行为管理员操作
默认配置应用于所有频道与私信;新建 Bot 默认在私信以外仅被标记时回复。保持默认配置范围收敛,或禁用默认配置并添加明确的频道配置。
显式频道配置匹配配置的 Slack 频道名称,并可选择公开知识、文档集或 Agent。输入不带 # 的频道名称,并确认 Bot 已加入频道。
事件与 thread 处理处理 app mention、受支持的 message 事件、私信和配置的 slash command。未标记的非根 thread 回复会被忽略;mention 和私信可以在 thread 中继续。分别测试根消息、mention、私信与 thread 回复。
Bot 消息自身消息与 Slack 系统 Bot 会被忽略。其他 Bot 消息也会被忽略,除非直接标记或启用 Respond to Bot messages除非已测试循环和成本控制,否则保持 Bot 对 Bot 回复关闭。
回复可见性没有用户/群组 allowlist 时,回复是频道消息。allowlist 同时限制调用者,并以 ephemeral 方式向解析成功的成员发送回复;私密回复选项只面向请求用户。将无法解析的 allowlist 视为 fail-closed 条件,并用代表性用户验证可见性。

禁用默认配置后,Bot 不再回复私信,只保留显式配置的频道。问号筛选、仅标记模式、回复有效性检查、选定知识来源与每频道 disabled 状态还可能进一步抑制回复。

知识与隐私

公开频道回复只使用选定范围内的公开知识。包含自动同步权限感知连接器的文档集或搜索 Agent 不能用于普通频道可见回复,因为答案可能暴露私有内容。

当选定搜索路径支持时,私密 ephemeral 回复可以使用请求用户已获授权的内容。Slack 用户仍可复制或分享回复,因此 ephemeral 回复不能替代来源授权或公司共享政策。

更新、启停与移除

更改 Bot 或 App token 后,listener reconciliation loop 会关闭已有 socket client,并使用新的 token 对重新连接。重命名本地记录不会重命名 Slack app;请单独更新 Slack app display name,并将两处名称都保持为 AIephant OpenCore Bot

关闭 Enabled 后,该 Bot 记录收到的请求会被忽略。重新开启后,listener 下次读取记录时恢复处理。删除记录并不保证清理 socket:只有租户已经没有任何 Bot 记录时,reconciliation 才会关闭全部 client;如果仍有其他 Bot,被删除 Bot 的遗留 socket 不会被显式移除。删除前先禁用该 Bot,并撤销该记录关联的全部 Slack 端 token——Bot、App,以及已配置的 User token;需要确保清除内存状态时重启 listener。对于仍要保留的 Bot,token rotation 仍是安全路径。

验证

  1. 确认 Socket Mode 已启用、app 已安装,并且 listener 在不记录 token 值的情况下建立连接。
  2. 在已批准频道中标记 AIephant OpenCore Bot,确认只产生一条 thread 回复。
  3. 发送私信并验证其遵循默认配置;禁用默认配置后,确认私信不再触发回复。
  4. 分别测试未配置频道、已配置频道、非成员、allowlist 成员、Bot 消息和私密回复。
  5. 轮换 App 与 Bot token,在 OpenCore 中更新后先确认 listener 重连,再撤销旧 token。

故障排查

现象可能的边界检查
创建或更新时 token 被拒绝token 无效、已撤销或类型错误。重新生成相应 Slack token,并确认 Bot、App 与可选 User 字段没有互换。
Socket 始终无法连接listener workload 不存在、Socket Mode 已关闭,或 App token 无法打开连接。检查部署 workload 状态与 Slack Socket Mode 配置。
mention 有效,但普通消息无回复仅标记模式、频道成员关系、事件订阅或频道配置正在限制输入。对比 manifest 事件与 Admin Panel 配置;Slack 端变化后重新安装 app。
回复到达了错误受众默认/频道配置、allowlist 解析或 ephemeral 模式与预期不符。停止发布,并使用非敏感内容重新执行可见性测试。

相关页面