什么是 WhatsApp 出站回显消息已创建
订阅 whatsapp.echo_message.created。
当 YCloud 为通过公共 REST API 接入的 Agent 记录出站回显消息时,您会收到此事件。从 whatsappMessage 读取标准消息格式的内容;请勿将此事件用于客户入站消息。
当前协议保持事件名称不变,同时将回显消息公开为标准 WhatsApp 消息。Agent、交接(handover)以及收件箱(Inbox)路由字段不属于此负载的一部分。
准备工作
- 通过 公共 REST API 接入 Agent。
- 在同一账户下将活跃的 Webhook 端点订阅到
whatsapp.echo_message.created。
- 针对原始请求体验证
YCloud-Signature,持久化接收每个事件,并对其进行幂等处理。
通过控制台创建的 Agent 不会发出此客户 Webhook。它们的收件箱同步属于单独的流程。
有关端点配置,请参见配置 Webhook。
工作原理
所有示例均使用占位符标识符。根据外层的 type 进行路由,并读取 whatsappMessage,而不是 whatsappMetaBusinessAgent、whatsappEchoMessage 或 data。
使用外层的 id 对重复投递进行去重。外层的 createTime 为 Webhook 事件时间;嵌套的消息时间字段为 RFC 3339 源时间。
- 使用
id 或 wamid 关联后续状态事件。
- 从
text.body 读取文本。对于媒体,检查 type 及相应的内容对象。媒体 ID 并非公开下载 URL。
- 客户电话号码和 BSUID 彼此独立。当源回调同时提供两者时,事件会包含
to 以及 recipientUserId 或 parentRecipientUserId。缺失的身份信息会被省略,且不会相互推断。
- 当源回调提供有效的电话号码时,
from 为商业显示电话号码。它并非由 phoneNumberId 派生得出。
- 回复上下文会规范化为标准消息协议。例如,源
context.id 会公开为 context.message_id。
- Agent、交接、路由、定价和会话字段均不包含在内。
status 是处理回显消息时存储的状态;并不保证一定是 sent。
- 客户入站消息使用
whatsapp.inbound_message.received。Business App 回显消息使用 whatsapp.smb.message.echoes。
YCloud 会在发送到您配置的 Webhook URL 的 HTTP POST 请求中携带这些 JSON 体。
持久化接收每个事件后返回 2xx 响应。耗时工作请异步处理。
出站文本回显
存储来自 whatsappMessage.text.body 的文本。id 和 wamid 用于关联后续状态事件。
从 whatsappMessage.text.body 读取回显的文本。使用 id 或 wamid 关联后续状态事件。
出站图片回显
消息内容因类型而异。请将媒体 ID 视为服务商引用标识,而非公开下载 URL。
使用 type 选择匹配的内容对象。将媒体 id 视为服务商引用标识。
相关示例