Как настроить тестовое уведомление

Вы просматриваете документацию по 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 как тип триггера уведомления 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"
]

Затем вам нужно определить схему полезной нагрузки запроса для типа триггера уведомления вебхука.

Как посмотреть пример полезной нагрузки запроса для тестирования уведомлений вебхука

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

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

Возвращается не более 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
}