(499) 346-0344

Метод createCampaign

Запланировать или начать немедленно рассылку e-mail или SMS-сообщения. Одно и то же сообщение можно отправлять несколько раз, но моменты отправки не должны быть ближе, чем на час друг к другу.

Этот метод используется для отправки уже созданных сообщений. Для предварительного создания сообщений надо использовать методы createEmailMessage и createSmsMessage

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

Синтаксис и URL для вызова метода
createCampaign (int message_id [, datetime start_time, string timezone, bool track_read, bool track_links, string contacts, bool defer, bool track_ga, string ga_medium, string ga_source, string ga_campaign, string ga_content, string ga_term])
http://api.unisender.com/ru/api/createCampaign?format=json&api_key=KEY&message_id=ID &start_time=TIME&timezone=ZONE&track_read=X&track_links=Y&contacts=LIST&defer=1
Аргументы
api_key * Ключ доступа к API
message_id * Код сообщения, которое надо отправить. Передавать надо код, возвращённый методом createEmailMessage или createSmsMessage.
start_time Дата и время запуска рассылки в формате «ГГГГ-ММ-ДД чч:мм». Если аргумент не задан, то рассылка начинается немедленно. Используется часовой пояс, указанный в настройках личного кабинета пользователя. Для явного указания часового пояса используйте аргумент «timezone». Для дополнительной защиты от ошибок нельзя запланировать две рассылки одного и того же сообщения в пределах одного часа.
timezone Часовой пояс, в котором задано время в аргументе «start_time». Если не указан, то используется часовой пояс из настроек Личного Кабинета. Можно явно указать часовой пояс, но пока поддерживается только один вариант: «UTC».
track_read Принимаемое значение – 0 или 1 – отслеживать ли факт прочтения e-mail сообщения. По умолчанию 0 (не отслеживать). Если 1, то в e-mail будет добавлена ссылка на небольшую картинку, отслеживающую обращение. Аргумент track_read игнорируется для SMS-сообщений.
track_links Принимаемое значение – 0 или 1 – отслеживать ли переходы по ссылкам в e-mail сообщениях, по умолчанию 0 (не отслеживать). Если 1, то все внешние ссылки будут заменяться на специальные, позволяющие отследить факт перехода, а затем переправить пользователя на нужную страницу. Аргумент track_links игнорируется для SMS-сообщений.
contacts Перечисленные через запятую email-адреса (или телефоны для sms-сообщений), которыми нужно ограничиться при отправке сообщения. Если этот аргумент отсутствует, то отправка будет осуществлена по всем контактам списка, для которого составлено сообщение (возможно, с учётом сегментации по меткам). Если аргумент contacts присутствует, то во внимание будут приняты только те контакты, которые входят в список, а остальные будут проигнорированы. Те контакты, которые не являются активными и доступными, также будут проигнорированы.
defer Если этот параметр равен 1, то задание на запуск рассылки будет запомнено и метод возвратит результат ещё до старта рассылки. Рекомендуется всегда устанавливать это значение в 1. Значение 0 оставлено только для обратной совместимости. Если defer=1, то в возвращаемом значении поле status может принимать не только значения 'scheduled' и 'waits_censor', но и значение 'waits_schedule'. Значение 'waits_schedule' означает, что рассылка ожидает постановки в очередь. Преимущество defer=1 заключается в том, что даже при большом количестве контактов в рассылке метод возвращает результат быстро, не анализируя весь список перед запуском рассылки. Если же defer=0 и список довольно большой, то метод может выполняться довольно долго, несколько минут. Но у defer=1 есть и минус - реальное количество контактов, на которое будет отправлено письмо, будет известно только после постановки в очередь и его можно узнать через campaign_status_callback.
track_ga Принимаемое значение – 0 или 1 – включить ли для данной рассылки интеграцию с Google Analytics. Действует только явно указанные значения, параметры пользования по умолчанию не применяются. По умолчанию 0 (не включена).
ga_medium, ga_source, ga_campaign, ga_content, ga_term Параметры интеграции с Google Analytics (действуют, если track_ga=1). Действует только явно указанные значения, параметры пользования по умолчанию не применяются. См. полное описание параметров.
Возвращаемое значение
JSON-объект с двумя полями:
campaign_id Уникальный код рассылки – целое положительное 31-битное число
status

Строковый статус рассылки, один из:

  • scheduled — рассылка поставлена очередь и будет отправлена, как только наступит время.
  • waits_censor — рассылка ожидает проверки администратором. Статус рассылки после проверки можно узнать с помощью campaign_status_callback.
  • waits_schedule — задача на отправку рассылки запомнена системой и будет обработана. Статус рассылки после обработки можно узнать с помощью campaign_status_callback. Если аргумент defer=0, то статус 'waits_schedule' не может быть в ответе.
count Количество email-адресов (или телефонов в случае SMS-сообщения), на которые будет отправлена рассылка. Если вызов был с аргументом defer=1, то поле count всегда будет равно 0, а точное число контактов можно узнать с помощью campaign_status_callback.

Если были ошибки или предупреждения, они возвращаются в полях error/warnings в соответствии с описанием. Например, ошибка может произойти в случае нехватки денег или при попытке запланировать «автоматическое» сообщение (у которого уже был задан график отправки с помощью аргументов series_day и series_time при вызове метода. Специальный код ошибки campaign_already_exists означает, что это письмо уже было запланировано к отправке в пределах часа от указанного времени и вероятно, Вы повторно пытаетесь отправить то же самое письмо.

Пример ответа:

{"result":{"campaign_id":932188,"status":"scheduled","count":134}}

Технические ограничения

Обычное время ответа для createCampaign с параметром defer=1 составляет около секунды. Таймаут на вызов с defer=1 составляет 15 секунд с момента полной передачи запроса.

Время выполнения запроса с параметром defer=0 пропорционально количеству контактов, таймаут для рассылок до 50,000 адресов составляет 30 секунд, при большем количестве увеличивается – поэтому не рекомендуется использовать defer=0 для больших рассылок.

В случае неполучения ответа по истечении таймаута рекомендуется максимум два раза попытаться повторить запрос. Если повторный запрос заканчивается сообщением об ошибке с кодом 'campaign_already_exists' – значит, одна из предыдущих попыток всё-таки сработала, хотя и с запозданием. Если же повторные попытки опять приводят к таймауту – нужно обращаться в техподдержку.

Смотрите также

Примеры на PHP

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

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

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

// Запланируем отправку на определённое время
// (закомментируйте, чтобы отправить немедленно)
// $email_starttime = urlencode("2012-12-20 14:40");

// Параметры сбора статистики
// Если 1, собираем, если 0 - нет
$email_stats_links = "1";
$email_stats_read = "1";

// Создаём POST-запрос
$POST = array (
  'api_key' => $api_key,
  'message_id' => $email_id,
  'start_time' => $email_starttime,
  'track_read' => $email_stats_read,
  'track_links' => $email_stats_links
);

// Устанавливаем соединение
$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,
            'http://api.unisender.com/ru/api/createCampaign?format=json');
$result = curl_exec($ch);

echo $result;

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 "Success. Newsletter delivery status is " . $jsonObj->result->status;

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


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

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

// Запланируем отправку на определённое время
// (закомментируйте, чтобы отправить немедленно)
$email_starttime = urlencode("2012-12-20 14:40");

// Параметры сбора статистики
// Если 1, собираем, если 0 - нет
$email_stats_links = "1";
$email_stats_read = "1";

// Создаём GET-запрос
$api_url = "http://api.unisender.com/ru/api/createCampaign?format=json".
           "&api_key=$api_key&message_id=$email_id".
           "&start_time=$email_starttime&track_read=$email_stats_read".
           "&track_links=$email_stats_links";

// Делаем запрос на 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 "Success. Newsletter delivery status is " . $jsonObj->result->status;
  }

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