跳至内容

角色变更通知 ​

在控制台「开放接口」添加用途为「角色变更通知」(PERSONA)的回调,验证后启用。与消息回调分开配置,使用该用途自己的签名密钥。

通知格式 ​

平台以 POST 发送 JSON,OC-Event-Type: persona.changed,OC-Event-Id 和 Idempotency-Key 均为正文的 eventId。先按回调签名验证,再处理数据。

json
{
  "eventId": "9001",
  "type": "persona.changed",
  "change": "published",
  "source": "console",
  "occurredAt": "2026-10-26T08:00:00Z",
  "persona": {
    "personaId": "11",
    "personaUid": "anchor-001",
    "status": "ACTIVE",
    "version": 2,
    "nickname": "小雪",
    "bio": "喜欢旅行",
    "privateEnabled": true,
    "liveEnabled": false
  }
}
change触发时机
created控制台或 API 创建角色
published发布新版本
paused / resumed暂停/恢复角色
binding绑定、更换或解除 UID;persona.previousPersonaUid 带旧值,可能为 null

source 为 console 或 api。API 发起的变更同样通知;接入方若已处理接口响应,可忽略 api 来源。仅保存草稿不产生以上变更通知。

persona 优先使用发布配置摘要;未发布的新角色使用草稿摘要,version=0。未绑定时 personaUid=null。需要完整数据时使用查询角色。

可靠接收 ​

  • 仅在回调已启用时,通知与角色变更在同一事务写入;变更回滚则不入队。入队不等于保证送达。
  • 没有启用回调期间的变更不记录、不补发;入队后回调被停用,投递时会跳过。
  • 同一角色按顺序投递;前一条仍在重试时后一条等待。前一条最终失败后会继续后续通知。
  • 2xx 表示成功;4xx(408、429 除外)停止重试;超时、5xx 等按 10 秒、30 秒、2 分钟、10 分钟退避,最多尝试 5 次。平台不跟随重定向。
  • 按 eventId 去重并保存处理结果;重试返回已有结果。比较 version 和 occurredAt,但不要仅按发布版本去重:绑定和暂停可能保持相同版本。

首次接入或重新启用回调后,按已知角色 UID 查询当前数据,弥补未接收的通知。目前未提供通知补发或角色批量枚举的开放接口。

OmniChat · 让交互自然发生