使用 Webhook 設定通知

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

什麼是 Webhook?

Webhook 會定義由事件觸發的 HTTP 回呼處理常式。您可以建立及設定 Webhook 來處理事件通知,不必使用收益通知範本,詳情請參閱「使用通知範本設定通知」。

如要使用 Webhook 設定通知,請使用 Edge Management UI 或 Management and Monetization API 完成下列步驟:

  1. 使用 UIAPI 新增定義通知事件回呼處理常式的 Webhook。
  2. 設定回呼處理常式
  3. 使用使用者介面API,為可調整費率方案設定通知。

管理 Webhook

使用 UIAPI 新增及管理定義通知事件回呼處理常式的 Webhook。

使用 UI 管理 Webhook

使用 UI 新增及管理定義通知事件回呼處理常式的 Webhook,詳情請參閱下列各節。

瀏覽「Webhook」頁面

存取「Webhook」頁面,如下所述。

邊緣

如要使用 Edge UI 存取「Webhook」頁面,請按照下列步驟操作:

  1. 登入 apigee.com/edge
  2. 在左側導覽列中,依序選取「發布」>「營利」>「Webhook」

系統會顯示「Webhook」頁面。

如圖所示,「Webhook」頁面可讓您:

Classic Edge (Private Cloud)

如要使用傳統 Edge UI 存取「Webhook」頁面,請按照下列步驟操作:

  1. 登入 http://ms-ip:9000,其中 ms-ip 是管理伺服器節點的 IP 位址或 DNS 名稱。
  2. 依序選取「管理」>「Webhook」

系統會顯示「Webhook」頁面。

「Webhook」頁面可讓您:

使用 UI 新增 Webhook

如要使用 UI 新增 Webhook,請按照下列步驟操作:

  1. 前往 Webhook 頁面
  2. 按一下「+ Webhook」
  3. 請輸入下列資訊 (所有欄位皆為必填)。
    欄位 說明
    名稱 Webhook 名稱。
    網址 事件通知觸發時要呼叫的回呼處理常式網址。請參閱「設定回呼處理常式」。
  4. 按一下 [儲存]

系統會將 Webhook 新增至清單,並預設為啟用。

使用使用者介面編輯 Webhook

如要使用 UI 編輯 Webhook,請按照下列步驟操作:

  1. 前往 Webhook 頁面
  2. 將游標懸停在要編輯的 Webhook 上,然後點按動作選單中的
  3. 視需要編輯 Webhook 欄位。
  4. 按一下「更新 Webhook」

使用 UI 啟用或停用 Webhook

如要使用 UI 啟用或停用 Webhook,請按照下列步驟操作:

  1. 前往 Webhook 頁面
  2. 將游標懸停在 Webhook 上,然後切換狀態開關來啟用或停用。

使用 UI 刪除 Webhook

如要使用 UI 刪除 Webhook,請按照下列步驟操作:

  1. 前往 Webhook 頁面
  2. 將游標懸停在要刪除的 Webhook 上,然後按一下

系統會刪除並從清單中移除 Webhook。

使用 API 管理 Webhook

請按照下列各節所述,使用 API 新增及管理 Webhook。

使用 API 查看所有 Webhook

/mint/organizations/{org_name}/webhooks 發出 GET 要求,即可查看所有 Webhook。 例如:

curl -X GET "https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks" \
  -H "Content-Type: application/json " \
  -u email:password

以下是傳回的回應範例:

{
  "totalRecords": 2,
  "webhooks": [
    {
      "created": 1460162656342,
      "enabled": false,
      "id": "21844a37-d26d-476c-93ed-38f3a4b24691",
      "name": "webhook1",
      "postUrl": "http://mycompany.com/callbackhandler1",
      "updated": 1460162656342,
      "updatedBy": "joe@example.com"
    },
        {
      "created": 1460138724352,
      "createdBy": "joe@example.com",
      "enabled": true,
      "id": "a39ca777-1861-49cf-a397-c9e92ab3c09f",
      "name": "webhook2",
      "postUrl": "http://mycompany.com/callbackhandler2",
      "updated": 1460138724352,
      "updatedBy": "joe@example.com"
    }

  ]
}

使用 API 查看 Webhook

如要查看單一 Webhook,請對 /mint/organizations/{org_name}/webhooks/{webhook_id} 發出 GET 要求。

例如:

curl -X GET "https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks/21844a37-d26d-476c-93ed-38f3a4b24691" \
  -H "Content-Type: application/json " \
  -u email:password

以下是回應範例:

{
   "created": 1460162656342,
   "enabled": false,
   "id": "21844a37-d26d-476c-93ed-38f3a4b24691",
   "name": "webhook1",
   "postUrl": "http://mycompany.com/callbackhandler1",
   "updated": 1460162656342,
   "updatedBy": "joe@example.com"
 }

使用 API 新增 Webhook

/mint/organizations/{org_name}/webhooks 發出 POST 要求,即可新增 Webhook。 您必須傳遞 Webhook 的名稱,以及事件通知觸發時要呼叫的回呼處理常式網址。

舉例來說,下列指令會建立名為 webhook3 的 Webhook,並將 callbackhandler3 指派給該 Webhook:

curl -X POST "https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks"
  -H "Content-Type: application/json "
  -d '{
    "name": "webhook3",
    "postURL": "http://mycompany.com/callbackhandler3"
    }' \
    -u email:password

以下是回應範例:

{
  "created": 1460385534555,
  "createdBy": "joe@example.com",
  "enabled": false,
  "id": "0a07eb1f-f485-4539-8beb-01be449699b3",
  "name": "webhook3",
  "orgId": "myorg",
  "postUrl": "http://mycompany.com/callbackhandler3",
  "updated": 1460385534555,
  "updatedBy": "joe@example.com"
}

使用 API 編輯 Webhook

如要編輯 Webhook,請對 /mint/organizations/{org_name}/webhooks/{webhook_id} 發出 PUT 要求。在要求主體中傳遞更新。

舉例來說,下列指令會更新與 webhook1 相關聯的回呼處理常式:

curl -X PUT "https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks/0a07eb1f-f485-4539-8beb-01be449699b3" \
  -H "Content-Type: application/json " \
  -d '{
    "postURL": "http://mycompany.com/callbackhandler4"
  }' \
  -u email:password

以下是回應範例:

{
  "created": 1460385534555,
  "enabled": false,
  "id": "0a07eb1f-f485-4539-8beb-01be449699b3",
  "name": "webhook3",
  "orgId": "myorg",
  "postUrl": "http://mycompany.com/callbackhandler4",
  "updated": 1460385534555,
  "updatedBy": "joe@example.com"
}

使用 API 啟用或停用 Webhook

如要啟用或停用 Webhook,請向 /mint/organizations/{org_name}/webhooks/{webhook_id} 發出 POST 要求 (與更新 Webhook 時相同),並在要求內文中將 enabled 屬性分別設為 true 或 false。如果停用 Webhook,發生事件時就不會觸發 Webhook。

舉例來說,下列程式碼會啟用 webhook3

curl -X POST "https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks/0a07eb1f-f485-4539-8beb-01be449699b3" \
  -H "Content-Type: application/json " \
  -d '{
    "enabled": "true"
  }' \
  -u email:password

以下是回應範例:

{
  "created": 1460385534555,
  "enabled": true,
  "id": "0a07eb1f-f485-4539-8beb-01be449699b3",
  "name": "webhook3",
  "orgId": "myorg",
  "postUrl": "http://mycompany.com/callbackhandler4",
  "updated": 1460385534555,
  "updatedBy": "joe@example.com"
}

使用 API 刪除 Webhook

如要刪除 Webhook,請對 /mint/organizations/{org_name}/webhooks/{webhook_id} 發出 DELETE 要求。

如要指定是否強制刪除進行中的程序,請將 forceDelete 查詢參數設為 truefalseforceDelete 查詢參數預設為啟用 (true)。

舉例來說,下列指令會刪除 webhook3

curl -X DELETE "https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks/21844a37-d26d-476c-93ed-38f3a4b24691" \
  -H "Content-Type: application/json " \
  -u email:password

設定回呼處理常式

以下顯示事件通知觸發時,傳送至 Webhook 定義的回呼處理常式的 JSON 要求格式。請務必確保回呼處理常式能適當處理要求。

{
        "orgName": "{org_id}",
        "developerEmail": "{dev_email}",
        "developerFirstName": "{first_name}",
        "developerLastName": "{last_name}",
        "companyName": "{company_name}",
        "applicationName": "{app_name}",
        "packageName": "{api_package_name}",
        "packageId": "{api_package_id}",
        "ratePlanId": "{rateplan_id}",
        "ratePlanName": "{rateplan_name}",
        "ratePlanType": "{rateplan_type}",
        "developerRatePlanQuotaTarget": {quota_target},
        "quotaPercentUsed": {percentage_quota_used},
        "ratePlanStartDate": {rateplan_startdate}, 
        "ratePlanEndDate": {rateplan_enddate},
        "nextBillingCycleStartDate": {next_billing_cycle_startdate},
        "products": ["{api_product_name}","{api_product_name}"],
        "developerCustomAttributes": [],
        "triggerTime": {trigger_time},
        "triggerReason": "{trigger_reason}",
        "developerQuotaResetDate": "{devquota_resetdate}"
}

設定浮動利率方案的通知

使用使用者介面API,為可調整費率方案設定 Webhook 通知。

使用使用者介面設定可調利率方案的通知

如要透過 UI 為可調整費率方案設定 webhook 通知,請按照下列步驟操作。

存取可調整費率方案的「通知」對話方塊

如要存取可調整費率方案的「通知」對話方塊,請按照下列步驟操作。

邊緣

如要使用 Edge UI 存取通知對話方塊,請按照下列步驟操作:

  1. 指定可調整的通知方案詳細資料所述,建立並發布可調整的通知費率方案。
  2. 在左側導覽列中,依序選取「發布」>「營利」>「費率方案」,即可存取「費率方案」頁面。
  3. 將游標懸停在已發布的可調整通知費率方案上,即可顯示動作。
  4. 按一下「+通知」

    系統會顯示「通知」對話方塊。

    注意:費率方案必須發布,才會顯示「+通知」動作。

Classic Edge (Private Cloud)

如要存取「通知」頁面,請按照下列步驟操作:

  1. 如要建立可調整的通知費率方案,請參閱「指定可調整的通知方案詳細資料」。
  2. 依序選取「發布」>「套裝組合」,即可查看費率方案。
  3. 按一下費率方案「動作」欄中的「+通知」

    系統會顯示「通知」對話方塊。

使用 UI 為可調整費率方案新增通知

如要在使用者介面中為可調整費率方案新增通知,請按照下列步驟操作:

  1. 存取「通知」對話方塊
  2. 在「通知間隔」下方設定通知條件,指定要觸發通知的交易目標數量百分比。具體來說:
    • 如要設定確切百分比,請在「At/From %」(在/從 % 數) 欄位中輸入百分比,並將「To %」(到 % 數) 欄位留空。
    • 如要設定百分比範圍,請分別在「At/From %」(在/從 %) 和「To %」(到 %) 欄位中輸入開始和結束百分比,並在「Step %」(步驟 %) 欄位中輸入增量值。根據預設,系統會在指定範圍內以 10% 的增量傳送通知。

    Notify At 欄位會更新,反映觸發事件的目標交易次數百分比。

  3. 如要設定其他通知條件,請按一下「+新增」,然後重複步驟 4。
  4. 在「Webhook」下方設定通知動作,選取一或多個 webhook,管理通知觸發時的回呼處理程序。
  5. 按一下「建立通知」

使用使用者介面編輯可調整費率方案的通知

如要透過使用者介面編輯可調利率方案的通知,請按照下列步驟操作:

  1. 存取「通知」對話方塊
  2. 按一下費率方案「動作」欄中的「+通知」
  3. 按一下 [編輯]
  4. 視需要修改值。
  5. 按一下「儲存通知」

使用 UI 刪除可調整費率方案的通知

如要刪除通知條件和動作,請按照下列步驟操作:

  1. 存取「通知」對話方塊
  2. 按一下費率方案「動作」欄中的「+通知」
  3. 按一下「刪除通知」

使用 API 設定可調整費率方案的通知

如要使用 API 設定可調整費率方案的通知,請按照「使用 API 管理通知條件和動作」一文所述程序操作,並使用本節所述屬性。

如要設定通知條件 (notificationCondition),請使用下列屬性值。詳情請參閱通知條件的設定屬性

屬性
RATEPLAN 可調整通知費率方案的 ID。
PUBLISHED TRUE,指出可調整的通知費率方案必須發布。
UsageTarget 您希望在達到目標交易數的百分比時觸發通知。

如果開發人員購買的通知費率可調整式方案即將達到或已達到目標交易次數,您可以使用這項屬性通知他們。舉例來說,如果開發人員購買了可調整通知率的方案,且目標交易次數設為 1000 次,您可以在開發人員達到 800 次交易 (目標交易次數的 80%)、1000 次交易 (100%) 或 1500 次交易 (150%) 時通知對方。

  • 如要設定確切百分比,請輸入 %= n。舉例來說,如果目標交易數的百分比達到 80%,%= 80 就會傳送通知。
  • 如要設定百分比範圍,請輸入起始和結束百分比,以及遞增值,格式如下:%= start to end by n。舉例來說,如果值為 %= 80 to 100 by 10,當交易次數達到目標次數的 80%、90% 和 100% 時,系統就會傳送通知。

如要設定通知動作,請在 actions 下方設定下列值。詳情請參閱「通知動作的設定屬性」。

屬性
actionAttribute WEBHOOK 觸發 Webhook。
value 您在上一節「使用 API 建立 Webhook」中定義的 Webhook ID。

以下範例說明如何建立通知條件,在目標交易次數百分比達到 80%、90%、100%、110% 和 120% 時觸發 Webhook。

{
    "notificationCondition": [
      {
        "attribute": "RATEPLAN",
        "value": "123456"
      },
      {
        "attribute": "PUBLISHED",
        "value": "TRUE"
      },
      {
        "attribute": "UsageTarget",
        "value": "%= 80 to 120 by 10"
      }
    } 
    ],
   "actions": [{
          "actionAttribute": "WEBHOOK",
          "value": "b0d77596-142e-4606-ae2d-f55c3c6bfebe",
        }]
  }

如要瞭解如何查看、更新及刪除通知條件和動作,請參閱:

Webhook 回應代碼

下表摘要說明 Webhook 回應代碼,以及系統如何解讀這些代碼。

回應代碼 說明
2xx 成功
5xx

要求失敗。系統會以 5 分鐘為間隔,最多重試要求三次。

注意: Webhook 要求的讀取和連線逾時時間各為 3 秒,因此要求可能會失敗。

Other response 要求失敗。系統不會重試要求。