Files
LWLT-AIBOT/agent设计规范/agentbus-reply-contract.md

5.8 KiB
Raw Blame History

AgentBus 用户回复契约

本契约只约束执行完成后发给 AgentBus 用户的业务回执,不改变 Agent/Skill 的解析 JSON 契约。

用户侧消息

用户侧只收到两类消息:

  1. 受理通知已受理,正在处理。
  2. 最终返回通知:成功返回业务回执;失败返回 ERP 业务反馈或简短错误摘要。

解析完成、进入全自动化 ERP 执行、页面打开、提交中、写后回查等状态只进入平台生命周期和审计,不发送为用户进度。

名单入站附件

两项名单业务固定走 Program Parser。首次文字指令到达但没有名单文件时任务进入 awaiting_attachment,并返回一条要求发送 .xls/.xlsx 的重要消息;该状态不是最终失败,也不会触发 ERP。后续可以在同一 conversation_id,或明确携带 payload.task_id,发送一个附件而不带正文。

名单入站 payload.attachments 最多一个,使用 namecontent_typesize、可选 sha256 和不含凭据的 HTTPS url。控制面拒绝 HTTP、URL 用户名密码、私网/保留地址、DNS 解析到私网、超过大小限制、大小或 SHA-256 不一致以及超过两次的重定向;下载时固定到已校验的公网 IP。附件 URL 和原始字节不写入任务 JSONB 或日志。

附件通过程序模板校验后,任务从 awaiting_attachment 转为 parse_queued;校验失败则保留等待状态并只返回安全错误码和行列位置,不回显名单值。原始工作簿不持久化,只暂存加密 canonical TSV 供 Program Parser 使用。

失败

按以下顺序选择最终文本:

  1. ERP 明确返回业务规则提示时,返回 ERP 提示原文,例如 此团还有【应收团款】账,不能取消!
  2. 没有 ERP 业务提示时,返回一条简短错误摘要。
  3. 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 附件元数据:namecontent_typesizeinline: false、HTTPS url,以及可选的 idsha256。微信渠道适配器会按数组顺序下载 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 发送给外部渠道。