跳转到主要内容
您可以在开发者文档中找到更专业的集成指导:开发者文档 - Webhook 集成指南

什么是 Webhook

Webhook 是一种 事件驱动的 HTTP 回调机制。当 YCloud 系统内发生特定事件时,它会通过 HTTPS 请求主动将事件数据推送到预先配置的 URL(Webhook 地址),从而无需频繁进行接口轮询。

创建 Webhook

1. 添加 Webhook 端点。

登录 YCloud 控制台,前往开发者 > Webhooks,然后点击添加端点以创建 Webhook 端点。
突出显示端点 URL 的空白添加端点对话框。

Enter your HTTPS endpoint URL, add an optional description, and choose the events before confirming.

2. 输入端点地址以监听相关事件。

YCloud 为 WhatsApp、SMS、Contact、Email 等提供了多种事件选项。
您可以在此处找到所有相关的事件有效负载:Webhook 有效负载
包含事件名称和搜索事件的 Webhook 事件菜单。

Use Search event to find the subscriptions your endpoint needs.

3. 验证 Webhook 签名

务必始终验证签名,以确保请求来自 YCloud 且未被篡改。
使用端点的签名 secret 验证 YCloud-Signature 请求头。请将密钥安全地存储在您的服务器上。有关端点密钥和验证流程,请参阅 Webhook 集成指南。

签名格式:

验证算法:

  1. 从请求头中提取时间戳 (t) 和签名 (s)(时间戳是以秒为单位的 Unix 时间戳)。
  2. 使用完全一致的原始请求体构建待签名有效负载 {timestamp}.{request_body}。切勿在请求体末尾追加句号。
  3. 使用 HMAC-SHA256 算法计算签名:
  4. 比对计算出的签名与接收到的签名。

4. 响应 Webhook

  1. 返回 2xx 状态码 (例如 200、201、204)
    • 任何非 2xx 响应都会触发重试。
  2. 快速响应 (建议在 6 秒内)
    • 快速响应会提高您的 Webhook 优先级。
    • 较慢的响应(>10 秒)可能会被降低优先级。
  3. 异步处理 (推荐)
    • 立即 返回 200 OK。
    • 在后台作业/队列中处理事件。

允许 YCloud Webhook 发送 IP

YCloud 从以下服务器 IP 地址发送 Webhook 请求:
  • 8.219.65.77
  • 47.236.160.49
如果您的企业防火墙、网关或 Webhook 服务器按源 IP 限制入站流量,请将这两个地址都添加到白名单中。若仅允许一个地址,可能会导致部分 Webhook 推送被拦截。
IP 白名单属于补充性的网络控制措施。对于每个 Webhook 请求,仍应继续验证 YCloud-Signature 请求头。

查看 Webhook 发送日志

YCloud 会记录 Webhook 发送尝试,以便您确认事件是否已发送并排查发送失败问题。 如果您的系统未收到预期的 Webhook,请在向上报修前检查发送日志:
  1. 在 YCloud 控制台中,前往 开发者 > Webhooks。
  2. 打开相应的 Webhook 端点并查看其发送日志。 图片
  3. 使用一个或多个筛选条件查找发送记录:
  • 状态:显示成功或失败的发送。
  • 事件:按 Webhook 事件类型筛选。
  • 事件 ID:搜索特定的 YCloud 事件 ID。
  • 数据 ID:对于消息事件,输入消息 ID 即可查找其发送记录。
  1. 选择一条记录以查看发送时间、请求有效负载、响应体和 HTTP 状态码。
失败的记录会包含相应的发送失败原因。利用响应和错误详情来检查您的端点 URL、可用性、处理时间以及 HTTP 响应。
当预期接收的 Webhook 缺失时,请先按消息 ID 或事件 ID 搜索。这有助于区分是发送失败还是事件与该端点的订阅不匹配。
发送失败将根据下方的重试计划自动重试。在排查问题时,请在日志中查看最新一次尝试记录。

常见问题

如果我配置了多个 Webhook URL,账户中所有 WABA 的事件都会发送到这些地址吗?

是的。在 开发者 > Webhooks 下配置的 Webhook 端点适用于整个 YCloud 账户。只要账户中任一 WABA 产生的事件与配置的事件订阅相匹配,YCloud 就会将其发送至各个适用的 Webhook URL。 如果需要将不同的 WABA 路由到不同的 Webhook URL,请使用自定义应用。通过自定义应用,您可以分配特定的 WhatsApp 电话号码,并为该应用配置专用的 Webhook 端点和事件订阅。

如果所有 7 次 Webhook 重试都失败了会怎样?

如果在第 7 次重试后您的服务仍未恢复,YCloud 将自动停止重试该事件。停止重试后,您的系统将不会再自动接收该事件。 在恢复服务后,请联系 YCloud 支持团队申请重放 Webhook。重放可用性有限:YCloud 只能重发系统中仍然可用的事件,较早的历史事件可能不再符合重放条件。
请勿将 Webhook 重放作为常规恢复策略。建议监控您的端点,及时返回 2xx 状态,并在 Webhook 推送日志中尽快排查失败原因。

错误处理

重试机制:

如果您的服务返回非 2xx 状态码或未响应,YCloud 将自动重试:
  • 重试计划:10 秒 → 30 秒 → 5 分钟 → 30 分钟 → 1 小时 → 2 小时 → 2 小时。
  • 最大重试次数:7 次。
  • 失败 7 次后:该事件将不再重试。

URL 暂停:

为保护系统资源,频繁失败的 URL 将被临时暂停:
  • 触发条件:每分钟失败 200 次,或每分钟累计失败时间超过 10 分钟
  • 暂停时长:3 分钟
  • 暂停期间:不会发送任何 Webhook 请求
  • 暂停结束后:自动恢复