Метод 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 |
Строковый статус рассылки, один из:
|
| 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. Подробнее о методах соединения здесь.
// Ваш ключ доступа к 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";
}
// Ваш ключ доступа к 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";
}


