easyCoexistence
登录开始免费试用
Meta Tech Provider

messages Webhook

messages 是承载客户发往您号码的所有内容的字段,包括文字、媒体、回复、反应和互动响应。对于路由 Coexistence 号码,消息从 Meta 直接发送到您的端点,完全不会经过服务商。

messages

承载客户入站消息的 Webhook 字段。

wamid

用于去重重试的消息 id 前缀。

200

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 完成这些操作

EasyCoexistence 将此字段从 Meta 直接路由到您的端点,只保留监控所需的运行事件,因此对话内容完全没有路径进入本服务的存储。

常见问题

EasyCoexistence 能看到我的客户消息吗?

不会。override 将此字段交付到您的端点。任何到达本服务默认回调的内容都会被丢弃,不会持久化。

单次请求中可以到达多条消息吗?

可以。单次交付可包含多条消息,因此处理程序需要遍历,而不是只读取第一条。

如何获取媒体?

负载包含 media id。使用号码的访问令牌,通过它获取 URL,然后下载。

smb_message_echoes 是什么?

配套字段,承载团队从 WhatsApp Business 应用发出的内容。它只存在于 Coexistence 号码。

继续阅读

准备开始了吗?

几分钟即可设置 WhatsApp Coexistence,而不是几个月。应用会继续在手机上运行。

开始免费试用

验证时间

messages Webhook