# 创建并管理拥护者的 webhook 订阅

Webhook 是在事件发生时执行的代码。Advocate 允许您使用 webhooks 注册一个 URL，每当程序中发生事件时我们会向该 URL 发送 POST 请求，例如，当为新参与者创建自定义优惠码时，会创建一个事件对象。有两种创建和管理 webhooks 的方法： [通过 Advocate API](https://integrations.impact.com/impact-brand/docs/api-webhooks) 或在 Advocate 平台中。本文将说明如何通过 Advocate 平台管理 webhooks。

#### 创建 webhook 订阅

1. 从顶部导航栏，选择 ![](https://1186853034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMLlMoFBtKJa8ptd3zaw%2Fuploads%2Fgit-blob-1183576591b45997efe4dc81a25024640591d02a%2F245137dc972a7a7f6165b59538fcdbac8fd5bd8fee4ba9f20c1a2982c5b58b57.svg?alt=media) **\[用户资料] → 设置**.&#x20;
2. 在下方左侧栏中 *Advocate 设置*下，选择 **Webhooks**.
3. 在 *Webhook 订阅* 页面，选择 **创建订阅**.
4. 下方 *发布到 URL*，输入应用用于发送有关特定事件实时更新的唯一地址。
5. 可选地，在下面 *Webhook 名称*中，输入新 webhook 订阅的名称。
6. 选择 **保存**.

#### 排查 webhook 日志

当您注册一个 URL，使得 Advocate 在程序中发生事件时向其发送 POST 时，您可以查看日志并排查任何失败的 webhook 事件。

**访问您的 webhook 日志**

1. 从顶部导航栏，选择 ![](https://1186853034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMLlMoFBtKJa8ptd3zaw%2Fuploads%2Fgit-blob-1183576591b45997efe4dc81a25024640591d02a%2F245137dc972a7a7f6165b59538fcdbac8fd5bd8fee4ba9f20c1a2982c5b58b57.svg?alt=media) **\[用户资料] → 设置**.&#x20;
2. 在下方左侧栏中 *Advocate 设置*下，选择 **Webhooks**.
3. 在 *Webhook 订阅* 页面，选择 **查看日志**.
4. 使用下面的筛选器 *Webhooks 事件日志* 来筛选 webhooks。
   * 请参阅 *筛选参考* 有关更多信息，请参见下方。

<details>

<summary>筛选参考</summary>

| 筛选器 | 说明                                                                                                                         |
| --- | -------------------------------------------------------------------------------------------------------------------------- |
| 类型  | 筛选该 webhook [事件类型](https://integrations.impact.com/impact-brand/docs/api-webhooks#section-webhook-events)。此筛选默认设置为 *所有类型*. |
| 时期  | 筛选 webhook 最后更新的时期。此筛选默认设置为 *所有时间*.                                                                                        |

</details>

**查看 webhook 详细信息**

1. 选择特定的 webhook 以打开 *Webhook 详细信息* 视图。
2. 此视图提供可用于排查 webhook 订阅的问题的信息。
   * 请参阅 *事件参考* 有关更多信息，请参见下方。

<details>

<summary>事件参考</summary>

| 筛选器        | 说明                                                                                                        |
| ---------- | --------------------------------------------------------------------------------------------------------- |
| 类型         | 该 webhook [事件类型](https://integrations.impact.com/impact-brand/docs/api-webhooks#section-webhook-events).  |
| Webhook ID | 该 webhook 的唯一标识符。                                                                                         |
| 创建日期       | 创建该 webhook 的日期。                                                                                          |
| 事件数据       | 该 webhook [有效负载](https://integrations.impact.com/impact-brand/docs/api-webhooks#section-payloads).        |
| 订阅         | 接收该 webhook 的 webhook 订阅及其状态。                                                                             |
| 订阅详情       | 有关从 webhook 订阅端点收到的响应的详细信息。详细信息可以包括 webhook 的投递尝试，显示尝试的时间戳、从目标收到的 HTTP 状态码，以及由于请求等待目标服务器响应时间过长而导致尝试超时的情况。 |

</details>

**针对失败事件投递的 webhook 重试系统**

* REST 钩子在事件触发后会立即投递。如果端点未能成功响应投递尝试（即未以 200 状态码响应），则该次投递将被视为失败。
* 失败的投递将在上一次失败尝试后每小时重试一次，直到要么成功投递，要么已进行 72 次尝试（按每小时重试一次的频率约为 3 天）。
* 持续返回错误的 webhook 端点将在出现以下数量的错误后被自动禁用：

  | 状态码    | 收到的错误 |
  | ------ | ----- |
  | 4xx 错误 | 1000  |
  | 5xx 错误 | 2000  |
  | 3xx 错误 | 2000  |
