5.8 KiB
AgentBus 用户回复契约
本契约只约束执行完成后发给 AgentBus 用户的业务回执,不改变 Agent/Skill 的解析 JSON 契约。
用户侧消息
用户侧只收到两类消息:
- 受理通知:
已受理,正在处理。 - 最终返回通知:成功返回业务回执;失败返回 ERP 业务反馈或简短错误摘要。
解析完成、进入全自动化 ERP 执行、页面打开、提交中、写后回查等状态只进入平台生命周期和审计,不发送为用户进度。
名单入站附件
两项名单业务固定走 Program Parser。首次文字指令到达但没有名单文件时,任务进入 awaiting_attachment,并返回一条要求发送 .xls/.xlsx 的重要消息;该状态不是最终失败,也不会触发 ERP。后续可以在同一 conversation_id,或明确携带 payload.task_id,发送一个附件而不带正文。
名单入站 payload.attachments 最多一个,使用 name、content_type、size、可选 sha256 和不含凭据的 HTTPS url。控制面拒绝 HTTP、URL 用户名密码、私网/保留地址、DNS 解析到私网、超过大小限制、大小或 SHA-256 不一致以及超过两次的重定向;下载时固定到已校验的公网 IP。附件 URL 和原始字节不写入任务 JSONB 或日志。
附件通过程序模板校验后,任务从 awaiting_attachment 转为 parse_queued;校验失败则保留等待状态并只返回安全错误码和行列位置,不回显名单值。原始工作簿不持久化,只暂存加密 canonical TSV 供 Program Parser 使用。
失败
按以下顺序选择最终文本:
- ERP 明确返回业务规则提示时,返回 ERP 提示原文,例如
此团还有【应收团款】账,不能取消!。 - 没有 ERP 业务提示时,返回一条简短错误摘要。
- ERP 写入结果不确定时,不称为成功,也不伪装成普通业务失败;返回“ERP 写入结果暂不确定,请人工回查后再处理。”。
错误码、插件 blocker、HTTP 状态、请求哈希、隐藏 ID、执行阶段和回查证据不进入 AgentBus 用户文本。
成功回执矩阵
| action | 用户回执 | 必须包含 |
|---|---|---|
team_order_create |
新订单成功 | 团号 |
team_order_batch_create |
批量下单成功 | 全部团号,不只第一条 |
shared_plan_create |
散拼计划创建成功 | 全部母团团号 |
shared_child_order_create |
新子单成功 | 子单号;有母团号时可同时返回母团号 |
arrangement_guide |
导游安排成功/清除成功 | 团号、导游或清除结果 |
arrangement_vehicle |
用车安排成功/清除成功 | 团号、用车日期、数量、车辆/项目 |
arrangement_hotel |
客户酒店模板或清除成功 | 团号、入住/退房、晚数、房型/房数 |
arrangement_transport |
大交通安排成功/清除成功 | 团号、交通日期、数量、项目 |
arrangement_other |
其他/备案安排成功/清除成功 | 团号、业务日期、项目/数量(有值才返回) |
order_update_* |
信息修改成功 | 团号/子单号、已更新业务字段和值 |
passenger_list_import |
名单导入成功 | 团号/子单号、导入行数(可取得时) |
order_cancel |
订单已取消 | 团号/子单号;母团级联时说明子单状态同步 |
order_restore |
订单已恢复 | 团号/子单号、目标状态(可取得时) |
confirmation_export |
团队文件已准备 | 团号/子单号;独立团/子单游客名单或散拼母团整团游客信息的真实 .xlsx(原始 ERP .xls 只保留在平台归档);其他类型 PDF(转换失败时使用对应源文件);附件通过受控元数据交付 |
成功回执中的字段必须来自已验证的 ERP 回执或写后回查;不能使用“已提交并完成回查”这种技术过程作为业务正文。
酒店安排客户模板
酒店新增成功且执行结果包含完整酒店字段时,使用以下格式。变量全部由真实回查结果填充;英文和中文日期使用同一组实际日期。
①NEW BOOKING
GROUP CODE: {group_code}
IN. {in_date_dd_mm_yyyy}
OUT {out_date_dd_mm_yyyy}
{nights}Night(s). {room_count}{room_type_en}
②新订单
团号:{group_code}{customer_suffix}
入住日期:{in_date_yyyy_mm_dd_with_dots}
退房日期:{out_date_yyyy_mm_dd_with_dots}
几 晚:{nights}晚
房型/房数:{room_type_zh} {room_count}间
其中 customer_suffix 在有客户名称时才追加。若酒店变更或回查缺少模板所需字段,使用简洁的“酒店安排已更新/已完成”业务回执,不输出空占位符。
文件交付
最终回执可携带 payload.attachments 附件元数据:name、content_type、size、inline: false、HTTPS url,以及可选的 id、sha256。微信渠道适配器会按数组顺序下载 URL 并发送文件;URL 必须能被适配器的 HTTPS 域名白名单访问。
AgentBus 回执不发送原始文件字节或 content_base64,也不发送后台鉴权下载地址。确认单必须使用 OSS 存储并生成可供渠道适配器访问的 HTTPS URL;数据库存储或 HTTP/后台登录 URL 的附件只保留在平台任务详情中,不投递到外部渠道。原始文件字节、base64、SHA-256、ERP URL、artifact ID 和执行状态不能进入用户文本;文件正文不写入任务 JSONB 或日志,耐久 outbox 只保存附件引用。
visitor-list 在平台任务中同时保留源归档 .xls 与移动端交付 .xlsx;其中源归档明确标记为不可投递,AgentBus/微信回执只允许携带真实 .xlsx。独立团/散拼子单游客名单来自 did+tid,散拼母团整团游客信息来自 tid-only,两种范围必须在 existing_refs.kind 中明确。若 .xlsx 生成失败,任务阻断且不把原始 .xls 发送给外部渠道。