Skip to main content

功能简介

Webhook 是 YCloud 在消息送达、入站消息、联系人、模板、通话以及其他资源发生变动时,向您的应用程序发送的 HTTPS 请求。

开始之前

  • 将您的 YCloud API 密钥存储在 YCLOUD_API_KEY 中。
  • 部署一个公网可访问的 HTTPS 端点。
  • 保留原始请求体以进行签名验证。
  • 确定您的应用程序需要哪些事件类型。

工作原理

  1. 创建一个 Webhook 端点并为其订阅事件类型。
  2. 存储返回的端点 secret。
  3. YCloud 向您的端点发送事件请求。
  4. 在信任请求之前验证 YCloud-Signature。
  5. 及时返回 2xx 响应。
  6. 以幂等方式处理事件,因为推送可能会重复。

请求

使用 POST /webhookEndpoints 创建端点。

请求字段

请求示例

订阅回显与交接事件

对于通过公开 REST API 接入的 Agent,请创建包含以下订阅的端点。在控制台创建的 Agent 不会触发这三个事件。如需修改现有端点,请保留您仍需要的任何事件订阅。
这两种回显事件类型携带标准消息格式的 whatsappMessage 负载。交接事件携带 whatsappMetaBusinessAgent 并保留其 Agent/控制信息。它们不使用 WhatsApp Business App whatsapp.smb.message.echoes 约定。有关字段定义、示例、顺序以及交接关联限制,请参见 回显和交接事件详情。

响应

响应会返回创建的端点及其签名 secret。请妥善保存该密钥。YCloud 会使用它来生成 Webhook 签名。

响应示例

响应字段

接收事件

事件请求

YCloud 向配置的 url 发送一个 JSON 事件对象。该事件包含通用字段,例如 id、type、apiVersion 和 createTime,以及特定类型的负载。 您的处理程序应当:
  1. 读取原始请求体。
  2. 在信任负载之前,使用端点密钥验证 YCloud-Signature 请求头。
  3. 及时返回成功的 2xx 响应。
  4. 将耗时较长的处理移至队列中。
  5. 保证事件处理的幂等性,以确保重复推送不会重复执行业务操作。
在签名验证之前,请勿解析或修改请求体。请使用服务器接收到的精确原始字节。

接收端响应

一旦签名和请求被接受,请立即返回成功的 2xx HTTP 响应。响应体可以为空。
将耗时较长的业务处理移至队列中。超时或非 2xx 响应可能会导致 YCloud 重试该事件,因此请按事件 id 进行去重。

常用负载示例

展开事件以查看其完整的示例负载。这些示例来自 OpenAPI webhook 规范。有关每种受支持的事件类型,请参见 所有 webhook 负载示例。
联系人属性变更时的示例负载
创建新联系人时的示例负载
联系人被删除时的示例负载
客户取消订阅时的示例负载
客户恢复订阅时的示例负载
WhatsApp 消息模板归档时的示例负载
WhatsApp 消息模板取消归档时的示例负载。模板状态为 Meta 返回的当前状态,并不代表重新进行了审核。
WhatsApp 通话接通时的示例负载
WhatsApp 通话结束时的载荷示例
WhatsApp 通话状态更新时的载荷示例
有关完整的 Event 规范和交互式载荷参考,请参阅 Webhook 事件载荷。

轮换终端节点密钥

如果密钥泄露或根据安全策略的要求,请轮换密钥:
轮换后立即将新密钥部署到您的接收端。
反复无法接收通知的终端节点可能会变为 pending 状态并停止接收事件。请监控 Webhook 失败情况和终端节点状态。
有关签名验证代码、重试间隔和接收端实现,请参阅 实现 Webhook 接收端。