- 知识库Bot-API v1.0系列源码确认文档推导
- 05-use-cases/OCTO典型应用场景-v1.0场景二扩展
- 价值卡片-金融-v1.0
案例2:金融机构——智能客服与业务Bot自动化
⚠️ 文档声明(使用前必读)
1. 本案例为能力推导型案例(confidence: medium),基于知识库 Bot-API v1.0 系列源码确认级文档推导编写,非客户实证案例。售前使用时不得表述为"某客户已落地"。
2. 客户画像为虚构合成("某区域性金融机构"),不指向任何具体客户;如需对外输出,请按 `10-templates/客户案例模板.md` 脱敏规则处理。
3. 文中所有 OCTO 能力描述以知识库 active/review 级源码确认文档为准;全部性能相关数字标注"需PoC实测",不构成承诺口径。
4. 🔴 标记为硬口径红线,来源于《售前红线卡-v0.1》《权限模型与鉴权体系 v0.1》《Bot-API快速入门 v1.0》等源码确认文档,任何售前沟通不得违背。
5. AI 能力边界:OCTO 提供的是 Bot 运行平台与消息/卡片/事件底座,不内置智能客服成品、不内置 NLP 意图识别。FAQ 智能问答 = 集成方在 Bot 服务端对接行内 LLM API + 知识库检索(RAG)自行实现——"能构建" ≠ "点一下就有"。(来源:OCTO典型应用场景 v1.0 PS-07 纠偏)
1. 客户画像
本章为虚构合成画像,用于方案推导,不指名任何具体客户。
| 维度 |
画像描述 |
| 机构类型 |
区域性城商行 / 农商行 / 省级保险公司(二选一推导,方案通用) |
| 客服中心规模 |
数十至数百坐席(人工客服坐席 + 运营 + 质检,🔴 PS-06:经验口径,不得作为承诺报出) |
| 日均咨询量 |
大量咨询(含 APP 在线咨询、电话、微信渠道合计,🔴 PS-06:具体数字以客户实测为准) |
| 咨询构成 |
大部分为重复性、标准流程类咨询(余额查询、卡片挂失、保单查询、理赔进度、手续费规则等);小部分为复杂/个性化问题 |
| 合规要求 |
金融监管强合规:数据必须本地化存储(不出内网)、对话全程留痕、操作可追溯可审计;受行内信息安全部门与监管检查约束 |
| 存量系统 |
已有 CRM(客户信息)、工单系统(客服工单流转)、核心业务系统;老版本客服软件(无 AI 接口,封闭架构,短期不替换) |
| 渠道现状 |
电话客服、APP 在线客服、微信公众号三渠道各自独立知识库、独立排班 |
| IT 能力 |
有行内研发团队与合格集成商;有行内统一身份认证(IAM/4A);数据不出内网要求下,AI 能力需对接行内 LLM 推理服务或已完成合规审批的 LLM API |
| 对 OCTO 的核心诉求 |
在不动存量客服系统的前提下,私有化构建"FAQ 自动接待 + 业务 Bot + 人工兜底"三层客服体系,统一知识底座,满足留痕审计 |
2. 痛点分析
2.1 痛点总览
| # |
痛点 |
具体表现 |
业务后果 |
| ① |
客服效率低,人工成本高 |
重复性咨询占比高(查询类/流程类),每条都占用人工坐席;高峰期排队严重,7×24 覆盖困难 |
人力成本持续攀升;夜间/高峰服务质量不稳定 |
| ② |
现有客服系统封闭,无法集成 AI |
老版本客服软件无 AI 接口、无开放 API,AI 能力"接不进去";替换整套系统成本高、周期长、风险大 |
AI 转型被存量系统锁死 |
| ③ |
多渠道割裂 |
电话 / APP / 微信三渠道各自独立知识库,口径不一致;坐席要背三套答案;知识更新三处维护 |
答案口径不统一引发投诉;知识运营成本×3 |
| ④ |
合规审计要求 |
监管要求对话留痕、操作可追溯;现有渠道数据分散在三个系统,审计取证困难 |
监管检查风险;纠纷时无法快速举证 |
2.2 痛点 → OCTO 能力映射表
每个痛点对应一组已源码确认的 OCTO 能力(来源标注于表内),映射不到的一律如实标注"需集成方实现"或"超出 OCTO 边界"。
痛点①:客服效率低人工成本高 → Bot 自动接待
| 客户需求 |
OCTO 能力(源码确认) |
说明 |
来源 |
| 7×24 自动应答 |
User Bot(bf_ token)通过 POST /v1/bot/sendMessage 发送消息;发私信(Person 频道,channel_type=1) |
FAQ 接待 Bot 以 DM 私聊模式 7×24 接待,无需排队 |
Bot-API快速入门 v1.0 §1.1/§6.4 |
| 智能问答 |
平台底座:消息通道 + 交互卡片 + 事件回调;问答引擎由集成方在 Bot 服务端实现(对接行内 LLM API + 知识库 RAG) |
🔴 OCTO 不内置 NLP/智能客服成品,此为边界而非能力缺口 |
场景文档 PS-07 纠偏 |
| 富交互体验 |
互动卡片 type=17(Adaptive Cards):octo/v1 展示卡 + octo/v2 交互卡(输入元素 + Action.Submit 回调);动态改卡(POST /v1/bot/message/edit + card_seq CAS) |
答案卡片化、评价卡片化、状态卡片可动态更新(详见 §4.3) |
消息类型与发送 v1.0 §3.12;错误码与排障 v1.0 §三 |
| 转人工兜底 |
建群 / Thread 全套管理(建/删/加入/退出/归档);@群成员 / @所有人(内联格式 @[uid:displayName]、mention.all=1) |
会话升级时自动建坐席协作 Thread 并 @坐席 |
Bot-API快速入门 v1.0 §6.3/§6.4 |
痛点②:客服系统封闭无法集成 AI → 开放 Bot API 旁路并行
| 客户需求 |
OCTO 能力(源码确认) |
说明 |
来源 |
| 开放 API 面 |
完整 Bot API(/v1/bot/* REST),Bearer bf_ token 鉴权;sendMessage / message/edit / events / 群组 / Thread / 文件 5 端点族 |
全量开放 API 见《Bot-API快速入门 v1.0》§6 端点清单 |
Bot-API快速入门 v1.0 §6 |
| 事件回调机制 |
HTTP 长轮询 POST /v1/bot/events(wait ≤30s,Redis sorted-set + BLPOP;5 个事件写入源:DM/@、card_action、文档评论@Bot、bot_setting 等);at-least-once + cursor/ACK |
🔴 不是 WebSocket,不是 Bot 入站 Webhook——方案与沟通中禁止错误表述 |
Bot-API快速入门 v1.0 三大易错点①;Webhook与事件订阅 v1.0 §1 |
| 不动存量系统 |
OCTO 旁路部署(Docker/K8s 私有化),存量客服软件继续运行;两系统通过工单/CRM API 桥接 |
AI 能力以"增量"方式注入,不替换、不停机 |
生产部署形态文档;场景二 §2.5 |
| 系统集成 |
群入站 Webhook(外部系统→群消息,Bot 可管理);平台级出站 Webhook 端点(/v1/webhook、/v2/webhook)存在但订阅模型待确认 |
工单状态推送到坐席群用群入站 Webhook;出站 Webhook ⚠️ 不作承诺口径(P1-06 待确认) |
Webhook与事件订阅 v1.0 §4;open-questions P1-06 |
痛点③:多渠道割裂 → 统一 Bot 运行时 + 统一知识底座
| 客户需求 |
OCTO 能力(源码确认) |
说明 |
来源 |
| 统一 Bot 后端 |
Bot API 与 Bot 身份渠道无关:同一 Bot 服务端可服务 OCTO 客户端(Web/PC/iOS/Android)内的一切会话 |
渠道统一在"Bot 服务端编排层"实现,OCTO 是运行底座 |
Bot-API快速入门 v1.0 §1 |
| 统一知识库 |
Docs 文档协同(Tiptap+Yjs 实时协同,opt-in profile)、Search 全文搜索(Kafka+OpenSearch,opt-in)可作行内知识库载体 |
知识口径收敛到单一知识库,三渠道 Bot 服务端统一引用;Docs/Search 为可选模块按需启用 |
场景一 §1.3;模块文档 v0.3 |
| 外部渠道适配 |
🔴 OCTO 不内置微信公众号 / 电话 CTI 渠道适配器——微信/电话渠道需集成商开发适配层,将外部渠道消息桥接到 Bot 服务端(经 OCTO Bot API 收发) |
诚实边界:OCTO 客户端覆盖 Web/iOS/Android/PC;微信/PSTN 是外部渠道 |
场景二 §2.8;客户端支持矩阵 |
| 坐席知识辅助 |
群聊 @Bot 触发事件;语音转写(opt-in speech profile);Bot OBO 搜索(POST /v1/botfather/messages/search,受 grant+scope 校验) |
坐席在协作群 @知识 Bot 获取推荐话术;可搜索历史会话沉淀 |
Bot-API快速入门 v1.0 §1.1/§6.6 |
痛点④:合规审计要求 → 私有化 + 全量留痕
| 客户需求 |
OCTO 能力(源码确认) |
说明 |
来源 |
| 数据本地化 |
全栈私有化部署(Docker Compose / K8s,数据落行内 MySQL/MinIO),数据不出内网 |
消息/附件/文件全量存储于行内基础设施 |
生产部署形态总览;售前红线卡 G7 |
| 对话留痕 |
消息持久化于 MySQL(octo 库);Bot 可经 POST /v1/bot/messages/sync 补拉历史消息 |
全渠道对话(DM/群/Thread)统一落库,替代三系统分散取证 |
Bot-API概览 v0.4;Webhook与事件订阅 v1.0 §1.5 |
| 操作可追溯 |
card_action 事件含 operator_uid(操作人)、acted_at(时间)、inputs(提交内容);事件 at-least-once 投递 + event_id 可去重对账 |
谁在何时提交了什么表单/点了什么按钮,全程可回溯 |
Webhook与事件订阅 v1.0 §2.6 |
| 审计访问控制 |
系统角色 dashboardReader(看板只读)可授予审计/质检人员;Space 三档角色(member/admin/owner)+ 群三档角色;SSO(OIDC)对接行内 IAM |
审计岗只读看板;🔴 无自定义 RBAC(见 §8 硬口径#10),岗位差异化权限在业务系统侧实现 |
权限模型与鉴权体系 §2.1/§5 |
| 合规报表导出 |
⚠️ OCTO 无内置合规报表/审计导出模块(且删号无 GDPR 导出功能)——审计导出需基于数据库按行内合规要求定制开发 |
如实告知边界,定制工作量纳入实施方案 |
场景一 §1.8 硬口径#10 |
3. OCTO 解决方案概览
3.1 三层 Bot 编排架构(文字版架构图)
🔴 关键架构事实:OCTO 无 Bot 间直接 API 互调(无 bot-to-bot RPC,Q9 BA-05 源码确认),Bot 间交互只能靠群消息 fan-out。因此三层编排在"客服中台 Bot 服务"内实现(服务端统一路由/升级/降级),OCTO 提供消息、卡片、事件底座——这是本方案与"OCTO 内置智能客服编排"的本质区别,售前必须讲清。
客户触点
├─ APP 内嵌 OCTO 客户端(Web/PC/iOS/Android,原生支持)
├─ 微信公众号/小程序 ──┐
└─ 电话渠道(CTI) ──┴─► 渠道适配层(集成商开发,OCTO 不内置)
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 第一层:FAQ 接待 Bot(bf_ Token A)——7×24 自助闭环 │
│ · DM 私聊接待(channel_type=1) │
│ · Bot 服务端调行内 LLM + 统一知识库 RAG 生成答案 │
│ · 文本/展示卡(octo/v1)回复 + 满意度评价卡(octo/v2) │
│ · 解决 → 自助闭环;未解决/客户要求 → 升级第二层 │
├──────────────────────────────────────────────────────────────┤
│ 第二层:专业业务 Bot(bf_ Token B)——业务表单与工单流转 │
│ · 业务办理表单卡(octo/v2:Input.Text + Input.ChoiceSet) │
│ · 信息确认卡(FactSet + 确认/取消 Action.Submit) │
│ · card_action 回调 → 客服中台 → 工单系统 REST API 建单 │
│ · 可自助 → 表单+确认+回执;高风险/复杂 → 升级第三层 │
├──────────────────────────────────────────────────────────────┤
│ 第三层:人工坐席兜底(坐席协作群 / Thread) │
│ · 自动建协作 Thread + @坐席(@[uid:姓名] / mention.all=1) │
│ · CRM 客户信息卡片带出(脱敏展示卡) │
│ · 坐席知识辅助 Bot(@指令 → LLM+知识库 → 推荐话术卡) │
│ · 办结 → 回发满意度评价卡 → 会话归档 │
├──────────────────────────────────────────────────────────────┤
│ 编排层:客服中台 Bot 服务(集成方开发) │
│ · 持多张 bf_ token,每 token 独立长轮询 goroutine │
│ · 升级/降级/路由逻辑在服务端实现(Bot 间无 RPC,见上) │
│ · 幂等去重(event_id)/ 429 指数退避 / 审计日志落库 │
└──────────────────────────────────────────────────────────────┘
│ 长轮询收事件 / sendMessage+卡片发消息 / Webhook 通知
▼
OCTO 平台(行内私有化部署)
· octo-server(Bot API 全路由 + 卡片渲染 + 限流)
· WuKongIM(IM 底座)+ MySQL 8(消息/用户/群数据落库留痕)
· Redis 7(bot_task 队列/幂等/限流)+ MinIO(附件存储)
· nginx(单端口入口 + TLS 终结)+ octo-web / octo-admin
· 可选 profile:docs(统一知识库)/ search / speech / summary
│ 内网东西向 REST(经行内 API 网关)
▼
行内系统:LLM 推理服务 / 统一知识库 / CRM / 工单系统 / 核心业务 / BI 看板
| 要点 |
说明 |
依据 |
| 三层是逻辑分层,不是三个孤立系统 |
第一/二层 Bot 与第三层坐席共享同一 OCTO Space,会话上下文随升级链路带下(由客服中台维护会话状态) |
方案设计 |
| 升级链路 |
FAQ 未解决 → 业务 Bot(表单);高风险业务 → 坐席 Thread(@坐席);客户明示"转人工" → 直达第三层 |
方案设计 |
| Bot 身份隔离 |
FAQ Bot / 业务 Bot / 知识辅助 Bot 分别独立 bf_ token,限流按 robotID 分桶隔离(一个 Bot 触发限流不影响其他 Bot) |
错误码与排障 v1.0 §4.1 |
| token 安全 |
bot_token = Bot 全部权限凭证;泄露后攻击者可冒充 Bot 发消息/读事件;泄露处置:BotFather /revoke 重置("Yes, revoke it" 二次确认,旧 token 立即失效) |
Bot-API快速入门 v1.0 §2.3 |
4. 详细设计
4.1 用户旅程
旅程 1:客户咨询 FAQ(自助闭环)
1. 客户在 APP 内嵌 OCTO 入口给 FAQ 接待 Bot 发私信(DM,channel_type=1)
2. 客服中台长轮询收到普通消息事件(POST /v1/bot/events,payload.type=1)
3. Bot 服务端调行内 LLM + 统一知识库 RAG → 生成答案
4. Bot 回复:知识卡片(octo/v1 展示卡:答案 + 依据条款 + 相关问题)
+ 追加满意度评价卡(octo/v2 交互卡,见 §4.3-1)
5. 客户提交评价 → card_action 事件(operator_uid + inputs)
→ Bot 记录 CSAT → 动态改卡(/v1/bot/message/edit + card_seq CAS)
将评价卡更新为"已评价,感谢反馈"状态(防重复提交)
6. 未解决信号(客户回复"转人工"/ 连续 2 次负面反馈)→ 升级第二/三层
- DM 模式规避待确认项:群聊中不 @Bot 的普通消息是否投递给 Bot 待确认(Webhook与事件订阅 v1.0 §3.3),FAQ Bot 设计为私信模式,事件投递已源码确认(事件源①)。
- 动态改卡防重复:评价提交后用
POST /v1/bot/message/edit + card_seq CAS 乐观锁更新卡片,多次并发编辑不冲突(消息类型与发送 v1.0 §3.12.7)。
- LLM 时延体验:LLM 推理期间可先发
POST /v1/bot/typing 打字指示器(路由已确认,格式待补),再返回答案。
旅程 2:业务办理申请与转人工(挂失场景示例)
1. 客户在 FAQ Bot 选择"卡片挂失" → 升级到业务 Bot
2. 业务 Bot 发送业务办理表单卡(octo/v2,见 §4.3-2:
Input.ChoiceSet 挂失类型 + Input.Text 证件后6位/联系电话 + 提交)
3. 客户提交 → card_action 事件
⚠️ inputs 为用户提交内容,客服中台必须自行校验(不信任表单值原则)
4. 客服中台校验通过 → 调工单系统 REST API 创建工单(内网 API 网关)
5. 业务 Bot 发送信息确认卡(octo/v2,见 §4.3-3:FactSet 工单摘要 + 确认/取消)
6. 客户点"确认无误" → card_action → 工单状态推进 → 动态改卡锁定"已受理"
(卡片 actions 替换为状态 TextBlock,不可再次操作)
7. 高风险分支(正式挂失/大额异动):
客服中台自动创建坐席协作 Thread → @卡业务坐席组
→ 坐席人工核验(电话回拨,联系电话取自表单)
8. 全程留痕:客户消息、卡片消息、card_action(operator_uid/acted_at/inputs)
全量落 OCTO MySQL;工单号关联会话 ID 双向可查
旅程 3:坐席辅助知识推荐(内部效率)
1. 坐席在"卡业务坐席组"群 @知识辅助 Bot:"客户问境外刷卡的每日限额规则"
2. Bot 服务端收到群聊 @Bot 事件(事件源①,channel_type=2)
→ 调行内 LLM + 统一知识库 → 生成推荐话术
3. Bot 回复推荐话术卡(octo/v1 展示卡):
FactSet(标准话术 / 依据条款 / 适用客群 / 最近更新时间)
+ Action.CopyToClipboard(坐席一键复制话术)
+ Action.OpenUrl(跳转知识库原文)
4. 坐席复制话术 → 在自己的客户会话中粘贴回复(人工环节)
5. 可选(启用 speech profile):客户语音咨询自动转写为文字
→ Bot 按文本链路处理
⚠️ 语音转写引擎需行内 ASR 服务(OCTO speech 模块默认外部 API);
🔴 Bot 不能发送语音消息(无 TTS,type=4 Bot 不可发);
音频文件不进对象存储,仅本地 ASR 日志保留 7 天(金融合规需评估该保留策略)
旅程 4:运营数据看板
1. 运营平台定时任务(集成方 cron,🔴非 OCTO 内置 Bot 调度器)
→ 调客服中台数据接口
2. 客服中台汇总(咨询量/自助解决率/转人工率/CSAT/工单积压)
→ Bot 向"客服运营群"发送日报卡片(type=17,octo/v1 展示卡):
TextBlock 标题 + FactSet 核心指标 + Table 分渠道明细
+ Action.OpenUrl 跳转行内 BI 系统深度查看
3. 异常指标(如自助解决率环比跌破阈值)→ 追加一条文本消息
+ @所有人(mention.all=1)提醒运营负责人
4.2 卡片能力规范(先读再用)
三张卡片模板遵守以下源码确认的硬性规范(来源:Bot-API错误码与排障 v1.0 §三、消息类型与发送 v1.0 §3.12、快速入门 v1.0 §5.1.1):
| 规范项 |
值 |
说明 |
| 消息类型 |
type: 17(互动卡片,Adaptive Cards) |
Bot 专属:普通用户 API 绝对拒绝卡片 payload(ErrMessageCardSendForbidden) |
| 版本字段 |
card_version: "1.5" + 卡片内 version: "1.5" |
版本不匹配直接拒绝(ErrCardProfileUnsupported) |
| 硬限制 |
payload ≤ 512 KiB;节点 ≤ 200;嵌套深度 ≤ 16 |
超限报 ErrCardTooLarge / ErrCardTooManyNodes;三张模板均远低于限额 |
| Profile |
展示卡用 octo/v1;交互卡(输入+提交)必须用 octo/v2 |
输入元素(Input.Text/ChoiceSet/Toggle 等)与 Action.Submit 为 v2 专属;v1 仅本地动作 |
| 元素白名单 |
展示:TextBlock/RichTextBlock/Image/ImageSet/Container/ColumnSet/FactSet/Table/ActionSet;输入(v2):Input.Text/Toggle/ChoiceSet/Number/Date/Time;动作:OpenUrl/ToggleVisibility/CopyToClipboard + Action.Submit(v2) |
🔴 不支持 Action.Execute / auto-refresh |
| 能力探测 |
发送前建议 GET /v1/bot/card/profile 探测可用 profiles/limits/card_version,返回 manifest 为运行时权威依据 |
客户端不支持时自动降级纯文本 |
| 动态改卡 |
POST /v1/bot/message/edit + card_seq CAS 乐观锁 |
用于"已评价/已受理/已锁定"状态更新 |
| 校验方式 |
🔴 无独立校验端点,校验在发送入口内联执行 |
开发环境先发测试消息验证卡片格式,再逐步添加元素 |
4.3 卡片模板示例(3 张,完整 JSON 可直接用)
以下 JSON 均为 `POST /v1/bot/sendMessage` 完整请求体(Bearer `bf_` token 鉴权),`channel_id` 替换为实际会话 ID 即可发送。占位数据(工单号/姓名/尾号)需按实际业务填充。属性级校验以运行时 manifest 为准,建议先在开发环境发送验证。
4.3-1 满意度评价卡(Input.ChoiceSet + 提交)
{
"channel_id": "<客户DM会话ID>",
"channel_type": 1,
"payload": {
"type": 17,
"profile": "octo/v2",
"card_version": "1.5",
"card": {
"type": "AdaptiveCard",
"version": "1.5",
"body": [
{
"type": "TextBlock",
"text": "📝 服务满意度评价",
"size": "medium",
"weight": "bolder"
},
{
"type": "TextBlock",
"text": "本次咨询是否解决了您的问题?您的反馈将帮助我们改进服务。",
"isSubtle": true,
"wrap": true
},
{
"type": "Input.ChoiceSet",
"id": "csat_score",
"label": "满意度评分",
"style": "expanded",
"value": "5",
"choices": [
{ "title": "非常满意", "value": "5" },
{ "title": "满意", "value": "4" },
{ "title": "一般", "value": "3" },
{ "title": "不满意", "value": "2" }
]
},
{
"type": "Input.Text",
"id": "csat_comment",
"label": "其他意见(选填)",
"placeholder": "请输入您的建议(100字以内)",
"isMultiline": true,
"maxLength": 100
}
],
"actions": [
{
"type": "Action.Submit",
"title": "提交评价",
"data": {
"action": "csat_submit",
"session_id": "CS-20260922-0001"
}
}
]
}
},
"client_msg_no": "csat-CS-20260922-0001"
}
data.session_id 用于客服中台关联会话;data.action 为回调路由键。
- 客户提交后客服中台收到
card_action 事件(event_data.inputs.csat_score / inputs.csat_comment),记录 CSAT 并动态改卡为"已评价"状态。
inputs 是用户提交内容,客服中台必须自行校验合法性(长度/枚举值/防注入)。
4.3-2 业务办理表单卡(文本输入 + 下拉 + 提交,以借记卡挂失为例)
{
"channel_id": "<客户DM会话ID>",
"channel_type": 1,
"payload": {
"type": 17,
"profile": "octo/v2",
"card_version": "1.5",
"card": {
"type": "AdaptiveCard",
"version": "1.5",
"body": [
{
"type": "TextBlock",
"text": "🏦 借记卡挂失申请",
"size": "medium",
"weight": "bolder"
},
{
"type": "TextBlock",
"text": "请填写以下信息提交挂失申请。正式挂失需坐席人工核验后办理。",
"isSubtle": true,
"wrap": true
},
{
"type": "FactSet",
"facts": [
{ "title": "客户姓名", "value": "张*" },
{ "title": "卡号尾号", "value": "**** 6789" }
]
},
{
"type": "Input.ChoiceSet",
"id": "loss_type",
"label": "挂失类型",
"style": "compact",
"value": "temp_loss",
"choices": [
{ "title": "临时挂失(5天内有效,可自助解挂)", "value": "temp_loss" },
{ "title": "正式挂失(需坐席核验后补办新卡)", "value": "formal_loss" }
]
},
{
"type": "Input.Text",
"id": "id_last6",
"label": "证件号后6位",
"placeholder": "请输入身份证后6位",
"maxLength": 6
},
{
"type": "Input.Text",
"id": "contact_phone",
"label": "联系电话",
"placeholder": "用于坐席核验回拨",
"maxLength": 20
},
{
"type": "Input.Toggle",
"id": "agree_notice",
"title": "我已阅读并同意《挂失业务办理须知》",
"value": "false",
"valueOn": "true",
"valueOff": "false"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "提交申请",
"data": {
"action": "biz_apply_submit",
"biz_type": "debit_card_loss",
"form_version": "1.0"
}
},
{
"type": "Action.OpenUrl",
"title": "查看办理须知",
"url": "https://help.bank.example.com/loss-notice"
}
]
}
},
"client_msg_no": "biz-apply-20260922-0002"
}
- 客户身份核验不依赖卡片内证件号字段——卡片仅采集意愿信息,真实身份核验由行内核身系统/坐席回拨完成(客服中台业务规则)。
agree_notice Toggle 未勾选时客服中台应拒绝受理(服务端校验,不能信任客户端状态)。
- 高风险分支:
loss_type == "formal_loss" 时自动升级第三层坐席核验。
4.3-3 信息确认卡(事实展示 + 确认/取消按钮)
{
"channel_id": "<客户DM会话ID>",
"channel_type": 1,
"payload": {
"type": 17,
"profile": "octo/v2",
"card_version": "1.5",
"card": {
"type": "AdaptiveCard",
"version": "1.5",
"body": [
{
"type": "TextBlock",
"text": "✅ 挂失申请信息确认",
"size": "medium",
"weight": "bolder"
},
{
"type": "TextBlock",
"text": "请核对以下受理信息,确认无误后工单进入处理流程。",
"isSubtle": true,
"wrap": true
},
{
"type": "FactSet",
"facts": [
{ "title": "工单号", "value": "GD-20260922-00315" },
{ "title": "业务类型", "value": "借记卡挂失" },
{ "title": "挂失方式", "value": "临时挂失(5天内有效)" },
{ "title": "卡号尾号", "value": "**** 6789" },
{ "title": "受理坐席组", "value": "卡业务二组" },
{ "title": "生效时间", "value": "确认后即时生效" }
]
},
{
"type": "TextBlock",
"text": "提示:确认后本卡片将锁定。如需变更,请联系在线坐席。",
"isSubtle": true,
"wrap": true
}
],
"actions": [
{
"type": "Action.Submit",
"title": "确认无误",
"data": {
"action": "biz_confirm",
"ticket_id": "GD-20260922-00315"
}
},
{
"type": "Action.Submit",
"title": "取消申请",
"data": {
"action": "biz_cancel",
"ticket_id": "GD-20260922-00315"
}
}
]
}
},
"client_msg_no": "biz-confirm-20260922-00315"
}
- 确认/取消均为
Action.Submit(回调服务端),客服中台按 data.action 路由到工单系统对应状态机。
- 客户点击后动态改卡(card_seq CAS):将
actions 整体替换为状态 TextBlock("已确认受理 ✓"/"已取消"),实现一次性操作防重复提交。
- 两次并发点击由 card_seq CAS 保证最终一致,客服中台侧仍需以工单系统状态机为唯一权威(幂等处理)。
4.4 系统集成方案
4.4.1 Webhook 对接工单系统
⚠️ 先厘清概念(售前高频混淆点):Bot 收事件 = HTTP 长轮询,不是 Webhook。OCTO 的 Webhook 能力是"平台级"的,分两个方向:
| 方向 |
机制 |
本方案用途 |
确认状态 |
| 工单 → OCTO 群(入站) |
群入站 Webhook(外部系统推消息进群/子区;Bot 可创建/管理群的入站 Webhook) |
工单状态变更(受理/处理中/办结/回访)推送到坐席协作群,坐席实时可见 |
✅ 能力源码确认(Q9 BA-04);具体管理端点参数待补(V10-09) |
| OCTO → 工单(出站) |
推荐走客服中台 REST 直调工单 API(不依赖 OCTO 出站 Webhook) |
card_action 建单、状态推进、关联查询 |
✅ Bot 服务端调行内 API(常规集成) |
| 平台级出站 Webhook |
/v1/webhook、/v2/webhook 端点存在 |
🔴 不作为承诺口径:per-bot 订阅模型/签名规范/重试策略待确认(P1-06、V10-07) |
⚠️ 待确认,PoC 期验证 |
4.4.2 长轮询事件处理(客服中台核心框架)
# 客服中台:多 Bot 独立长轮询(每 token 一个 goroutine/线程)
# 依据:错误码与排障 v1.0 §五;Webhook与事件订阅 v1.0 §1/§8
import requests, time
def poll_loop(bot_token, handler):
event_id = 0 # 断点:单调递增,exclusive
while True:
try:
resp = requests.post(
f"{HOST}/v1/bot/events",
headers={"Authorization": f"Bearer {bot_token}"},
json={"event_id": event_id, "limit": 20, "wait": 10},
timeout=15, # 客户端超时 > wait
)
if resp.status_code == 429: # 限流:读 Retry-After 指数退避
time.sleep(int(resp.headers.get("Retry-After", "5")))
continue
resp.raise_for_status()
for evt in resp.json().get("events", []):
persist(evt) # ① 先落库(审计+幂等)
handler(evt) # ② 业务处理(按 event_type 分派)
ack(bot_token, evt["event_id"]) # ③ 后 ACK(at-least-once 语义)
event_id = evt["event_id"]
# 收到响应立即发起下一次 poll,不加 sleep(服务端无事件时 hold)
except requests.Timeout:
continue
except Exception:
time.sleep(3) # 网络异常退避重连
| 要点 |
规则 |
依据 |
| 方法与断点 |
POST /v1/bot/events(GET 返回 404);event_id exclusive 单调递增;limit 默认 20 上限 100;wait 服务端 clamp 到 [0,30]s |
错误码 §5.1/5.2 |
| 投递语义 |
at-least-once——客服中台必须基于 event_id 去重幂等 |
快速入门 §5.2 |
| ACK 顺序 |
先持久化 cursor/事件,再 ACK——崩溃至多重放一次,绝不 ACK 已遗忘事件 |
Webhook与事件订阅 §1.6 |
| 断线恢复 |
尽快重连(🔴 事件保留 TTL 待确认,P1-03);可用 POST /v1/bot/messages/sync 补拉历史消息 |
错误码 §5.2;open-questions P1-03 |
| 事件分派 |
event_type 分派:card_action(卡片回调)→ 业务处理器;无 event_type(普通 DM/@ 消息)→ FAQ/知识链路 |
Webhook与事件订阅 §2 |
| 限流隔离 |
限流按 robotID 分桶——FAQ Bot 高峰被限流不影响业务 Bot/知识 Bot 独立桶 |
错误码 §4.1 |
| 429 处理 |
读 Retry-After / X-RateLimit-Remaining 头,指数退避;高峰用批量接口(members ≤200 / message_ids ≤100)+ 错峰 + 消息合并(多条短消息合并为一张结构化卡片) |
错误码 §4.3/4.5 |
| 回复上下文 |
🔴 无独立 in_reply_to 顶层字段,引用关系在 payload 内(WuKongIM reply 结构),客服中台自行解析 |
快速入门 §5.2 |
4.4.3 CRM 客户信息卡片带出
1. 坐席在协作群 @业务 Bot:"@业务Bot 查客户 138****5678"
2. Bot 服务端收到 @ 事件(事件源①)
3. 服务端按行内鉴权调用 CRM API(REST/内网 API 网关)拉取客户信息
4. 组装客户信息卡(octo/v1 展示卡)发送到协作群:
FactSet:客户姓名(脱敏)/ 客户等级 / 持有产品 / 近30天咨询记录 / 风险标签
+ Action.OpenUrl(跳转 CRM 完整档案,行内 SSO 免登)
5. 审计闭环:
- 查询指令(坐席的消息)+ 返回卡片内容 全量落 OCTO 消息库
- 客服中台同步记录结构化查询日志(坐席工号/时间/查询客户/返回字段)
供合规部门审计"谁在何时查了哪个客户"
- 脱敏规则由方案定义(姓名打星、证件号/卡号只显尾号)——🔴 OCTO 无内置动态脱敏能力,脱敏逻辑在客服中台组装卡片时实现。
- 卡片用
octo/v1 展示 profile(无输入交互),降低误操作面。
- 若行内要求查询留痕更严格,可要求坐席走工单系统查询(工单自带审计),OCTO 卡片仅展示工单号摘要。
5. 部署架构建议
5.1 部署档位与演进路径
| 阶段 |
档位与形态 |
资源(⚠️ 经验估算,非承诺) |
说明 |
| PoC(4周) |
最小化单机部署(Docker Compose) |
资源规格以PoC压测为准 |
核心 7 件套:octo-server + octo-web + octo-admin + WuKongIM + MySQL 8 + Redis 7 + MinIO;Docs/Drive/Fleet/Marketplace 可不启用(场景二 §2.5) |
| 试点(2个月) |
最小化单机部署 → Kubernetes高可用集群部署 过渡 |
视坐席放量与实测数据调整 |
试点期可继续单机或小规模集群;根据 §7 指标实测决定扩容节奏 |
| 生产(全渠道) |
Kubernetes高可用集群部署(Helm) |
以交付方案为准 |
高可用拓扑/副本数以交付方案为准(红线卡 Y3);MySQL 建议主从 |
🔴 档位硬口径:资源规格档位均为经验估算,无官方证据(PS-06 纠偏),售前不得作为承诺报出;具体吞吐上限必须 PoC 压测确定(business 限流桶阈值由 system_setting 动态配置,源码无硬编码默认值,BA-07 待确认——见 §8 硬口径#6)。
5.2 网络分区与 DMZ 部署考量
┌────────────────────────────────────────────────────────────────┐
│ 互联网区 │
│ 客户 APP / 微信公众号 / 小程序入口 │
└──────────────┬─────────────────────────────────────────────────┘
│ HTTPS 443 only
┌──────────────▼─────────────────────────────────────────────────┐
│ DMZ 区 │
│ WAF → 渠道适配层(集成商开发:微信适配 / APP 网关) │
│ → nginx(OCTO 统一入口,TLS 终结,单端口 28443) │
│ ⚠️ 渠道适配层为集成商开发,OCTO 不内置 │
└──────────────┬─────────────────────────────────────────────────┘
│ 指定端口白名单(防火墙策略)
┌──────────────▼─────────────────────────────────────────────────┐
│ 行内应用区 │
│ OCTO 栈:octo-server / WuKongIM / MySQL / Redis / MinIO │
│ / nginx(内网入口)/ octo-web / octo-admin │
│ 客服中台 Bot 服务(集成方部署,双实例高可用) │
│ 行内 LLM 推理服务(或已合规审批的 LLM API 出口) │
│ 统一知识库(OCTO Docs profile 或行内既有知识库) │
└──────────────┬─────────────────────────────────────────────────┘
│ 东西向白名单(行内 API 网关)
┌──────────────▼─────────────────────────────────────────────────┐
│ 行内核心区 │
│ CRM / 工单系统 / 核心业务系统 / BI 看板 / IAM(4A) │
└────────────────────────────────────────────────────────────────┘
| # |
考量 |
说明 |
| 1 |
OCTO 部署位置 |
OCTO 全栈部署在行内应用区,不跨区;对外仅 DMZ nginx 暴露 443。若坐席仅行内网络办公,OCTO 内网入口可不对 DMZ 暴露,进一步缩小攻击面 |
| 2 |
🔴 MinIO downloadURL 必须对坐席/客户端可达(红线卡 R11) |
文件/图片下载是客户端直连 MinIO 预签名 URL(302 重定向),不经 server 代理。金融内网部署最常见事故:防火墙未放行对象存储域名 → 聊天图片/附件打不开。DMZ 与应用区间防火墙清单必须显式列出 MinIO 域名/端口 |
| 3 |
客户端连接 |
客户端长连接直连 WuKongIM(WS 25200 / TCP 25100);经 nginx /ws 反代则仅需 443(场景文档 G3;部署形态总览)。坐席 PC 客户端(Electron/Web)走内网入口即可 |
| 4 |
与行内系统集成 |
客服中台 ↔ CRM/工单走内网东西向 REST(经 API 网关,白名单 + mTLS/签名),不出网;OCTO 本身不直连核心区系统 |
| 5 |
LLM 数据不出内网 |
🔴 智能问答必须对接行内 LLM 推理服务或已完成合规审批的 LLM API。注意:OCTO summary 模块默认调外部 LLM(claude 系),金融场景建议不启用 summary 依赖外部 LLM 的默认配置,问答 LLM 由客服中台直连行内服务(场景一 §1.8 硬口径#15) |
| 6 |
SSO |
OIDC 对接行内 IAM/4A;🔴 若行内 IdP 仅 SAML/LDAP,需 Keycloak 等做协议桥接,不承诺原生直连(权限模型 §5.2) |
| 7 |
数据不出内网审计 |
全部数据(消息/附件/卡片)落行内 MySQL/MinIO;LLM 请求内容与响应由客服中台在行内留痕(注意评估行内 LLM 服务的日志保留策略) |
5.3 租户与实例隔离策略
- 🔴 硬口径:OCTO 多租户为同库逻辑隔离(space_id 查询层过滤),非物理隔离(权限模型硬口径③)。该客户若有多个法人主体/子公司需强隔离(如银行 + 消金子公司),每主体独立部署一套实例,不做"同实例强隔离"承诺。
- Space 为唯一租户单元,无 organization 层级(硬口径①)。本方案推荐单 Space 部署:坐席、运营、质检、管理员同 Space,用群组/Thread 组织日常协作,术语统一使用 Space。
- 权限边界:Space 三档角色(member/admin/owner)+ 群三档角色(普通/群主/管理员)+ 系统角色(admin/superAdmin/dashboardReader/marketAdmin)。🔴 无自定义 RBAC(硬口径②)——"坐席组长/质检员/合规审计员"等岗位差异化权限需在客服中台/工单系统侧实现,不得承诺 OCTO 侧自定义角色。
- 权限变更缓存:成员资格变更最长 60s 缓存延迟(Redis TTL)——坐席离岗权限回收场景需在 SLA 中评估该窗口(权限模型 §2.4)。
- Bot 不占 Space 座位:Bot 无 space_member 行,不占人头数(权限模型 §3.2);本方案 License/资源按人类账号(坐席+运营+管理)估算。
- User Bot 权限边界:FAQ/业务/知识 Bot 均为 User Bot(
bf_),加群后是普通群成员,只能操作自己加入的群;GET /v1/bot/groups 只返回自己加入的群(红线卡 R3)。
6. 实施路径
6.1 Phase 1:PoC(4 周)
| 周 |
工作项 |
关键产出 |
| W1 |
环境搭建:Docker Compose 核心 7 件套(M 档单机)+ OIDC SSO 联调 + 行内网络/防火墙策略落地(含 MinIO 放行验证);BotFather 创建 3 类 Bot,bf_ token 发放与保管规范(token = Bot 全部权限凭证,仅存服务端密管系统) |
可用的 PoC 环境 + Bot 身份就绪 |
| W2 |
FAQ 接待 Bot 开发:长轮询框架(§4.4.2)+ 行内 LLM 对接 + 知识库 RAG(首批 200 条高频 FAQ 语料)+ 文本/展示卡回复 |
旅程 1 基本闭环 |
| W3 |
卡片交互开发:3 张卡片模板(§4.3)+ card_action 处理 + 动态改卡;429 限流压测:business 桶实际阈值以部署 config 为准(Y6),实测单 Bot 吞吐上限与峰值并发模型 |
旅程 1/2 闭环 + 吞吐实测报告(不承诺 SLA,仅记录基线) |
| W4 |
工单系统/CRM 接口联调(REST 建单 + 群入站 Webhook 状态通知);演示验收:4 条用户旅程全流程演示 + 安全整改项清单 |
PoC 验收报告(含实测数据 + 风险清单) |
6.2 Phase 2:客服试点(2 个月)
| 月 |
工作项 |
关键策略 |
| M1 |
首批坐席试点上线:FAQ Bot 灰度放量(内部员工试用 → 小比例客户流量 → 按自助解决率逐级放量);工单集成生产化;审计留痕验证(消息 + card_action 落库可查询、可按工单号/坐席/客户三向检索);DMZ/防火墙策略生产化复核 |
灰度放量节奏由自助解决率与投诉率双指标驱动 |
| M2 |
业务 Bot 全业务域铺开(挂失/查询/预约等按优先级);坐席知识辅助 Bot 上线;满意度评价卡全量采集;ROI 指标基线固化(§7 框架);容量复核(是否升 Kubernetes高可用集群部署) |
每周运营复盘:FAQ 未命中问题回流知识库运营流程 |
6.3 Phase 3:全渠道推广
| 工作项 |
说明 |
| 渠道适配层建设 |
微信公众号/小程序适配、电话 CTI 中间件对接(集成商开发,OCTO 不内置渠道适配器);渠道消息归一到客服中台统一处理 |
| 知识库统一治理 |
电话/APP/微信三渠道知识口径收敛到统一知识库;建立知识运营流程(未命中问题 → 知识补充 → 评审发布 → Bot 生效) |
| 全坐席推广 |
坐席全量;按 Kubernetes高可用集群部署扩容(以试点实测数据定拓扑,交付方案为准) |
| 持续运营 |
月度 CSAT 复盘、限流水位监控(X-RateLimit-Remaining 告警)、token 轮换管理(/revoke 流程演练) |
7. ROI 价值分析框架
🔴 原则:本章只给测算框架与指标体系,不代入任何假设数字,不承诺任何 ROI 数值。 所有变量需以 PoC/试点实测数据代入;售前阶段如客户要求测算,应明确标注"基于客户试点数据的估算,非产品承诺"。
7.1 三维度指标框架
| 维度 |
核心指标 |
采集方式 |
基线与对比 |
| 客服效率 |
FAQ 自助解决率;人工转接率;平均首次响应时长(FRT);平均处理时长(AHT);坐席日均承接量 |
客服中台会话日志(event 全量落库)+ 工单系统统计 |
PoC 期采"纯人工"基线;试点期采"Bot+人工"对比值 |
| 人力成本 |
重复性咨询自动化释放的人力当量 |
测算框架见 7.2 |
需客户试点数据代入 |
| 客户满意度 |
CSAT(满意度评价卡直接采集,旅程 1/2 闭环);首次解决率(FCR);投诉率;NPS(可选,行内既有调研体系) |
评价卡 card_action 数据 + 行内投诉工单统计 |
评价卡数据即采集闭环,无需额外调研成本 |
7.2 人力成本测算框架(公式示例,不代入数字)
年化可释放人力当量 ≈
日均咨询量 × 重复性咨询占比 × Bot 自助解决率 × 单次人工处理时长
÷ 坐席日均有效工时
− Bot 运营投入当量(知识库运营 + Bot 保障人力)
其中:
· 日均咨询量、重复性占比:客户画像给定(本案例描述为大量咨询、重复性问题占比高)——需客户实际数据校准
· Bot 自助解决率:⚠️ 唯一未知变量,受知识库质量/大模型回答质量/客户接受度三因素影响,
必须以试点实测为准,售前不得预设
· Bot 运营投入:知识运营是持续成本,必须计入(否则测算失真)
7.3 汇报口径建议
- 对客户汇报用"效率维度实测对比"(自助解决率、FRT 缩短)作为主证据链,人力成本换算为辅。
- 所有对外数字标注采集口径与时间窗口;跨渠道口径(电话 AHT vs 在线 AHT)分开统计,不混算。
- 满意度数据注意"评价卡参与率"偏差(只评价的人是否代表全体),必要时抽样补研。
8. 售前注意事项(🔴 硬口径,违反即交付事故)
以下 15 条硬口径全部来自源码确认文档,售前沟通、方案书、投标应答均不得违背。客户追问时统一话术:「这个能力当前版本的边界是 XXX,具体方案我们交付团队会评估。」
| # |
🔴 硬口径 |
禁止说法 |
正确口径 |
来源 |
| 1 |
Bot 对网盘零面 |
"Bot 可以读写网盘/把网盘文件作为知识源" |
/v1/bot/drive/ 路由全仓 0 命中(源码确认);Bot 只能操作 chat/ 命名空间聊天附件;知识库文件源需经用户转存等链路或由客服中台直连行内知识库 |
Drive网盘模块 v0.3 P0 结论;快速入门 §1.2 |
| 2 |
卡片硬限制 |
"卡片随便多大、元素随便加" |
type=17:payload ≤512KiB、节点 ≤200、深度 ≤16;card_version/version 必须 "1.5";元素限白名单(8 展示 + 6 输入 + 4 动作);不支持 Action.Execute/auto-refresh;limits 以运行时 manifest 为准(先 GET /v1/bot/card/profile 探测) |
错误码与排障 v1.0 §三;红线卡 R8 |
| 3 |
Bot 是普通群成员 |
"Bot 可以跨群发消息/拉所有群列表/有超管权限" |
Bot 加群后是普通成员;只能操作自己加入的群;解散群/设管理员/禁言/改群头像均不对 Bot 开放 |
红线卡 R3/R4;快速入门 §1.2 |
| 4 |
限流与 429 |
"不会限流/限流阈值是固定 X" |
三桶限流按 robotID 隔离(business/heartbeat/register);business 阈值由 system_setting 动态配置,无公开默认值承诺;收到 429 读 Retry-After 指数退避 + 用批量接口(members ≤200 / message_ids ≤100)+ 错峰 + 卡片合并消息 |
错误码与排障 v1.0 §四;红线卡 Y6 |
| 5 |
App Bot 边界 |
"App Bot 也能进群干活" |
App Bot(app_)仅 DM 私聊(群端点完全拒绝,app_bot_dm_only);未发布状态调 API 返回 403 bot_unavailable。本方案群聊场景全部用 User Bot(bf_) |
错误码与排障 v1.0 §2.3/§7.2;权限模型 §3.1 |
| 6 |
性能不承诺 |
"支持 X 万并发/QPS 保证 Y" |
无官方性能基准数据,不承诺具体 QPS/并发/SLA;资源规格档位为经验估算;具体吞吐必须 PoC 压测实测 |
红线卡 R10;场景文档 PS-06 |
| 7 |
事件通道是长轮询 |
"Bot 通过 WebSocket / Webhook 收事件" |
Bot 收事件 = POST /v1/bot/events HTTP 长轮询(wait ≤30s);不存在 Bot 入站 Webhook;平台级出站 Webhook(/v1/webhook 等)订阅模型待确认,不作承诺 |
红线卡 R13;快速入门三大易错点① |
| 8 |
Bot 收不到的事件 |
"Bot 可以监听坐席上线/群成员变化/表情回应" |
Bot 收不到 reaction、群成员变动、加入/退出/被移除、网盘分享事件(源码无投递点)——坐席排班提醒等场景须由客服中台/工单系统触发,不能设计为"Bot 监听群事件" |
快速入门三大易错点③;Webhook与事件订阅 §3.2 |
| 9 |
逻辑隔离非物理隔离 |
"多租户物理隔离/数据沙箱级隔离" |
多租户为同库逻辑隔离(space_id 过滤);金融强合规场景一客户一实例独立部署 |
权限模型硬口径③ |
| 10 |
无自定义 RBAC |
"可以自定义坐席组长/质检员角色" |
角色为硬编码枚举(Space 三档/群三档/系统四档);岗位差异化权限在客服中台/工单系统侧实现 |
权限模型硬口径② |
| 11 |
AI 能力边界 |
"OCTO 内置智能客服/NLP 意图识别开箱即用" |
OCTO 提供 Bot 运行平台 + 消息/卡片/事件底座;智能问答 = 集成方对接行内 LLM + 知识库 RAG 自行实现;"能构建" ≠ "点一下就有" |
场景文档 PS-07 纠偏 |
| 12 |
sendMessage 单目标单条 |
"一次 API 调用批量群发" |
sendMessage 单目标单条;批量触达需循环调用 + 限流控制(批量接口仅限群成员/消息 ID 等批量操作) |
红线卡 R6;错误码 §4.5 |
| 13 |
SSO 协议边界 |
"原生支持 SAML/LDAP/企微钉钉飞书扫码" |
原生仅 OIDC/OAuth2;SAML/LDAP 需 Keycloak 等 IdP 桥接;不支持 SCIM 自动 provisioning |
权限模型 §5.2 |
| 14 |
语音边界 |
"Bot 可以发语音回复/支持音视频客服" |
Bot 不能发送语音消息(无 TTS,type=4 Bot 不可发);语音转写(ASR)为输入侧能力且需行内 ASR 引擎;不是音视频会议/呼叫中心系统 |
消息类型与发送 v1.0 §3.5;场景一硬口径#8 |
| 15 |
MinIO 下载直连 |
"文件下载可以全走 server 代理不暴露 MinIO" |
下载走 302 → 预签名 URL,客户端直连 MinIO,downloadURL 必须对坐席/客户端网络可达——防火墙清单必须显式放行 |
红线卡 R11 |
9. 已知限制与待确认项
以下事项在方案承诺前必须逐项确认;集中追踪于 `00-inbox/open-questions.md`,PoC 启动前应由产品管家/Owner 复核闭环。
9.1 影响本方案的待确认项(引用 open-questions.md)
| 编号 |
待确认项 |
对本方案的影响 |
缓解设计 |
| P1-03 |
长轮询事件保留 TTL(断点续传窗口时长) |
客服中台宕机超过窗口可能丢事件 |
事件先落库再 ACK;断线尽快重连;/v1/bot/messages/sync 补拉兜底;PoC 实测窗口时长 |
| P1-06 |
Webhook 回调失败重试机制(次数/间隔/签名) |
工单状态推送可靠性 |
群入站 Webhook 仅作坐席通知辅助通道;业务关键流走客服中台 ↔ 工单 REST 直调,不依赖出站 Webhook |
| P1-05 |
business/heartbeat 限流桶默认参数 |
峰值吞吐规划 |
PoC 压测实测;部署期从 system_setting 确认配置值 |
| P1-09 |
Bot token 过期策略(有效期/刷新机制) |
token 生命周期管理 |
假设长期有效 + 泄露即 /revoke;PoC 验证实际策略 |
| P1-04 |
上传端点命名差异(/v1/bot/upload/credentials vs /v1/bot/upload/presigned) |
附件上传集成 |
以线上实际返回为准,先测 STS credentials 端点 |
| P1-08 |
消息 content_too_large 具体阈值 |
长文本答案(如条款全文)发送 |
长内容改用卡片或文件消息(type=8,先上传后发送);PoC 实测阈值 |
| BA-07 |
business 桶 RPS/日配额默认值 |
同 P1-05 |
同上 |
| BA-QUOTA |
Bot 加群数量配额 |
多坐席组群、多 Thread 的规模上限 |
以 system_setting 配置为准;试点期监控 |
9.2 已确认的产品边界(按已知限制管理,非待确认)
| 边界 |
影响 |
方案对策 |
| 群聊普通消息(不 @Bot)是否投递给 Bot:待确认(Webhook与事件订阅 §3.3) |
FAQ Bot 若设计为群聊模式有风险 |
FAQ Bot 定为 DM 私信模式(事件源①已源码确认);群内交互一律 @Bot |
无独立 in_reply_to 字段,引用在 payload 内 |
多轮会话上下文解析 |
客服中台自行解析 payload 内 reply 结构;会话状态以 session_id 为主键管理,不依赖 reply 链 |
| 撤回消息独立端点未见路由 |
坐席撤回误发内容 |
依赖消息编辑(仅 Bot 自己的消息);人工消息撤回走客户端;审计策略按"不可撤回留痕"设计(反而利好合规) |
| 消息撤回/编辑的时限语义待确认 |
留痕口径 |
审计口径定义为"以落库消息为准",编辑留版本痕迹由客服中台日志承担 |
| 删号无 GDPR 导出功能 |
监管检查数据提取 |
审计导出基于 MySQL 定制开发(ETL 到行内审计平台),纳入实施工作量 |
| 无公开 OpenAPI/Swagger 规范 |
集成方开发对接口径 |
以知识库 Bot-API 系列文档为开发依据;PoC W1 做接口冒烟验证 |
| 卡片无独立校验端点 |
卡片开发调试 |
开发环境先发最简测试卡,逐步加元素定位问题(错误码 §3.4) |
| 动态改卡 card_seq CAS 为乐观锁 |
多坐席并发改同一张卡 |
以工单系统状态机为唯一权威,OCTO 卡片仅为展示层;客服中台对改卡失败做重试 |
Bot 文件上传仅 chat/ 命名空间(不进网盘) |
课件/话术文件分发 |
知识文件存行内知识库/Docs;聊天附件仅做临时传输 |
10. 附录:涉及文档索引
| # |
文档 |
路径 |
本文引用点 |
| 1 |
Bot API 快速入门 v1.0(Q9 源码确认升级) |
04-api-integration/Bot-API快速入门-v1.0.md |
三大易错点(长轮询/bf_前缀/收不到的事件)、能力清单、端点清单、限流、OBO、Token 管理 |
| 2 |
Bot API 错误码与排障 v1.0 |
04-api-integration/Bot-API错误码与排障-v1.0.md |
卡片硬限(512KiB/200节点/深度16/card_version="1.5")、403 系列(bot_unavailable/app_bot_dm_only)、429 限流与批量接口、长轮询排障 |
| 3 |
消息类型与发送 v1.0 |
04-api-integration/消息类型与发送-v1.0.md |
sendMessage 信封、type=17 双 profile、元素白名单、动态改卡、@mention、文件消息流程 |
| 4 |
Webhook 与事件订阅 v1.0 |
04-api-integration/Webhook与事件订阅-v1.0.md |
长轮询机制、card_action/事件 payload、群入站 Webhook、出站 Webhook 待确认边界、cursor/ACK 最佳实践 |
| 5 |
OCTO 典型应用场景 v1.0(场景二) |
05-use-cases/OCTO典型应用场景-v1.0.md |
场景二基础(痛点/能力对应/模块清单/部署建议)、PS-06/07 纠偏(档位经验估算/AI 非成品) |
| 6 |
权限模型与鉴权体系 v0.1 |
02-architecture/权限模型与鉴权体系.md |
三条安全硬口径(Space 唯一租户/无自定义 RBAC/逻辑隔离)、Bot 权限边界、SSO 支持矩阵、60s 缓存延迟 |
| 7 |
售前红线卡 v0.1 |
08-presales-delivery/售前红线卡-v0.1.md |
R3/R4/R5/R6/R8/R10/R11/R12/R13/R14、Y3/Y6、G3/G7/G10 等 15 条硬口径引用 |
| 8 |
Drive 网盘模块 v0.3 |
01-product/模块说明/Drive网盘模块.md |
P0 结论:Bot 对网盘零攻击面(/v1/bot/drive/ 0 命中、chat/ 前缀三重隔离)、Drive 仅 Web 端 |
| 9 |
生产资源规格建议 v1.0 |
03-deployment-ops/生产资源规格建议-v1.0.md |
M/L 档资源参考(⚠️ 经验估算) |
| 10 |
待确认项统一追踪清单 |
00-inbox/open-questions.md |
§9 待确认项编号来源(P1-03/P1-04/P1-05/P1-06/P1-08/P1-09) |
版本记录
11. 客户价值亮点
11.1 核心价值亮点
11.2 可复用售前话术
- 话术1:"在行内私有化部署的智能对话机器人运行平台与统一消息通道上,构建'FAQ自动接待+业务办理Bot+人工坐席兜底'三层客服体系,全量对话在行内留痕可审计,不动存量客服系统就能让AI落地。"
- 话术2:"OCTO 提供消息通道+卡片渲染+事件回调+全量留痕的平台底座,FAQ 智能问答、业务流程编排由你们的集成商对接行内大模型和知识库开发——平台能搭建,但不是点一下就有现成智能客服,边界我们一开始就讲清楚。"
11.3 关联阅读
- 对应价值卡片:[金融行业客户价值卡片](../../08-presales-delivery/客户价值卡片/价值卡片-金融-v1.0.md)
- 售前红线卡:[售前红线卡-v1.0](../../08-presales-delivery/售前红线卡-v1.0.md)
- Bot API 快速入门:[Bot-API快速入门-v1.0.md](../../04-api-integration/Bot-API快速入门-v1.0.md)
相似行业参考
- 医疗集团案例(私有化合规IM与医护协作,适合金融机构合规/留痕/审计场景参考):[案例5-医疗集团-私有化合规IM与医护协作.md](./案例5-医疗集团-私有化合规IM与医护协作.md)
版本记录(v1.1 更新)
| 版本 |
日期 |
变更 |
作者 |
| v1.1 |
2026-09-22 |
精修:更新元信息(octo_version: v2026.09+待确认 / sensitivity: internal / source 加入价值卡片);交叉一致性修正(部署表述统一为"Kubernetes高可用集群部署/最小化单机部署",术语统一 Bot=智能对话机器人);PS-06 规模数字柔化(坐席数/日均量/硬件档位);PS-07 "准确率"改为"回答质量";追加第11章客户价值亮点;补充相似行业参考 |
twb-knowledge-octo |
| v0.1 |
2026-09-22 |
初版。基于 Bot-API v1.0 系列(Q9/Q13 源码确认级)、权限模型 v0.1、售前红线卡 v0.1、Drive v0.3、场景文档 v1.0 场景二推导编写。10 章节齐全:客户画像/痛点映射/方案概览/详细设计/部署架构/实施路径/ROI 框架/售前硬口径/已知限制/文档索引。confidence: medium(能力推导型,非客户实证) |
twb-knowledge-octo |