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


