Метод exportContacts
Экспорт данных подписчиков из UniSender. Возможны различные сценарии использования этого метода:
- Резервное копирование
Вы можете выгрузить всю базу подписчиков с максимально подробной информацией. - Синхронизация с данными вашего сервера
Предположим, что вы всегда добавляете новых подписчиков сначала на свой сервер, а потом уже в UniSender. Отписаться же подписчик может как через UniSender, так и вы сами можете удалить его на своём сервере. Тогда для синхронизации сначала вам надо выгрузить только email-адреса (или телефоны) подписчиков через exportContacts и проверить, нет ли среди них удалённых с вашего сервера. Затем с помощью importContacts вы импортируете новых, меняете данные у изменённых и удаляете тех, кто удалён на вашем сервере.
Максимальное количество экспортируемых за один вызов данных ограничено, поэтому при большом количестве контактов необходимо выгружать их по частям (не более 1000 записей за раз), используя аргументы offset и limit.
Принцип использования
| Синтаксис и URL для вызова метода |
|---|
| exportContacts ([int list_id, string array field_names, int offset, int limit, string tag, string email, string phone]) |
| http://api.unisender.com/ru/api/exportContacts?format=json&api_key=KEY&list_id=134&field_names[]=email&field_names[]=email_status&tag=TAG&email=EMAIL&phone=PHONE |
| Аргументы | |
|---|---|
| api_key * | Ключ доступа к API |
| list_id |
Необязательный код экспортируемого списка. Если не указан, будут экспортированы все списки.
Коды списков можно узнать с помощью метода getLists. Внимание: если список указан, то в результат выгрузки попадут и те email-адреса, которые не включены в список, но у подписчиков есть телефоны, включённые в этот список. |
| field_names | Массив названий полей, которые надо экспортировать. Если отсутствует, то экспортируются все возможные поля. |
| offset | Неотрицательное целое число — номер первого экспортируемого подписчика. Если не задано, то по умолчанию экспорт идёт с начала и offset считается раным нулю. При экспорте больших списков рекомендуется делать несколько вызовов порциями по тысяче подписчиков. Смотрите также следующий аргумент limit. |
| tag | Метка. Если этот параметр указан, то при поиске будут учтены только контакты, имеющие такую метку. |
| E-mail адрес. Если этот параметр указан, то результат будет содержать только один контакт с таким e-mail адресом. | |
| phone | Номер телефона. Если этот параметр указан, то результат будет содержать только один контакт с таким номером телефона. |
| limit | Положительное целое число — количество экспортируемых подписчиков. Максимально возможное значение, оно же значение по умолчанию, равно 1000. |
| Возвращаемое значение | |||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| JSON-объект со следующими полями: | |||||||||||||||||||||||||||||||||||||
| field_names |
Массив названий полей данных. Названия системных полей не зависят от языка,
названия пользовательских полей берутся из названий для подстановки.
| ||||||||||||||||||||||||||||||||||||
| data | Двумерный массив с данными. Каждая строка соответствует одному подписчику. | ||||||||||||||||||||||||||||||||||||
|
Пример ответа:
{
"result":{
"field_names":[
"email",
"Имя",
"email_status",
"email_availability",
"email_subscribed_lists",
"email_subscribed_times",
"email_add_time"
],
"data":[
[
"test1@example.org",
"Вася",
"active",
"available",
"123,127",
"2010-06-15 12:54:07,2010-06-15 12:54:07",
"2010-06-15 12:34:01"
],
[
"test2@example.org",
"Петя",
"invited",
"unreachable",
"123",
"2010-03-15 18:12:55",
"2010-03-15 18:12:55"
],
[
"test3@example.org",
"Коля",
"active",
"avaialable",
"",
"",
"2010-03-15 18:12:55"
]
]
}
}
| |||||||||||||||||||||||||||||||||||||
Смотрите также
Примеры формирования URL-запроса
http://api.unisender.com/ru/api/exportContacts?format=json&api_key=KEY
— получить данные всех подписчиков (на самом деле, только первые 1000, смотрите описание параметра limit)
http://api.unisender.com/ru/api/exportContacts?format=json&api_key=KEY&list_id=222333
— получить данные подписчиков на список с кодом 222333 (на самом деле, только первые 1000, смотрите описание параметра limit)
http://api.unisender.com/ru/api/exportContacts?format=json&api_key=KEY&list_id=222333 &field_names=Name
— получить только имена подписчиков на список с кодом 222333 (на самом деле, только первые 1000, смотрите описание параметра limit)
Примеры на PHP
Мы настоятельно рекомендуем использовать POST-запросы, так как это более безопасный метод передачи данных, нежели GET. Подробнее о методах соединения здесь.
// Ваш ключ доступа к API (из Личного Кабинета)
$api_key = "xxxxxxxxxxxx";
// Список для экспорта
$list = "420";
// Создаём POST-запрос
$POST = array (
'api_key' => $api_key,
'list_id' => $list,
);
// Устанавливаем соединение
$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/exportContacts?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 {
// Выводим полученные данные
$number_of_fields = count($jsonObj->result->field_names);
echo "<table border='1'>";
echo "<tr>";
for ($i=0;$i<$number_of_fields;$i++){
echo "<td> " . $jsonObj->result->field_names[$i] . "</td>";
};
echo "</tr>";
foreach ($jsonObj->result->data as $one) {
echo "<tr>";
for ($i=0;$i<$number_of_fields;$i++){
echo "<td> " . $one[$i] . "</td>";
};
echo "</tr>";
}
echo "</table>";
}
} else {
// Ошибка соединения с API-сервером
echo "API access error";
}
// Ваш ключ доступа к API (из Личного Кабинета)
$api_key = "xxxxxxxxxxxxxxxx";
// Список для экспорта
$list = "420";
// Создаём GET-запрос
$api_url = "http://api.unisender.com/ru/api/exportContacts?format=json".
"&api_key=$api_key&list_id=$list";
// Делаем запрос на 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 {
// Выводим полученные данные
$number_of_fields = count($jsonObj->result->field_names);
echo "<table border='1'>";
echo "<tr>";
for ($i=0;$i<$number_of_fields;$i++){
echo "<td> " . $jsonObj->result->field_names[$i] . "</td>";
};
echo "</tr>";
foreach ($jsonObj->result->data as $one) {
echo "<tr>";
for ($i=0;$i<$number_of_fields;$i++){
echo "<td> " . $one[$i] . "</td>";
};
echo "</tr>";
}
echo "</table>";
}
} else {
// Ошибка соединения с API-сервером
echo "API access error";
}



