messages Webhook
messages 是承载客户发往您号码的所有内容的字段,包括文字、媒体、回复、反应和互动响应。对于路由 Coexistence 号码,消息从 Meta 直接发送到您的端点,完全不会经过服务商。
负载包含哪些内容
单次交付可包含一条或多条消息,每条包含发件人、id 和 type。type 决定还会出现哪些其他键。
- 发件人的电话号码,以及其所发往号码的 phone_number_id。
- wamid 消息 id,去重机制以此为基础。
- unix 时间戳。
- type:text、image、audio、video、document、sticker、location、contacts、reaction、button 或 interactive。
- 对于媒体类型,负载包含用于获取媒体的 media id,而不是媒体字节本身。
为什么路由号码上的消息永远不会到达本服务
override 会将此字段和 smb_message_echoes 一起移至您指定的目标。
Meta 允许应用覆盖 WhatsApp Business Account 交付其 Webhook 的位置。本服务将 override 指向您的 URL,使消息路径完全离开本服务基础设施。本服务端不会产生副本、队列或保留内容,因为消息从未到达这里。
未指定目标时,这些事件会回退到本服务的默认回调,处理程序会丢弃它们,不作持久化。存储声明和实际代码路径并不是一回事:对话内容没有路径可去。
如何正确确认
在执行工作前返回 200,不要等工作完成后才返回。
Meta 将缓慢响应视为失败并重试,因此内联处理的处理程序可能多次看到同一消息。立即响应,将负载放入队列或后台任务,让工作在请求之外完成。
在无服务器环境中,必须如此。函数返回后继续工作,响应完成瞬间可能被冻结,因此确认和处理必须真正分开。
如何去重
始终基于 wamid 去重,因为重试是常态,不是例外。
同一消息可能因您一侧没有问题的原因到达两次:响应缓慢、网络超时,或部署在交付期间上线。保存已见 id 并跳过重复项只需几行代码,结果是客户只收到一次回复,而不是两次。
在 Coexistence 号码上,去重更加重要,因为 smb_message_echoes 也沿同一路径到达。将每个事件视为新事件的处理程序,可能在人工回复之上再次回复。
常见错误
- 在返回 200 前处理消息。Meta 会因响应缓慢而重试,导致您处理同一消息两次。
- 跳过去重。重试是设计的一部分,不是边缘情况。
- 期待负载中包含媒体字节。负载只包含用于获取媒体的 media id。
EasyCoexistence 将此字段从 Meta 直接路由到您的端点,只保留监控所需的运行事件,因此对话内容完全没有路径进入本服务的存储。
常见问题
EasyCoexistence 能看到我的客户消息吗?
不会。override 将此字段交付到您的端点。任何到达本服务默认回调的内容都会被丢弃,不会持久化。
单次请求中可以到达多条消息吗?
可以。单次交付可包含多条消息,因此处理程序需要遍历,而不是只读取第一条。
如何获取媒体?
负载包含 media id。使用号码的访问令牌,通过它获取 URL,然后下载。
smb_message_echoes 是什么?
配套字段,承载团队从 WhatsApp Business 应用发出的内容。它只存在于 Coexistence 号码。
继续阅读
准备开始了吗?
几分钟即可设置 WhatsApp Coexistence,而不是几个月。应用会继续在手机上运行。
开始免费试用验证时间