WhatsApp Webhook 字段,以及各自的去向
WhatsApp Business 账户以带名称的字段发送事件。2 项承载对话内容,并发送到您的端点;另 6 项承载运行状态,也是监控的基础。了解两类字段的区别,才能决定架构。
- 2 项消息字段,6 项运行字段
- 按账户设置分流
- 带名称的字段,不是通用负载
7 天内不收取任何费用。随时取消。
各字段承载什么?
messages 承载客户发送到 WhatsApp Business 的所有内容:文字、媒体引用、回复和反应。smb_message_echoes 承载团队从 WhatsApp Business 应用发送的内容。它只存在于 Coexistence 连接中,让软件看见人工回复。
account_update 承载连接状态:应用从账户卸载后触发的 PARTNER_REMOVED、ACCOUNT_OFFBOARDED、ACCOUNT_RECONNECTED,以及限制或违规事件。phone_number_quality_update 承载质量评级和吞吐量变化。account_alerts 承载 Meta 针对账户发出的警报,account_review_update 承载审核结果。
business_capability_update 承载消息上限和功能变化,phone_number_name_update 承载显示名称的批准或拒绝。
为什么分流会影响架构?
原因是它决定对话内容是否会到达服务商。
override 会让 2 项消息字段直接从 Meta 发送到您的端点。另 6 项运行字段继续发送到服务商,因此可以在无人持有消息的情况下提供控制台和警报功能。
这也是为什么“不存储消息”的说法可以是结构层面的事实,而不只是政策。如果消息字段被发送到别处,代码中就没有可用于存储它们的路径。在我们的情况下,未配置 override 的账户回退到默认 callback,处理程序会丢弃这些事件,不持久化。
处理程序需要接收哪些字段?
如果已配置 override,就只有 2 项消息字段;值得让处理程序忽略其他字段,而不是因其而失败。
Meta 会随时间增加字段,负载结构也可能在未提前获知的情况下增加键。处理程序按字段名称分支,并忽略无法识别的内容,就能继续运行;假定固定结构的处理程序在遇到首个陌生事件时抛出错误。
也值得明确处理 smb_message_echoes,而不是把它当作噪声。没有它,软件无法知道人工已经回复,客户可能针对相同问题收到 2 条回复。
常见错误
- 把事件当作通用负载。每项事件都标明字段名称,处理程序需要按名称分支。
- 忽略 smb_message_echoes。没有它,软件可能在人工已经回复后继续回复。
- 遇到无法识别的字段就失败,而不是跳过。Meta 可直接添加字段,无需征求同意。
EasyCoexistence 订阅运行字段供监控使用,并将 2 项消息字段发送到您的端点;未配置端点时,直接丢弃,不作持久化。
常见问题
我能只接收部分字段吗?
配置 override 后,消息路径将发送给您。运行字段的分流固定,因为监控建立在这部分字段上。
smb_message_echoes 是否存在于普通 Cloud API 连接中?
不在。它的存在是因为 Coexistence 连接允许人工从应用发送,软件也从 API 发送。
没有配置目的地时,消息事件怎么处理?
它们到达我们的默认 callback 后,直接丢弃,不作持久化。
字段名称属于 Meta,还是属于您?
属于 Meta。这里没有我们自行创造的名称,所以值得一次记住。
继续阅读
准备开始了吗?
几分钟即可设置 WhatsApp Coexistence,而不是几个月。应用会继续在手机上运行。
开始免费试用7 天内不收取任何费用。随时取消。验证时间