Метод getCampaignDeliveryStats

Получить отчёт по результатам доставки сообщений в заданной рассылке.

Принцип использования

Синтаксис и URL для вызова метода
getCampaignDeliveryStats (int campaign_id [, datetime changed_since])
Пример 1: https://api.unisender.com/ru/api/getCampaignDeliveryStats?format=json&api_key=KEY&campaign_id=ID &changed_since=DT
Пример 2: https://api.unisender.com/ru/api/getCampaignDeliveryStats?format=json&api_key=KEY&user_campaign_id=ID &changed_since=DT

Аргументы
api_key * Ключ доступа к API
campaign_id (user_campaign_id - см. примечание) * Идентификатор кампании, полученный при вызове метода createCampaign.
changed_since Возвращать все статусы адресов, изменившиеся начиная с указанного времени включительно (в формате «ГГГГ-ММ-ДД чч:мм:сс», часовой пояс UTC). Если аргумент отсутствует, то возвращаются все статусы.
field_ids Список id дополнительных полей, переданных через запятую. Значения id можно получить используя метод getFields. Если указан, в результат добавляются значения дополнительных полей, связанных с контактом.

Возвращаемое значение
JSON-объект со следующим полями:
fields Массив имен полей. Включает как минимум поля email (phone для sms-рассылок) и send_result (текстовый идентификатор статуса доставки). Для email-рассылок доступно также поле last_update, в котором хранится дата и время изменения статуса доставки в формате «ГГГГ-ММ-ДД чч:мм:сс» в UTC. Если указан параметр field_ids добавляются ID каждого из переданных дополнительных полей. Возможные результаты поля send_result для email можно посмотреть здесь, а для SMS можно посмотреть здесь (различие только в названии полей: send_result и status, значения из одного набора).
data Массив результатов доставки. Каждый результат представляет собой массив полей, описанный в fields.

Примечание: 1. * - обязательные параметры.

2. Есть возможность передавать вместо входного параметра campaign_id также и параметр user_campaign_id (подробнее о параметре user_campaign_id можно почитать в описании метода sendEmail). При использовании аргумента user_campaign_id для рассылок с разными письмами, в возвращаемом ответе вместо параметра "letter_id":"{ID}" будет возвращено массив bursts, где каждый элемент - объект с двумя полями - идентификатором рассылки и идентификатором письма. (

"bursts":[
            {"burst_id":1,"letter_id":2},
            {"burst_id":2,"letter_id":1}
            ] )    

Если были ошибки или предупреждения, они возвращаются в полях error/warnings в соответствии с описанием.

Пример возвращаемого значения:

{
  "result":{
"letter_id":"5134356",
    "fields":["email","send_result","last_update","1"] ,
    "data":[
      ["one@gmail.com","ok_sent","2011-01-27 09:38:01","name1"]
      ["two@hotmail.com","ok_sent","2011-01-27 09:38:02","name2"]
      ["three@yandex.ru","ok_sent","2011-01-27 09:38:03","name3"]
      ["four@bk.ru","err_will_retry","2011-01-27 09:38:04","name4"]
    ] 
  }
}

 

Примеры на PHP

Мы настоятельно рекомендуем использовать POST-запросы, так как это более безопасный метод передачи данных, нежели GET. Используйте SSL-соединение с UniSender. Подробнее о методах соединения здесь.

Пример с использованием POST-запроса
// Ваш ключ доступа к API (из Личного Кабинета)
$api_key = "xxxxxxxxxxxxxxx";

// Параметры для отправки сообщения
$id = "932498";

// Создаём POST-запрос
$POST = array (
  'api_key' => $api_key,
  'campaign_id' => $id,
);

// Устанавливаем соединение
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_URL, 
            'https://api.unisender.com/ru/api/getCampaignDeliveryStats?format=json');
$result = curl_exec($ch);

if ($result) {
  // Раскодируем ответ API-сервера
  $jsonObj = json_decode($result);

  if(null===$jsonObj) {
    // Ошибка в полученном ответе
    echo "Invalid JSON";

  }
  elseif(!empty($jsonObj->error)) {
    // Ошибка получения статистики
    echo "An error occured: " . $jsonObj->error . "(code: " . $jsonObj->code . ")";

  } else {
    // Статистика получена, отображаем в виде таблицы
    echo "<table border='1'>";
    echo "<tr><td>E-mail address</td><td>Status</td><td>Date/time</td></tr>";
    foreach ($jsonObj->result->data as $one) {
      echo "<tr><td>" . $one[0] . "</td><td>" . $one[1] .
           "</td><td>" . $one[2] . "</td></tr>";
    }
    echo "</table>";

  }
} else {
  // Ошибка соединения с API-сервером
  echo "API access error";
}

Пример с использованием GET-запроса
// Ваш ключ доступа к API (из Личного Кабинета)
$api_key = "xxxxxxxxxxxxxxxxxxxx";

// ID кампании, по которой надо получить статистику
$email_id = "932498";

// Создаём GET-запрос
$api_url = "https://api.unisender.com/ru/api/getCampaignDeliveryStats?format=json".
           "&api_key=$api_key&campaign_id=$email_id";


// Делаем запрос на API-сервер
$result = file_get_contents($api_url);

if ($result) {
  // Раскодируем ответ API-сервера
  $jsonObj = json_decode($result);

  if(null===$jsonObj) {
    // Ошибка в полученном ответе
    echo "Invalid JSON";

  }
  elseif(!empty($jsonObj->error)) {
    // Ошибка получения статистики
    echo "An error occured: " . $jsonObj->error . "(code: " . $jsonObj->code . ")";

  } else {
    // Статистика получена, отображаем в виде таблицы
    echo "<table border='1'>";
    echo "<tr><td>E-mail address</td><td>Status</td><td>Date/time</td></tr>";
    foreach ($jsonObj->result->data as $one) {
      echo "<tr><td>" . $one[0] . "</td><td>" . $one[1] .
           "</td><td>" . $one[2] . "</td></tr>";
    }
    echo "</table>";
  }

} else {
  // Ошибка соединения с API-сервером
  echo "API access error";
}