概述
Webhook 是在消息送达、收件、联系人、模板、通话以及其他资源发生变化时,YCloud 向您的应用程序发送的 HTTPS 请求。准备工作
- 将您的 YCloud API 密钥存储在
YCLOUD_API_KEY中。 - 部署一个可公网访问的 HTTPS 端点。
- 保留原始请求体以进行签名验证。
- 确定您的应用程序所需的事件类型。
工作原理
- 创建 Webhook 端点并为其订阅事件类型。
- 保存返回的端点
secret。 - YCloud 向您的端点发送事件请求。
- 在信任请求之前验证
YCloud-Signature。 - 及时返回
2xx响应。 - 以幂等方式处理事件,因为推送可能会重复。
请求
使用POST /webhookEndpoints 创建端点。
请求字段
请求示例
订阅回显与交接事件
对于通过公开 REST API 入驻的 Agent,请创建包含以下订阅的端点。在控制台中创建的 Agent 不会发出这三个事件。若要修改现有端点,请保留您仍需要的任何事件订阅。whatsappMessage 负载。交接事件携带 whatsappMetaBusinessAgent 并保留其 Agent/控制信息。它们不使用 WhatsApp Business App 的 whatsapp.smb.message.echoes 协议。有关字段定义、示例、顺序以及交接关联限制,请参见 回显与交接事件详情。
订阅 Messenger 消息事件
创建或更新端点时,请在
enabledEvents 中包含您所需的事件名称。例如,要同时订阅所有四种事件,请使用:
messengerInboundMessage.id 和 metaMessageId,替换 text.body,并添加 editCount 和 editTime。消息的 sendTime 和 createTime 保持不变;事件外层的 createTime 为编辑时间。未编辑的消息会省略编辑字段。仅更新现有的入站消息。较旧的编辑会被忽略;不会重建缺失的消息和历史编辑记录。请通过消息 ID 关联更新,并使用累计计数以避免将旧文本覆盖到新版本上。源重试可能会为同一次保存的编辑生成另一个事件 ID。请参见入站编辑示例。
回应事件包含 pageId、作出回应的客户的 psid、目标 metaMessageId 以及 action(react 或 unreact)。可选的 reaction 和 emoji 可能会缺失,对于 unreact 尤为如此。回应不会改变消息的送达状态。目标消息可能源自 YCloud API 之外,因此该事件不需要本地消息记录,也不包含本地消息 ID。
事件的 createTime 保留了源交互时间。对客户投递的重试会保留其事件 id 和负载。源回调处理可能会为重复交互生成另一个事件 ID;请勿将事件 ID 视为回应或消息的唯一标识。有关这两种操作,请参见回应负载示例。
响应
响应将返回创建的端点及其签名secret。请妥善保存该密钥。YCloud 会使用它来生成 Webhook 签名。
响应示例
响应字段
接收事件
事件请求
YCloud 会向配置的url 发送一个 JSON 事件对象。该事件包含常用字段(如 id、type、apiVersion 和 createTime)以及对应类型的有效负载(payload)。
您的处理程序应当:
- 读取原始请求体。
- 在信任有效负载前,使用端点密钥验证
YCloud-Signature请求头。 - 及时返回成功的
2xx响应。 - 将耗时的处理操作放入队列中执行。
- 确保事件处理具备幂等性,避免重复推送触发重复的业务操作。
接收方响应
一旦签名和请求被接受,请立即返回成功的2xx HTTP 响应。响应体可以为空。
2xx 响应可能会导致 YCloud 重试推送该事件,因此请根据事件 id 进行去重。
常见有效负载示例
展开事件即可查看其完整的示例有效负载。这些示例均来自 OpenAPI Webhook 规范。如需查看所有支持的事件类型,请参阅所有 Webhook 有效负载示例。联系人创建事件
联系人创建事件
创建新联系人时的示例有效负载
联系人删除事件
联系人删除事件
删除联系人时的示例有效负载
客户取消订阅事件
客户取消订阅事件
客户取消订阅时的示例有效负载
客户恢复订阅
客户恢复订阅
客户恢复订阅时的示例有效负载
WhatsApp 模板归档事件
WhatsApp 模板归档事件
WhatsApp 模板归档时的示例有效负载
WhatsApp 模板取消归档事件
WhatsApp 模板取消归档事件
WhatsApp 模板取消归档时的示例有效负载。该模板状态为 Meta 返回的当前状态,并不代表已进行重新审批审核。
WhatsApp 通话建立事件
WhatsApp 通话建立事件
WhatsApp 通话建立时的示例有效负载
WhatsApp 通话结束事件
WhatsApp 通话结束事件
WhatsApp 通话结束时的示例有效负载
WhatsApp 通话状态更新事件
WhatsApp 通话状态更新事件
WhatsApp 通话状态更新时的示例有效负载
Event 架构和交互式有效负载参考,请参阅 Webhook 事件有效负载。
轮换端点密钥
如果密钥泄露或根据安全策略规定,请轮换密钥:反复无法接收通知的端点可能会变为
pending 状态并停止接收事件。请监控 Webhook 失败情况及端点状态。
