(044) 360 9769 (098) 686 0101

Метод subscribe

Этот метод добавляет контакты (e-mail адрес и/или мобильный телефон) подписчика в один или несколько списков, а также позволяет добавить/поменять значения дополнительных полей и меток.

По умолчанию, на e-mail подписчика отправляется письмо с просьбой подтвердить подписку, но если Вы уже проверили существование адреса самостоятельно, то можете отключить это с помощью установки параметра double_optin=1.

Количество добавлений подписчиков без подтверждения e-mail ограничено:

  • не более 20 в сутки без указания IP-адресов,
  • не более 30 с указанием адреса и времени запроса
  • не более 50 в с указанием IP-адресов и времён запроса и подтверждения

В случае превышения лимита подписчик не переводится в статус «активный», а в зависимости от значения параметра double_optin подписчик либо получит статус «новый», либо ему будет отправлено письмо с просьбой подтвердить подписку и он получит статус «запрошено подтверждение», либо будет возвращено сообщение об ошибке (подробнее о статусах).

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

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

Синтаксис и URL для вызова метода
subscribe (string list_ids, string array fields [, string tags, string request_ip, datetime request_time, int double_optin, string confirm_ip, datetime confirm_time, int overwrite])
http://api.unisender.com/ru/api/subscribe?format=json&api_key=KEY&list_ids=134,135&fields[email]=test@example.org&tags=MyTag1,MyTag2&request_ip=12.34.56.78&request_time=2011-01-01&double_optin=0&confirm_ip=34.56.78.90&confirm_time=2011-01-02&overwrite=0
Аргументы
api_key * Ключ доступа к API
list_ids * Перечисленные через запятую коды списков, в которые надо добавить подписчика. Коды можно узнать с помощью метода getLists. Они совпадают с кодами, используемыми в форме подписки.

Примеры:

list_ids=123456
list_ids=123456,345678,2344423
fields * Ассоциативный массив дополнительных полей. Массив в запросе передаётся строкой вида
fields[NAME1]=VALUE1&fields[NAME2]=VALUE2
Обязательно должно присутствовать хотя бы поле «email» или «phone», иначе метод возвратит ошибку. В случае наличия и e-mail, и телефона, подписчик будет включён и в e-mail, и в SMS списки рассылки.

Примеры:

fields[email]=test@example.org
fields[email]=test@example.org&fields[Name]=UserName
tags Перечисленные через запятую метки, которые добавляются к подписчику.
request_ip IP-адрес подписчика, с которого поступила просьба о подписке, в формате «NNN.NNN.NNN.NNN». Можно не указывать в случае подписки через анкету, но без указания действуют более строгие ограничения на количество подписчиков в сутки. IP-адреса из «внутренних» подсетей (например, 192.168.0.1 или 10.0.0.2) не засчитываются.
request_time Дата и время поступления просьбы о подписке в формате «YYYY-MM-DD» или «YYYY-MM-DD hh:mm:ss». Часовой пояс — по Гринвичу (UTC). Если аргумент отсутствует, используются дата и время вызова метода.
double_optin Число от 0 до 3 - есть ли подтверждённое согласие подписчика для активации, и что делать, если превышены лимиты активации.
  • Если 0, то мы считаем, что подписчик только высказал желание подписаться, но ещё не подтвердил подписку. В этом случае подписчику будет отправлено письмо-приглашение подписаться. Текст письма будет взят из свойств первого списка из list_ids.
  • Если 1, то мы считаем, что у Вас уже есть согласие подписчика и, если суточный лимит авто-активаций не превышен, не посылаем письмо-приглашение. Если же он превышен, подписчику высылается письмо с просьбой подтвердить подписку. Текст этого письма можно настроить для каждого списка.
  • Если 2, то также считается, что у Вас согласие подписчика уже есть, но в случае превышения лимита мы возвращаем код ошибки too_many_double_optins.
  • Если 3, то также считается, что у Вас согласие подписчика уже есть, но в случае превышения лимита подписчик добавляется со статусом «новый» и можно запросить его активацию методом activateContacts или через веб-интерфейс.
confirm_ip IP-адрес подписчика, с которого поступило подтверждение подписки, в формате "NNN.NNN.NNN.NNN". Имеет смысл только при значении double_optin=1, игнорируется при double_optin=0. Можно не указывать в случае подписки через анкету, но без указания действуют более строгие ограничения на количество подписчиков в сутки.
confirm_time Дата и время подтверждения подписки в формате «YYYY-MM-DD» или «YYYY-MM-DD hh:mm:ss». Часовой пояс — по Гринвичу (UTC). Имеет смысл только при значении double_optin=1, игнорируется при double_optin=0. В случае наличия именно это время считается моментом подписки для автоматических серий писем. Если аргумент отсутствует, используются дата и время вызова метода.
overwrite Режим перезаписывания полей и меток, число от 0 до 2 (по умолчанию 0). Задаёт, что делать в случае существования подписчика (подписчик определяется по email-адресу и/или телефону).

Если 0 — происходит только добавление новых полей и меток, уже существующие поля сохраняют своё значение.

Если 1 — все старые поля удаляются и заменяются новыми, все старые метки также удаляются и заменяются новыми.

Если 2 — заменяются значения переданных полей, если у существующего подписчика есть и другие поля, то они сохраняют своё значение. В случае передачи меток они перезаписываются, если же метки не передаются, то сохраняются старые значения меток.
Возвращаемое значение
Объект с единственным полем person_id – целым положительным десятичным 31-битным уникальным кодом подписчика.

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

{"result":{"person_id":139709428}}

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

Примеры формирования URL-запроса

http://api.unisender.com/ru/api/subscribe?format=json&api_key=KEY&list_ids=555777
&fields[email]=test@example.org&fields[Name]=John+Doe

— добавить нового подписичика с именем John Doe и адресом test@example.org в список с кодом 555777. Сразу после добавления ему будет отправлен запрос-подтверждение, что он действительно согласен получать рассылку.

http://api.unisender.com/ru/api/subscribe?format=json&api_key=KEY&list_ids=555777
&fields[email]=test@example.org&fields[Name]=John+Doe
&double_optin=1&request_ip=22.33.44.55&tags=RedRoseCustomer

— добавить нового подписичика с именем John Doe и адресом test@example.org в список с кодом 555777. Подписчику будет присвоена метка RedRoseCustomer для дальнейших целей сегментации рассылок. Запрос-подтверждение отправлен не будет, адрес будет подписан автоматически (при условии, что не превышен суточный лимит добавления новых адресов).

Примеры на PHP

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

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

// Данные о новом подписчике
$user_email = "new@aol.de";
$user_name = iconv('cp1251', 'utf-8', "Василий Иванович Чапаев");
$user_lists = "354168";
$user_ip = "12.34.56.78";
$user_tag = urlencode("Added using API");

// Создаём POST-запрос
$POST = array (
  'api_key' => $api_key,
  'list_ids' => $user_lists,
  'fields[email]' => $user_email,
  'fields[Name]' => $user_name,
  'request_ip' => $user_ip,
  'tags' => $user_tag
);

// Устанавливаем соединение
$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/subscribe?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 "Added. ID is " . $jsonObj->result->person_id;

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


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

// Данные о новом подписчике
// Если скрипт в кодировке UTF-8, то удалите вызов iconv
$user_email = "new@aol.com";
$user_name = urlencode(iconv('cp1251', 'utf-8', "Василий Иванович"));
$user_lists = "354168";
$user_ip = "12.34.56.78";
$user_tag = urlencode("Added using API");

// Создаём GET-запрос
$api_url = "http://api.unisender.com/ru/api/subscribe?format=json".
           "&api_key=$api_key&list_ids=$user_lists".
           "&fields[email]=$user_email&fields[Name]=$user_name".
           "&request_ip=$user_ip&tags=$user_tag";

// Делаем запрос на 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 "Added. ID is " . $jsonObj->result->person_id;

  }

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