ACK 与 Error
ACK 与 Error 是协议通用反馈机制。它们不表示具体业务能力,也不属于 Flow 机制
ACK
ACK 表示接收端已经收到并成功解析目标消息。ACK 不表示业务已经执行成功,业务结果应通过 Response、Event 或 Flow Data 表达
ACK 与目标消息通过 related_id 关联:
| 字段 | 规则 |
|---|---|
message_id | ACK 自己的消息 ID |
related_id | 被确认消息的 message_id |
channel_id | 0,或在确认 Flow 控制消息时使用相关 Flow 的 channel_id |
ACK Payload 默认使用 JSON,字段定义如下:
| 字段 | 必填 | 含义 |
|---|---|---|
status | 是 | received 或 accepted |
message | 否 | 可读说明 |
received 表示消息已收到并解析成功,accepted 表示消息已被协议状态机接受。业务是否成功不由 ACK 表达
Error
Error 表示协议层、Session、Flow、Operation 或业务处理失败。Error 与失败消息通过 related_id 关联
Error Payload 默认使用 JSON,字段定义如下:
| 字段 | 必填 | 含义 |
|---|---|---|
category | 是 | 错误分类 |
code | 是 | 错误码 |
message | 否 | 可读错误说明 |
retryable | 否 | 是否允许按本地策略重试 |
recoverable | 否 | 是否可通过恢复流程处理 |
details | 否 | 扩展对象 |
错误分类
| 分类 | 说明 | 示例 |
|---|---|---|
protocol | 协议格式或语义错误 | UNKNOWN_MESSAGE_TYPE、UNKNOWN_FLAG |
payload | Payload 编码、长度或 Schema 错误 | PAYLOAD_DECODE_FAILED、SCHEMA_MISMATCH |
session | Session 状态错误 | SESSION_DEGRADED、SESSION_EXPIRED |
flow | Flow 状态错误 | FLOW_NOT_FOUND、FLOW_EPOCH_MISMATCH |
qos | QoS 协商或执行错误 | QOS_NOT_ACCEPTABLE、RATE_LIMITED |
operation | Operation 调用错误 | OPERATION_TIMEOUT、OPERATION_NOT_FOUND |
robot | 机器人业务错误 | ROBOT_MODE_REJECTED、CONTROL_REJECTED |
机器人本体故障码应通过专门 Flow 通知,不应混入协议层 Error Code。Error 允许引用业务错误,但不应替代机器人本地故障体系