Настройка тестового уведомления

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Введение

Монетизация предоставляет набор API, которые вы можете использовать для проверки настройки уведомлений. В частности, вы можете:

Тестирование вебхуков

Вебхук определяет обработчик обратного вызова HTTP, который запускается событием. Информацию о настройке веб-перехватчиков см. в разделе Настройка уведомлений с помощью веб-перехватчиков .

Вы можете протестировать свои вебхуки, выполнив следующие шаги:

  1. Просмотр доступных типов триггеров уведомлений веб-перехватчика
  2. Просмотр примера полезных данных запроса для тестирования уведомлений веб-перехватчика
  3. Проверка выполнения вебхука

Просмотр доступных типов триггеров уведомлений веб-перехватчиков

Просмотрите доступные типы триггеров уведомлений веб-перехватчика, отправив запрос GET к следующему ресурсу:

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

Где:

  • {org_name} указывает название организации.
  • {webhook_id} указывает идентификатор веб-перехватчика. Чтобы просмотреть список веб-перехватчиков и получить идентификатор веб-перехватчика, см. раздел Просмотр всех веб-перехватчиков с помощью API .
  • {developer_email_or_id} указывает идентификатор разработчика. Чтобы просмотреть список разработчиков, см. Список разработчиков .
  • {app_id} указывает идентификатор приложения, для которого вы тестируете срабатывание веб-перехватчика. Чтобы получить список идентификаторов приложений в вашей организации, см. раздел Список идентификаторов приложений в организации .
  • {product_id} указывает идентификатор продукта API, для которого вы тестируете срабатывание веб-перехватчика. Чтобы просмотреть список продуктов API для организации, см. раздел Список продуктов API .
  • {rateplan_id} указывает идентификатор тарифного плана, для которого вы тестируете срабатывание вебхука. Идентификатор тарифного плана отличается от отображаемого имени. Чтобы просмотреть подробную информацию о тарифном плане, включая идентификатор, см. страницу «Изучение тарифных планов» .

Например, следующий вызов cURL возвращает RATEPLANQUOTAUSAGE в качестве типа триггера уведомления веб-перехватчика.

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"
]

Далее вам необходимо определить схему полезных данных запроса для типа триггера уведомления веб-перехватчика.

Просмотр образца полезных данных запроса для тестирования уведомлений веб-перехватчика

Просмотрите пример полезных данных запроса, которые можно использовать для тестирования уведомлений веб-перехватчика, отправив запрос GET к следующему ресурсу:

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

Где:

Например, следующий вызов cURL возвращает пример полезных данных запроса для типа триггера уведомления веб-перехватчика RATEPLANQUOTAUSAGE :

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"
   }
   ]
}

Затем вы при необходимости измените возвращаемые полезные данные примера запроса и используйте их для проверки выполнения веб-перехватчика.

Тестирование выполнения вебхука

Проверьте выполнение веб-перехватчика, отправив POST-запрос к следующему ресурсу:

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

Где:

  • {org_name} указывает название организации.
  • {webhook_id} указывает идентификатор веб-перехватчика. Чтобы просмотреть список веб-перехватчиков и получить идентификатор веб-перехватчика, см. раздел Просмотр всех веб-перехватчиков с помощью API .
  • {developer_email_or_id} указывает идентификатор разработчика. Чтобы просмотреть список разработчиков, см. Список разработчиков .
  • {app_id} указывает идентификатор приложения, для которого вы тестируете срабатывание веб-перехватчика. Чтобы получить список идентификаторов приложений в вашей организации, см. раздел Список идентификаторов приложений в организации .
  • {product_id} указывает идентификатор продукта API, для которого вы тестируете срабатывание веб-перехватчика. Чтобы просмотреть список продуктов API для организации, см. раздел Список продуктов API .
  • {rateplan_id} указывает идентификатор тарифного плана, для которого вы тестируете срабатывание вебхука. Идентификатор тарифного плана отличается от отображаемого имени. Чтобы просмотреть подробную информацию о тарифном плане, включая идентификатор, см. страницу «Изучение тарифных планов» .

Измените полезные данные примера запроса, возвращенные на предыдущем шаге ( Просмотр образца полезных данных запроса для тестирования уведомлений веб-перехватчика ) по желанию, и передайте его в полезные данные запроса.

Например, следующий вызов cURL проверяет выполнение указанного веб-перехватчика:

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

Ниже приведен пример ответа, указывающий, что уведомление было успешно отправлено на веб-перехватчик:

{
  "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 Идентификатор электронной почты или веб-хук, на который было отправлено уведомление.

Возвращается максимум 1000 уведомлений.

В ответе флаг hasMoreItems указывает, превышает ли количество уведомлений в указанном списке более 1000. Если hasMoreItems имеет значение true , что указывает на то, что уведомлений больше, чем можно отобразить, и вы хотите просмотреть оставшиеся уведомления, вы необходимо уточнить фильтры параметров запроса, чтобы обрабатывать меньшие группы уведомлений на каждый запрос. Например, вы можете сделать несколько запросов, используя несколько меньших диапазонов дат, или возвращать уведомления только с определенными значениями статуса.

Например, следующий вызов cURL перечисляет уведомления, которые НЕ удались для указанного веб-перехватчика в указанном диапазоне дат:

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} указывает идентификатор уведомления, для которого вы хотите отобразить сведения. Вы можете получить идентификатор уведомления из выходных данных ответа при просмотре отправленных уведомлений .

Например, следующий вызов cURL перечисляет детали уведомления с идентификатором 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} указывает идентификатор элемента уведомления, для которого вы хотите отобразить сведения. Вы можете получить идентификатор уведомления из выходных данных ответа при просмотре отправленных уведомлений .

Например, следующий вызов cURL повторно обрабатывает уведомление с идентификатором 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
}