接收事件
标准事件类型与载荷
每次投递携带的统一信封,以及全部公开标准事件类型目录。按端点用 subscribed_events 订阅,或用 ["*"] 订阅全部公开事件;provider.raw_event 不会投递给客户。信封固定为 id / type / provider / account_id / occurred_at / data。 通话事件权限由工作区 is_beta 控制。内测工作区的 subscribed_events 为 *、空数组或省略时包含通话事件;具体事件列表仍仅匹配列出的事件。非内测工作区可使用通配订阅,但不会收到通话事件;明确订阅通话事件仍返回 403 beta_feature_not_enabled。每次投递、重试及死信重放都重新核验资格,查询失败不放行;普通 message.* 通话记录独立,不受该限制。
事件载荷
{
"id": "evt_2f9c1a4b7e",
"type": "message.received",
"provider": "whatsapp",
"account_id": "acc_8c21d0",
"occurred_at": "2026-06-08T12:34:56Z",
"data": {
"account": { "provider_account_ref": "8600000000000" },
"conversation": { "id": "8613912345678", "type": "user", "title": "Jordan Lee" },
"sender": { "id": "8613912345678", "name": "Jordan Lee", "type": "user" },
"message": {
"id": "wamid.HBgM",
"text": "Hi - is my order shipped yet?",
"direction": "inbound",
"sent_at": "2026-06-08T12:34:55Z"
}
}
}标准事件类型
- call.incoming
call.incoming 是预留内测契约,目前不开放呼入。未来开放后,内测工作区可通过 subscribed_events 匹配订阅:逐项订阅、*、空数组或省略均可。
- call.answered
call.answered 表示本系统管理的通话已接通。内测工作区的 subscribed_events 包含 call.answered 或 *,或为空数组、省略时均可接收。
- call.ended
call.ended 表示本系统管理的通话已结束,包含 data.call.id、reason、duration_seconds。内测工作区的 subscribed_events 包含 call.ended 或 *,或为空数组、省略时均可接收。
- post.comment.created
通过识别及当前账号帖子归属校验后的 TikTok 评论通知。启用前须确认环境已开放通知且接收端已准备就绪。轮询默认关闭;设置 provider_data.enable_comment=true 后需启动或重连,在线修改需重连。start 成功不证明配置已生效;关闭不会撤回已排队事件。订阅 post.comment.created,或使用空订阅或 *;仅订阅不会开启轮询。通知尽力而为,可能延迟、重复、乱序或遗漏,不保证完整历史。按事件 id 去重。缺少 parent_comment_id 不能证明是可回复的一级评论;回复前须核验目标。
- contact.updated
WhatsApp 通讯录名称更新(不含 whatsapp-protocol)。仅更新 data.contact.address_book 中提供的字段:空字符串表示清空,省略保持原值,null 非法。不覆盖对方昵称或账号本人资料。contact.id 标识联系人资源,不一定是会话标识。
- message.received
账号观察到一条消息;以 data.message.direction 区分 inbound 与 outbound。
- message.updated
一条已投递的消息被编辑。
- message.deleted
一条消息被删除或撤回。
- message.read
已读回执——对方已读某条消息。
- message.reaction
某条消息被添加或移除了表态(reaction)。
- message.delivered
一条消息已送达对方设备。
- conversation.updated
会话级设置发生变化——静音 / 取消静音、归档、置顶或标记已读。
- conversation.deleted
一个会话被删除。
- conversation.cleared
一个会话的聊天记录被清空。
- conversation.history
WhatsApp 在启动或重连后同步了某个会话的近期历史消息。
- group.updated
群组元信息变化——名称、成员或设置。
- group.join_request
有人申请加入开启了入群审批的群。推送为尽力而为——请以轮询「列出入群申请」为准。
- account.status.updated
账号的运行时 / 连接状态发生变化。
- account.profile.updated
账号公开名称资料已同步;目前由 WhatsApp 名称事件触发。
- account.started
账号运行时已连接,可以收发消息。
- account.history.synced
一次 WhatsApp 历史同步批次已结束;data.summary 给出已投递的会话与消息数量。
- account.auth.required
账号需要(重新)认证——验证码、扫码或两步验证。
- account.auth.succeeded
账号授权成功。发送前查询账号,确认 runtime_status=running。
- account.auth.failed
一次认证尝试失败。
备注
- 对于媒体消息,data.message.attachments[] 携带临时签名的 OSS url,以及 type、mimetype、size。
- subscribed_events 必须填上面的精确事件名或 ["*"];星号仅覆盖公开标准事件,不包含 provider.raw_event。创建或更新端点时,未知名称会被拒绝。
- 并非每个 provider 都发出全部事件,部分载荷字段也有差异——按 provider 的差异见「Webhook 标准事件差异」矩阵。
- message.read 与 message.delivered 携带精确的回执范围:data.message.ids 列出本次回执覆盖的全部消息,read_at / delivered_at 给出渠道上报的时间。
- WhatsApp 实时 message.received 在渠道提供可回复的消息标识时,可能携带 data.message.reply_token;把它原样放入 POST /v1/messages 的 reply_to.reply_token。它用于回复当前消息,不是父消息 id;历史同步消息不包含该字段。