測試通知設定

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

引言

營利服務會提供一組 API,用來測試通知設定。具體而言,你可以:

測試 Webhook

Webhook 會定義由事件觸發的 HTTP 回呼處理常式。如要瞭解如何設定 Webhook,請參閱「使用 Webhook 設定通知」一文。

您可以執行下列步驟來測試 Webhook:

  1. 查看可用的 Webhook 通知觸發條件類型
  2. 查看 Webhook 通知測試的要求酬載範例
  3. 測試 Webhook 的執行情況

查看可用的 Webhook 通知觸發條件類型

向下列資源發出 GET 要求,查看可用的 Webhook 通知觸發條件類型:

/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}

在此情況下:

  • {org_name} 會指定機構名稱。
  • {webhook_id} 會指定 Webhook 的 ID。如要查看 Webhook 清單並取得 Webhook ID,請參閱使用 API 查看所有 Webhook
  • {developer_email_or_id} 會指定開發人員的 ID。如要查看開發人員清單,請參閱「清單開發人員」。
  • {app_id} 指定您要測試 Webhook 觸發條件的應用程式 ID。如要列出機構中的應用程式 ID,請參閱列出機構中的應用程式 ID
  • {product_id} 會指定您要測試 Webhook 觸發條件的 API 產品 ID。如要查看機構的 API 產品清單,請參閱列出 API 產品
  • {rateplan_id} 會指定您要測試 Webhook 觸發條件測試費率方案的 ID。房價方案 ID 與顯示名稱不同。如要查看費率方案的詳細資料 (包括 ID),請參閱 探索費率方案頁面

舉例來說,以下 cURL 呼叫會傳回 RATEPLANQUOTAUSAGE 做為 Webhook 通知觸發條件類型。

curl -H "Content-Type: application/json" -X GET \ 
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks/0a07eb1f-f485-4539-8beb-01be449699b3/test/joe@example.com/e759c119-510c-49a8-886c-f184091944bd/myproduct/mypackage_anrp" \ 
-u email:password

以下提供回應範例:

[
  "RATEPLANQUOTAUSAGE"
]

接下來,您必須決定 Webhook 通知觸發條件類型的要求酬載結構定義。

查看 Webhook 通知測試的範例要求酬載

查看向下列資源發出 GET 要求後,您可以用於 Webhook 通知測試的要求酬載範例:

/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}/{trigger_type}

在此情況下:

  • {org_name} 會指定機構名稱。
  • {webhook_id} 會指定 Webhook 的 ID。如要查看 Webhook 清單並取得 Webhook ID,請參閱使用 API 查看所有 Webhook
  • {developer_email_or_id} 會指定開發人員的 ID。如要查看開發人員清單,請參閱「清單開發人員」。
  • {app_id} 指定您要測試 Webhook 觸發條件的應用程式 ID。如要列出機構中的應用程式 ID,請參閱列出機構中的應用程式 ID
  • {product_id} 會指定您要測試 Webhook 觸發條件的 API 產品 ID。如要查看機構的 API 產品清單,請參閱列出 API 產品
  • {rateplan_id} 會指定您要測試 Webhook 觸發條件測試費率方案的 ID。房價方案 ID 與顯示名稱不同。如要查看費率方案的詳細資料 (包括 ID),請參閱 探索費率方案頁面
  • {trigger_type} 指定上一個步驟中傳回的 Webhook 通知觸發條件類型名稱 (列出可用的 Webhook 通知觸發條件類型)。

舉例來說,下列 cURL 呼叫會傳回 RATEPLANQUOTAUSAGE Webhook 通知觸發條件類型的範例要求酬載:

curl -H "Content-Type: application/json" -X GET \ 
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks/0a07eb1f-f485-4539-8beb-01be449699b3/test/joe@example.com/e759c119-510c-49a8-886c-f184091944bd/myproduct/mypackage_anrp/RATEPLANQUOTAUSAGE" \ 
-u email:password

以下是要求酬載的範例:

{
   "eventTriggerReason": "RATEPLANQUOTAUSAGE",
   "properties": [
   {
        "key": "quotaPercentUsed",
        "value": "100"
   }
   ]
}

接下來,您可以視需求修改傳回的範例要求酬載,然後使用該酬載測試 Webhook 的執行情況。

測試 Webhook 的執行作業

向下列資源發出 POST 要求,測試 Webhook 的執行情況:

/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}.

在此情況下:

  • {org_name} 會指定機構名稱。
  • {webhook_id} 會指定 Webhook 的 ID。如要查看 Webhook 清單並取得 Webhook ID,請參閱使用 API 查看所有 Webhook
  • {developer_email_or_id} 會指定開發人員的 ID。如要查看開發人員清單,請參閱「清單開發人員」。
  • {app_id} 指定您要測試 Webhook 觸發條件的應用程式 ID。如要列出機構中的應用程式 ID,請參閱列出機構中的應用程式 ID
  • {product_id} 會指定您要測試 Webhook 觸發條件的 API 產品 ID。如要查看機構的 API 產品清單,請參閱列出 API 產品
  • {rateplan_id} 會指定您要測試 Webhook 觸發條件測試費率方案的 ID。房價方案 ID 與顯示名稱不同。如要查看費率方案的詳細資料 (包括 ID),請參閱 探索費率方案頁面

視需要修改上一步傳回的範例要求酬載 (查看 Webhook 通知測試的範例要求酬載),並將其傳入要求酬載中。

舉例來說,下列 cURL 呼叫會測試指定 Webhook 的執行作業:

curl -H "Content-Type: application/json" -X POST -d \
'{
  "eventTriggerReason": "RATEPLANQUOTAUSAGE",
  "properties": [
    {
      "key": "quotaPercentUsed",
      "value": "120"
    }
  ]
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks/0a07eb1f-f485-4539-8beb-01be449699b3/test/joe@example.com/e759c119-510c-49a8-886c-f184091944bd/myproduct/mypackage_anrp" \ 
-u email:password

以下提供回應範例,指出通知已成功傳送至 Webhook:

{
  "original": {
    "createdDate": 1463619959930,
    "createdTimeStamp": 1463616000000,
    "notificationType": "WEBHOOK",
    "orgId": "myorg",
    "rawMessage": "{\"orgName\":\"myorg\",\"developerEmail\":\"joe@example.com\",\"developerFirstName\":\"Joe\",\"developerLastName\":\"Smith\",\"applicationName\":\"myapp\",\"packageName\":\"MyPackage\",\"packageId\":\"mypackage\",\"ratePlanId\":\"mypackage_anrp\",\"ratePlanName\":\"anrp\",\"ratePlanType\":\"STANDARD\",\"developerRatePlanQuotaTarget\":200,\"quotaPercentUsed\":\"120\",\"ratePlanStartDate\":1463616000000,\"ratePlanEndDate\":null,\"nextBillingCycleStartDate\":null,\"products\":[\"myproduct\"],\"developerCustomAttributes\":[]\"triggerTime\":1463619959929,\"triggerReason\":\"RATEPLANQUOTAUSAGE\",\"developerQuotaResetDate\":null}",
    "retryCount": 0,
    "retryStatuses": [],
    "source": "MailTo: [36112720-1304-4e0b-9b17-991f5e121ebb], Org: [myorg], TransactionId: [], LimitId: [], Key: []",
    "toEmail": "http://123.45.67.89/webhook",
    "updatedDate": 1463619959930
  },
  "raw": "This is the response",
  "responseCode": 200,
  "status": "NOTIFICATION_SENT"
}

查看和重新處理通知

透過營利功能,您可以設定由特定事件觸發的通知。如要進一步瞭解如何設定通知,請參閱「設定通知」一文。

系統會儲存每則通知的下列資訊:

  • 重試次數
  • 回應碼
  • 回應標頭
  • 回應內容 (僅限前 1000 個半形字元)

如要查看及重新處理通知,請按照下列步驟操作:

  1. 查看已傳送的通知
  2. 查看通知詳細資料
  3. 重新處理通知

查看已傳送的通知

向下列資源發出 GET 要求,即可查看特定機構的通知:

/organizations/{org_name}/notification-service-items

其中 {org_name} 會指定機構名稱。

您也可以選擇指定下列一或多個查詢參數,篩選回應中傳回的通知清單:

查詢參數 說明
startdate 開始日期,格式為 YYYY-MM-DD HH:mm:ss
enddate 結束日期,格式為 YYYY-MM-DD HH:mm:ss
status 通知的狀態。有效值包括:
  • BLANK_MESSAGE
  • DUPLICATE
  • FAILED
  • NOTIFICATION_SENT
  • OPT_OUT
  • QUEUED
  • TEMPLATE_NOT_FOUND
toemail 傳送通知的電子郵件 ID 或 Webhook。

最多傳回 1000 則通知。

hasMoreItems 旗標會在回應中指出指定清單中的通知數量是否大於 1000。如果 hasMoreItemstrue 表示通知數量超過可顯示的數量,而您想要查看其餘通知,則必須修正查詢參數篩選器,以便依據每項要求處理較小的通知群組。舉例來說,您可以使用多個較小的日期範圍提出多項要求,或是傳回只包含特定狀態值的通知。

舉例來說,下列 cURL 呼叫會列出指定日期範圍內指定 Webhook 「失敗」的通知:

curl -H "Content-Type: application/json" -X GET \ 
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/notification-service-items?enddate=2016-05-19 12:00:00&startdate=2016-05-18 12:00:00&status=FAILED&toemail=http://123.45.6789:8000/webhook" \ 
-u email:password 

以下提供回應範例:

 {
   "hasMoreItems": false,
   "notifications": [
   { 
      "createdDate": 1463626865974, 
      "createdTimeStamp": 1463616000000, 
      "id": "9d87c6ea-1394-495b-bfb7-1d2e7ef3f837", 
      "notificationType": "WEBHOOK", 
      "orgId": "Org_d40f6c2e-1d6d-11e6-a4ed-af8444f24e4f", 
      "rawMessage": "{\"orgName\":\"Org_d40f6c2e-1d6d-11e6-a4ed-af8444f24e4f\",\"developerEmail\":\"joe@example.com\",\"developerFirstName\":\"Joe\",\"developerLastName\":\"Smith\",\"applicationName\":\"MyApp\",
\"packageName\":\"test-package\",\"packageId\":\"myorg@@@test-package-9ubo\",\"ratePlanId\":\"myorg@@@test-package-9ubo_anrp\",\"ratePlanName\":\"anrp\",\"ratePlanType\":\"STANDARD\",
\"developerRatePlanQuotaTarget\":10,\"quotaPercentUsed\":\"20\",\"ratePlanStartDate\":1463616000000,\"ratePlanEndDate\":null,\"nextBillingCycleStartDate\":1464739200000,\"products\":[\"product1\"],
\"developerCustomAttributes\":[],\"triggerTime\":1463626865907,\"triggerReason\":\"RatePlanQuotaUsage\",\"developerQuotaResetDate\":\"1464810145000\"}", 
      "retryCount": 3, 
      "retryStatuses": [ 
      { 
         "responseCode": 500, 
         "responseMessage": "{\"Headers\":\"[{\"name\":\"Content-length\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":15,\"value\":\"20\",\"elements\":[{\"name\":\"20\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]},{\"name\":\"Date\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":5,\"value\":\"Thu, 19 May 2016 03:01:09 GMT\",\"elements\":[{\"name\":\"Thu\",\"value\":null,\"parameters\":[],\"parameterCount\":0},{\"name\":\"19 May 2016 03:01:09 GMT\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]}]\",\"StatusCode\":\"500\",\"Content : \":\"This is the response\"}", 
         "retriedAt": 1463626869184,
         "retryAttempt": 1 
      }, 
      { 
         "responseCode": 500, 
         "responseMessage": "{\"Headers\":\"[{\"name\":\"Content-length\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":15,\"value\":\"20\",\"elements\":[{\"name\":\"20\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]},{\"name\":\"Date\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":5,\"value\":\"Thu, 19 May 2016 03:01:09 GMT\",\"elements\":[{\"name\":\"Thu\",\"value\":null,\"parameters\":[],\"parameterCount\":0},{\"name\":\"19 May 2016 03:01:09 GMT\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]}]\",\"StatusCode\":\"500\",\"Content : \":\"This is the response\"}", 
         "retriedAt": 1463626869318, 
         "retryAttempt": 2 
      }, 
      { 
         "responseCode": 500, 
         "responseMessage": "{\"Headers\":\"[{\"name\":\"Content-length\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":15,\"value\":\"20\",\"elements\":[{\"name\":\"20\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]},{\"name\":\"Date\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":5,\"value\":\"Thu, 19 May 2016 03:01:09 GMT\",\"elements\":[{\"name\":\"Thu\",\"value\":null,\"parameters\":[],\"parameterCount\":0},{\"name\":\"19 May 2016 03:01:09 GMT\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]}]\",\"StatusCode\":\"500\",\"Content : \":\"This is the response\"}", 
         "retriedAt": 1463626869378, 
         "retryAttempt": 3 
      } 
      ], 
      "source": "MailTo: [6c3cde37-a8f1-4077-adbe-e9f6605a7299], Org: [myorg], TransactionId: [b8d763be-7185-450d-b421-df38c870fabd], LimitId: [RatePlan-Limit:myorg@@@test-package-9ubo_anrp], Key: [myorg@@@kjGSxEGtZeekBEyI~myorg@@@test-package-9ubo_anrp~Transactions~Calls~20]", 
      "status": "FAILED", 
      "toEmail": "http://123.45.67.89:8000/webhook", 
      "updatedDate": 1463626865974 
   } 
   ] 
}

查看通知的詳細資料

向下列資源發出 GET 要求,查看特定通知的詳細資料:

/organizations/{org_name}/notification-service-items/{notification_id}

在此情況下:

  • {org_name} 會指定機構名稱。
  • {notification_id} 指定您要顯示詳細資料的通知 ID。查看已傳送的通知時,您可以從回應輸出結果中取得通知 ID。

舉例來說,以下 cURL 呼叫會列出 ID 為 4b3dfadf-3a96-4a92-9512-1feff22f74f3 的通知詳細資料:

curl -H "Content-Type: application/json" -X GET \ 
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/notification-service-items/faa8e6a8-754e-40e8-9e0c-4dee6c9aca23" \ 
-u email:password
 

以下提供回應範例:

 {
  "createdDate": 1461062402871,
  "createdTimeStamp": 1461024000000,
  "id": "faa8e6a8-754e-40e8-9e0c-4dee6c9aca23",
  "notificationType": "WEBHOOK",
  "orgId": "myorg",
  "rawMessage": "{\"orgName\":\"myorg\",\"developerEmail\":\"joe@example.com\",\"developerFirstName\":\"Joe\",\"developerLastName\":\"Smith\",\"applicationName\":\"myapp\",\"packageName\":\"mypackage\",\"ratePlanName\":\"anrp\",\"ratePlanType\":\"STANDARD\",\"developerRatePlanQuotaTarget\":54000,\"quotaPercentUsed\":\"1\",\"ratePlanStartDate\":1460419200000,\"ratePlanEndDate\":null,\"nextBillingCycleStartDate\":null,\"products\":[\"myproduct\"],\"developerCustomAttributes\":[],\"triggerTime\":1461062395966,\"triggerReason\":\"RatePlanQuotaUsage\"}",
  "retryCount": 0,
  "retryStatuses": [],
  "source": "MailTo: [c9e42fcd-9632-4376-b92d-0fa27f178a3b], Org: [myorg], TransactionId: [0352e568-2724-42d9-a264-1b62586d5948], LimitId: [RatePlan-Limit:amyorg@@@mypackage-a0y9_anrp], Key: [myorg@@@PPXsQbkyO1bBhQOh~myorg@@@mypackage-a0y9_anrp~Transactions~Calls~1]",
  "status": "NOTIFICATION_SENT",
  "toEmail": "http://123.45.67.89:8000/webhook",
  "updatedDate": 1461062402871
}

重新處理通知

向下列資源發出 POST 要求,重新處理通知:

/organizations/{org_name}/notification-service-items/{notification_id}/reprocess

在此情況下:

  • {org_name} 會指定機構名稱。
  • {notification_id} 指定您要顯示詳細資料的通知項目 ID。查看已傳送的通知時,您可以從回應輸出結果中取得通知 ID。

舉例來說,下列 cURL 呼叫會重新處理 ID 為 4b3dfadf-3a96-4a92-9512-1feff22f74f3 的通知:

curl -H "Content-Type: application/json" -X POST \ 
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/notification-service-items/faa8e6a8-754e-40e8-9e0c-4dee6c9aca23/reprocess" \ 
-u email:password
 
{
  "createdDate": 1461062402871,
  "createdTimeStamp": 1461024000000,
  "id": "faa8e6a8-754e-40e8-9e0c-4dee6c9aca23",
  "notificationType": "WEBHOOK",
  "orgId": "myorg",
  "rawMessage": "{\"orgName\":\"myorg\",\"developerEmail\":\"joe@example.com\",\"developerFirstName\":\"Joe\",\"developerLastName\":\"Smith\",\"applicationName\":\"myapp\",\"packageName\":\"mypackage\",\"ratePlanName\":\"anrp\",\"ratePlanType\":\"STANDARD\",\"developerRatePlanQuotaTarget\":54000,\"quotaPercentUsed\":\"1\",\"ratePlanStartDate\":1460419200000,\"ratePlanEndDate\":null,\"nextBillingCycleStartDate\":null,\"products\":[\"myproduct\"],\"developerCustomAttributes\":[],\"triggerTime\":1461062395966,\"triggerReason\":\"RatePlanQuotaUsage\"}",
  "retryCount": 0,
  "retryStatuses": [
    {
      "responseCode": 200,
      "responseMessage": "{\"Headers\":\"[{\"name\":\"Accept-Encoding\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":16,\"elements\":[{\"name\":\"gzip\",\"value\":null,\"parameters\":[],\"parameterCount\":0},{\"name\":\"deflate\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"gzip,deflate\"},{\"name\":\"Content-Type\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":13,\"elements\":[{\"name\":\"application/json\",\"value\":null,\"parameters\":[{\"name\":\"charset\",\"value\":\"UTF-8\"}],\"parameterCount\":1}],\"value\":\"application/json; charset=UTF-8\"},{\"name\":\"Date\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":5,\"elements\":[{\"name\":\"Mon\",\"value\":null,\"parameters\":[],\"parameterCount\":0},{\"name\":\"23 May 2016 21:46:37 GMT\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"Mon, 23 May 2016 21:46:37 GMT\"},{\"name\":\"Server\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":7,\"elements\":[{\"name\":\"Apigee Router\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"Apigee Router\"},{\"name\":\"User-Agent\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":11,\"elements\":[{\"name\":\"Apache-HttpClient/4.3.5 (java 1.5)\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"Apache-HttpClient/4.3.5 (java 1.5)\"},{\"name\":\"X-Forwarded-For\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":16,\"elements\":[{\"name\":\"54.200.58.80\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"54.200.58.80\"},{\"name\":\"X-Forwarded-Port\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":17,\"elements\":[{\"name\":\"80\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"80\"},{\"name\":\"X-Forwarded-Proto\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":18,\"elements\":[{\"name\":\"http\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"http\"},{\"name\":\"Content-Length\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":15,\"elements\":[{\"name\":\"1173\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"1173\"},{\"name\":\"Connection\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":11,\"elements\":[{\"name\":\"keep-alive\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"keep-alive\"}]\",\"StatusCode\":\"200\",\"Content : \":\"{\"orgName\":\"myorg\",\"developerEmail\":\"joe@example.com\",\"developerFirstName\":\"Joe\",\"developerLastName\":\"Smith\",\"applicationName\":\"MyApp\",\"packageName\":\"mypackage\",\"ratePlanName\":\"anrp\",\"ratePlanType\":\"STANDARD\",\"developerRatePlanQuotaTarget\":54000,\"quotaPercentUsed\":\"1\",\"ratePlanStartDate\":1460419200000,\"ratePlanEndDate\":null,\"nextBillingCycleStartDate\":null,\"products\":[\"product1\"],\"developerCustomAttributes\":[],
  "source": "MailTo: [c9e42fcd-9632-4376-b92d-0fa27f178a3b], Org: [myorg], TransactionId: [0352e568-2724-42d9-a264-1b62586d5948], LimitId: [RatePlan-Limit:amyorg@@@mypackage-a0y9_anrp], Key: [myorg@@@PPXsQbkyO1bBhQOh~myorg@@@mypackage-a0y9_anrp~Transactions~Calls~1]",
  "status": "NOTIFICATION_SENT",
  "toEmail": "http://123.45.67.89:8000/webhook",
  "updatedDate": 1461062402871
}