Данный модуль содержит функции для создания SMS кампаний, добавления в них получателей одним из возможных способов, запуска кампании в отправку, удаления неактуальных кампаний, просмотра списка кампаний и поиска по ним.
Добавление получателей в массовую SMS кампанию
https://api.mobizon.ua/service/Campaign/AddRecipients
Создание новой кампании рассылки
https://api.mobizon.ua/service/Campaign/Create
Полное удаление кампании
https://api.mobizon.ua/service/Campaign/Delete
Получение основных данных кампании
https://api.mobizon.ua/service/Campaign/Get
Получение статистических данных кампании
https://api.mobizon.ua/service/Campaign/GetInfo
Получение коротких ссылок кампаниии
https://api.mobizon.ua/service/Campaign/GetLinks
Получение списка кампаний
https://api.mobizon.ua/service/Campaign/List
Отправка кампании
https://api.mobizon.ua/service/Campaign/Send
https://api.mobizon.ua/service/Campaign/AddRecipients
В одном запросе разрешена передача только данных о получателях одного типа:
При попытке передать сразу несколько разных типов получателей будет возвращена ошибка 12. Если необходимо добавить в одну рассылку получателей из нескольких источников, следует сделать это в несколько запросов.
При добавлении номеров получателей, контактов или контактных карт максимальное число получателей, загружаемых в одном запросе, не может превышать 500 номеров. В случае превышения лимита будет возвращена ошибка 12 и получатели не будут добавлены.
Для загрузки в одну кампанию любого желаемого количества контактов следует разбивать список на порции по 500 или меньше штук и загружать каждую порцию отдельным вызовом апи - получатели будут добавляться к уже существующему списку, если не указан параметр replace=1.
Загрузка номеров, контактов и карт выполняется в основном потоке вебсервера и возвращает результат по каждому обработанному получателю в виде массива (см. формат возвращаемых данных ниже).
Загрузка из контактной группы или из файла вызывает создание фоновой задачи (асинхронная загрузка) и возвращает ее ID для дальнейшего отслеживания статуса. В этом случае код ответа API будет 100.
Номера получателей должны передаваться в международном формате. Все посторонние символы будут удалены из номера автоматически.
Каждый номер проверяется на возможность отправки на него сообщения по коду страны и оператора, которому он принадлежит.
Все не прошедшие проверку номера будут отклонены с соответствующим кодом ошибки (code), а для каждого добавленного номера будет возвращен ID созданного сообщения (messageId) для возможности последующего запроса статуса.
Если не все переданные получатели были добавлены (возникли ошибки), то API может вернуть один из двух кодов ответа:
На все время добавления получателей кампания блокируется на добавление другими процессами, поэтому параллельное добавление невозможно.
Параметр | Тип | Описание |
---|---|---|
id | integer | Идентификатор кампании, в которую необходимо добавить получателей |
recipients | array|string | Для обычной рассылки получатели, могут быть переданы в виде:
recipient и номером получателя в качестве значения, так же могут находиться (но не обязательно) элементы с ключами, соответствующими названиям переменных (плейсхолдеров) в тексте SMS (без окружающих их фигурных скобок).При этом, если какие-то из плейсхолдеров, содержащихся в тексте, не переданы, то обработка будет происходить в зависимости от переданного параметра placeholdersFlag (см. ниже описание флага). Примеры запросов см. ниже. |
recipientsCardIds | array|string | Массив или строка разделенных запятыми или переносами строк идентификаторов контактных карт из контактной книги, по которым будет сформирована отправка. |
recipientsContactIds | array|string | Массив или строка разделенных запятыми или переносами строк идентификаторов контактов из контактной книги. Если рассылка шаблонная, то данные для заполнения плейсхолдеров в тексте будут использоваться из соответствующей контактной карты, которой принадлежит этот контакт. |
recipientsGroupIds | array|string | Массив или строка разделенных запятыми или переносами строк идентификаторов групп из контактной книги, по которым будет сформирована кампания. |
recipientsFile | file | Массив или строка разделенных запятыми или переносами строк идентификаторов групп из контактной книги, по которым будет сформирована кампания. Объект загруженного файла с получателями - файл CSV или Excel (только XLS) с номерами получателей в международном формате. Для обычной рассылки - номера по одному в строку. Для шаблонной рассылки - номера по одному в строку в одном из столбцов с заголовком recipient , в остальных столбцах могут быть плейсходеры, заголовки столбцов должны соответствовать плейсхолдерам в тексте SMS (без окружающих фигурных скобок). Для текста плейсхолдеров разрешены только латинские буквы и цифры, а также символы '_ ', '- '. При наличии столбцов с одинаковыми заголовками, будет возвращена ошибка.При этом если для каких-либо из плейсхолдеров, содержащихся в тексте, нет соответсвующих столбцов, то обработка будет происходить в зависимости от переданного значение placeholdersFlag параметра params (см. ниже описание флага). |
params | array | Дополнительные настройки (см. таблицу Дополнительные настройки). |
Параметр | Тип | Описание |
---|---|---|
params[replace] | integer | Указывает, нужно ли удалить всех уже добавленных получателей и начать добавление заново: 0 - нет, добавить получателей к уже добавленным ранее (значение по умолчанию); 1 - да, удалить всех перед добавлением новых; |
params[placeholdersFlag] | integer | Обработка недостающих переменных (плейсхолдеров) для шаблонной рассылки. Если каких либо значений переменных для подстановки не найдено, то возможно одно из следующих поведений: 1 - сообщение добавляется в рассылку, но плейсхолдеры остаются в тексте как есть (поведение по умолчанию); 2 - сообщение добавляется, а плейсхолдеры удаляются (если нужно просто отправить, а не отклонять сообщение); 3 - ообщение отклоняется с ошибкой, сообщающей о недостающих данных для подстановки в текст; |
params[recipientsFileEncoding] | string | Кодировка в файле с данными получателей, доступные кодировки: KOI8-R, CP866, WINDOWS-1252, WINDOWS-1251, UTF-8, ASCII, ISO-8859-1, UCS-2, по умолчанию: UTF-8. |
params[recipientsFileSkipHeader] | integer | Указывает, нужно ли пропустить первую строку файла и начать обработку со второй. Полезно, если загрузка получателей происходит из файла, в котором в первой строке находятся названия столбцов. В этом случае первую строку лучше пропустить и начать обработку файла со второй строки. Возможные значения: 0 - начинать с первой строки (значение по умолчанию); 1 - пропускать первую строку файла и начинать обработку со второй (принудительно установлено в случае шаблонной рассылки); В случае шаблонной рассылки значение данного параметра всегда равно 1 и не может быть переопределено, так как в первой строке должны содержаться названия переменных для подстановки. |
params[recipientsFileDelimiter] | string | Разделитель столбцов в файле с данными получателей, по умолчанию: , (запятая) |
params[recipientsFileEnclosure] | string | Разделитель текста в файле с данными получателей, по умолчанию: ' (одинарные кавычки) |
array | integer : При загрузке получателей из списка номеров, контактов или контактных карт возвращается массив, каждый элемент которого содержит данные о загруженных получателях:
Поле | Тип | Описание |
---|---|---|
recipient | string | Номер получателя, который добавляется в кампанию |
code | integer | Код результата добавления получателя: 0 - номер успешно добавлен в кампанию 1 - в переданных данных отсутствует номер телефона или его значение пустое 2 - в переданных данных не обнаружен номер телефона (скорее всего данные некорректно отформатированы) 3 - номер не соответствует международному формату телефонных номеров 4 - номер уже был добавлен в кампанию (исключение дубликатов из рассылки) 5 - номер находится в стоп-листе (это может быть как ваш стоп-лист, так и стоп-лист системы) 6 - отправка в страну назначения ограничена настройками вашего аккаунта 7 - невозможно определить оператора и/или страну назначения 8 - в системе отсутствует возможность отправки на данного оператора, обратитесь в нашу техподдержку для уточнения возможности отправки 20 - переданые данные не содержат всех необходимых плейсхолдеров (если placeholdersFlag установлен в значение 1 )30 - контактная карта не найдена в контактной книге ( recipient будет равен null )31 - контактная карта не содержит мобильного номера ( recipient будет равен null )32 - контакт не найден в контактной книге ( recipient будет равен null )51 - по техническим причинам на данный момент невозможно создать короткую ссылку 99 - системная ошибка при добавлении номера получателя |
messageId | integer | Идентификатор добавленного сообщения, если номер был добавлен, по указанному идентификатору можно получить статус сообщения. |
number | integer | Исходное, переданное пользователем значение номера получателя (если передан номер получателя) |
contactId | integer | Идентификатор переданного контакта (если передавался recipientsContactIds ) |
contactCardId | integer | Идентификатор переданной контактной карты (если передавался recipientsCardIds ) |
При загрузке файла с получателями или списка контактных групп возвращается числовой идентификатор фоновой задачи добавления получателей. Детали работы с фоновыми задачами см. здесь.
Код | Описание |
---|---|
1 | Если какие либо параметры содержат неверные значения. |
2 | Если кампания с указанным ID не найдена. |
10 | Если указанная кампания заблокирована другим процессом добавления получателей или статус кампании не позволяет добавление получателей. |
12 | Если не передан ни один тип получателей или передано несколько типов получателей в одном запросе. |
98 | Если из всех переданных получателей хотя бы один не был добавлен в кампанию. |
99 | Если ни один получатель не был добавлен в кампанию в результате выполнения запроса. |
100 | Если была запущена фоновая задача добавления получателей. Детали работы с фоновыми задачами см. здесь. |
Для добавления в рассылку списка получателей можно передать их массив вот так:
recipients[]=380971112233&recipients[]=79101112233&recipients[]=77071112233
или вот так:
recipients=380971112233,79101112233,77071112233
Обе формы записи идентичны.
Предположим, что текст SMS следующий: Здравствуйте, {name}! Ваш баланс на {date} составляет {balance}{currency}.
В таком случае в параметре recipients
должны быть переданы данные вида:
recipients[0][recipient]=380971112233
&recipients[0][name]=%D0%92%D0%B0%D1%81%D0%B8%D0%BB%D0%B8%D0%B9
&recipients[0][date]=26.10.17
&recipients[0][balance]=123.45
&recipients[0][currency]=%D0%B3%D1%80%D0%BD
&recipients[1][recipient]=380971112255
&recipients[1][name]=%D0%9E%D0%BB%D1%8C%D0%B3%D0%B0
&recipients[1][date]=26.10.17
&recipients[1][balance]=3222.99
&recipients[1][currency]=%D1%80%D1%83%D0%B1
&recipients[2][recipient]=4901122211112
&recipients[2][name]=Markus
&recipients[2][date]=26.10.17
&recipients[2][balance]=555.45
&recipients[2][currency]=eur
Все данные в передаваемых на сервер полях HTTP запроса должны быть предварительно закодированы в URL encoded string (в каждом языке программирования для этого есть соответствующая функция).
https://api.mobizon.ua/service/Campaign/Create
Данный метод создает новую кампанию с заданными параметрами, затем в нее можно добавить получателей при помощи метода загрузки получателей.
data : array Параметры кампании (обязательный параметр)
Параметр | Тип | Описание |
---|---|---|
data[name] | string | Название кампании |
data[text] | string | Полный текст сообщения, или шаблонный текст с плейсхолдерами. Плейсхолдеры необходимо обрамлять фигурными скобками {}, для текста плейсхолдеров разрешены только латинские буквы и цифры, а также символы '_', '-' , которые затем будут заменены на уникальный для каждого сообщения текст. Для создания шаблонной рассылки также необходимо передать соответствующий тип кампании type . При наличии коротких ссылок в тексте и включенном отслеживании получателей (флаг trackShortLinkRecipients ), те короткие ссылки, котороые нужно отслеживать, необходимо обрамлять плейсхолдерами [[...]] (две квадратных кавычки). Такие ссылки будут заменены на ссылки с кодом отслеживания получателя, а плейсхолдеры будут убраны.Например сообщение с текстом: "Простая короткая ссылка - http://mbzn.co/FbT, ссылка с отслеживанием получателя - [[http://mbzn.co/FbT]]" на телефон получателя будет передано: "Простая короткая ссылка - http://mbzn.co/FbT, ссылка с отслеживанием получателя - http://mbzn.co/XxDxSa2A", длина кода отслеживания получателя всегда фиксированная и равна 8 символам. |
data[type] | integer | Тип кампании, 2 - обычная, 3 - шаблонная, по умолчанию - обычная. При создании шаблонной рассылки, текст сообщения должен содержать плейсхолдеры |
data[from] | string | Подпись отправителя, отображаемая в телефоне получателя. |
data[rateLimit] | integer | Ограничение на отправку по количеству сообщений. Применяется совместно с параметром ratePeriod . Позволяет растянуть рассылку во времени для постепенного получения сообщений абонентами. |
data[ratePeriod] | integer | Ограничение на отправку за период времени. Игнорируется, если rateLimit не задан или 0. |
data[deferredToTs] | string | Дата и время отправки, если нужно начать рассылку в указанное время. Должна быть не позднее чем через 14 дней и не ранее чем через час от текущего времени. Формат: 2013-12-31 15:34:55 |
data[mclass] | integer | 0, 1, 2, 3, по умолчанию 1 - сообщения сохраняются в папку Входящих сообщений телефона, 0 - отображаются всплывающим окном и никуда не сохраняются (flashSMS), поддерживается не всеми телефонами, 2 - Сохраняется на сим карту, 3 - SIM Toolkit SMS |
data[ttl] | integer | Время жизни сообщения в минутах от 1 мин до 3 суток (4320 мин) с момента отправки (параметр доступен только для SMS кампаний) |
data[trackShortLinkRecipients] | integer | Отслеживать отдельных получателей коротких ссылок - 1, по умолчанию не отслеживаются - 0 |
integer : идентификатор кампании, если она успешно создана
Код | Описание |
---|---|
1 | Если какие либо параметры содержат неверные значения. |
curl -X POST \
'https://api.mobizon.ua/service/campaign/create?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK' \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'data%5Btype%5D=3&data%5Bfrom%5D=Alpha&data%5Btext%5D=%D0%97%D0%B4%D1%80%D0%B0%D0%B2%D1%81%D1%82%D0%B2%D1%83%D0%B9%D1%82%D0%B5%2C+%7Bname%7D%21+%D0%92%D0%B0%D1%88+%D0%B1%D0%B0%D0%BB%D0%B0%D0%BD%D1%81+%D0%BD%D0%B0+%7Bdate%7D+%D1%81%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D1%82+%7Bbalance%7D%7Bcurrency%7D.'
var data = "data%5Btype%5D=3&data%5Bfrom%5D=Alpha&data%5Btext%5D=%D0%97%D0%B4%D1%80%D0%B0%D0%B2%D1%81%D1%82%D0%B2%D1%83%D0%B9%D1%82%D0%B5%2C+%7Bname%7D%21+%D0%92%D0%B0%D1%88+%D0%B1%D0%B0%D0%BB%D0%B0%D0%BD%D1%81+%D0%BD%D0%B0+%7Bdate%7D+%D1%81%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D1%82+%7Bbalance%7D%7Bcurrency%7D.";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.mobizon.ua/service/campaign/create?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK");
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
<?php
use Mobizon\MobizonApi;
$api = new MobizonApi('KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK', 'api.mobizon.ua');
// Вызов АПИ метода
if ($api->call(
'campaign',
'create',
array(
//параметры кампании
'data' => array(
//тип кампании
'type' => '3',
//подпись отправителя
'from' => 'Alpha',
//текст сообщения
'text' => 'Здравствуйте, {name}! Ваш баланс на {date} составляет {balance}{currency}.'
)
)
)
) {
// Получение результата выполнения метода
$result = $api->getData();
} else {
// Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}
https://api.mobizon.ua/service/Campaign/Delete
Удалить можно кампанию, которая не начала отправляться, а если кампания отложена, то до отправки должно быть не менее 5 минут.
Параметр | Тип | Описание |
---|---|---|
id | integer | Идентификатор кампании |
boolean true - если удаление прошло успешно
Код | Описание |
---|---|
2 | Если кампания с указанным идентификатором не найдена |
10 | Если кампания с указанным идентификатором не может быть удалена |
curl -X POST \
'https://api.mobizon.ua/service/campaign/delete?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK' \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'id=123'
var data = "id=123";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.mobizon.ua/service/campaign/delete?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK");
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
<?php
use Mobizon\MobizonApi;
$api = new MobizonApi('KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK', 'api.mobizon.ua');
// Вызов АПИ метода
if ($api->call(
'campaign',
'delete',
array(
//идентификатор кампании
'id' => '123'
)
)
) {
// Получение результата выполнения метода
$result = $api->getData();
} else {
// Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}
https://api.mobizon.ua/service/Campaign/Get
Параметр | Тип | Описание |
---|---|---|
id | integer | Идентификатор кампании |
Массив данных
Поле | Тип | Описание |
---|---|---|
name | string | Название кампани |
text | string | Полный текст сообщения, или шаблонный текст с плейсхолдерами, которые затем будут заменены на уникальный для каждого сообщения текст |
msgType | string | Тип сообщений в кампании, сейчас поддерживается только SMS |
from | string | Подпись отправителя |
rateLimit | integer | Ограничение на отправку по количеству |
ratePeriod | integer | Ограничение на отправку за период времени. Игнорируется, если rateLimit не задан или 0 |
deferredToTs | string | Дата и время отправки, если нужно начать рассылку в указанное время. Должна быть не позднее чем через 14 дней и не ранее чем через час от текущего времени. Формат: 2013-12-31 15:34:55 |
mclass | integer | 0, 1, 2, 3, по умолчанию 1 - сообщения сохраняются в папку Входящих сообщений телефона, 0 - отображаются всплывающим окном и никуда не сохраняются (flashSMS), поддерживается не всеми телефонами, 2 - Сохраняется на сим карту, 3 - SIM Toolkit SMS |
ttl | integer | Время жизни сообщения в минутах от 1 мин до 3 суток (4320 мин) с момента отправки (параметр доступен только для SMS кампаний) |
curl -X POST \
'https://api.mobizon.ua/service/campaign/get?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK' \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'id=123'
var data = "id=123";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.mobizon.ua/service/campaign/get?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK");
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
<?php
use Mobizon\MobizonApi;
$api = new MobizonApi('KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK', 'api.mobizon.ua');
// Вызов АПИ метода
if ($api->call(
'campaign',
'get',
array(
//идентификатор кампании
'id' => '123'
)
)
) {
// Получение результата выполнения метода
$result = $api->getData();
} else {
// Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}
https://api.mobizon.ua/service/Campaign/GetInfo
Используется для получения предварительной информации о стоимости кампании с учетом текущей ситуации в системе, а так же для получения информации о количестве отправленных, доставленных сообщений, количестве потраченных средств и другую относящуюся к рассылке статистику.
ВАЖНО! Из-за технических особенностей подсчета стоимости рассылки, данные о возможной стоимости рассылки указаны на момент добавления получателей и не меняются с течением времени, если только не загрузить получателей повторно либо отредактировать данные рассылки (в случае редактирования данных все получатели и расчеты сбрасываются и требуется повторная загрузка).
Параметр | Тип | Описание |
---|---|---|
id | integer | Идентификатор кампании |
getFilledTplCampaignText | bool | 1 - возвращать текст шаблонной кампании заполненный реальными данными получателя, по умолчанию 0 - текст кампании с плейсхолдерами |
Поле | Тип | Описание |
---|---|---|
name | string | Название кампани |
text | string | Полный текст сообщения, или шаблонный текст с плейсхолдерами, которые затем будут заменены на уникальный для каждого сообщения текст |
msgType | string | Тип сообщений в кампании, сейчас поддерживается только SMS |
from | string | Подпись отправителя |
rateLimit | integer | Ограничение на отправку по количеству |
ratePeriod | integer | Ограничение на отправку за период времени. Игнорируется, если rateLimit не задан или 0 |
deferredToTs | string | Дата и время отправки, если нужно начать рассылку в указанное время. Должна быть не позднее чем через 14 дней и не ранее чем через час от текущего времени. Формат: 2013-12-31 15:34:55 |
mclass | integer | 0, 1, 2, 3, по умолчанию 1 - сообщения сохраняются в папку Входящих сообщений телефона, 0 - отображаются всплывающим окном и никуда не сохраняются (flashSMS), поддерживается не всеми телефонами, 2 - Сохраняется на сим карту, 3 - SIM Toolkit SMS |
ttl | integer | Время жизни сообщения в минутах от 1 мин до 3 суток (4320 мин) с момента отправки (параметр доступен только для SMS кампаний) |
counters | object | Различные счетчики кампании, описанные в таблице ниже. |
counters
Поле | Тип | Описание |
---|---|---|
updateTs | datetime | Время последнего обновления счетчиков. Формат: 2013-12-31 15:34:55 |
totalNewSegNum | integer | Общее количество сегментов со статусом NEW |
totalAcceptdSegNum | integer | Общее количество сегментов со статусом ACCEPTD |
totalDelivrdSegNum | integer | Общее количество сегментов со статусом DELIVRD |
totalRejectdSegNum | integer | Общее количество сегментов со статусом REJECTD |
totalExpiredSegNum | integer | Общее количество сегментов со статусом EXPIRED |
totalUndelivSegNum | integer | Общее количество сегментов со статусом UNDELIV |
totalDeletedSegNum | integer | Общее количество сегментов со статусом DELETED |
totalUnknownSegNum | integer | Общее количество сегментов со статусом UNKNOWN |
totalPdlivrdSegNum | integer | Общее количество сегментов со статусом PDLIVRD |
totalSegNum | integer | Общее кол-во сегментов в кампании. Обновляется при обработке (перед отправкой) сообщений/сегментов кампании. |
totalNewMsgNum | integer | Общее количество сообщений со статусом NEW |
totalAcceptdMsgNum | integer | Общее количество сообщений со статусом ACCEPTD |
totalDelivrdMsgNum | integer | Общее количество сообщений со статусом DELIVRD |
totalRejectdMsgNum | integer | Общее количество сообщений со статусом REJECTD |
totalExpiredMsgNum | integer | Общее количество сообщений со статусом EXPIRED |
totalUndelivMsgNum | integer | Общее количество сообщений со статусом UNDELIV |
totalDeletedMsgNum | integer | Общее количество сообщений со статусом DELETED |
totalUnknownMsgNum | integer | Общее количество сообщений со статусом UNKNOWN |
totalPdlivrdMsgNum | integer | Общее количество сообщений со статусом PDLIVRD |
totalMsgNum | integer | Общее количество сообщений (не сегментов). Обновляется при обработке (перед отправкой) сообщений/сегментов кампании. |
totalNewMsgCost | float | Общая стоимость всех сегментов со статусом NEW |
totalAcceptdMsgCost | float | Общая стоимость всех сегментов со статусом ACCEPTD |
totalDelivrdMsgCost | float | Общая стоимость всех сегментов со статусом DELIVRD |
totalRejectdMsgCost | float | Общая стоимость всех сегментов со статусом REJECTD |
totalExpiredMsgCost | float | Общая стоимость всех сегментов со статусом EXPIRED |
totalUndelivMsgCost | float | Общая стоимость всех сегментов со статусом UNDELIV |
totalDeletedMsgCost | float | Общая стоимость всех сегментов со статусом DELETED |
totalUnknownMsgCost | float | Общая стоимость всех сегментов со статусом UNKNOWN |
totalPdlivrdMsgCost | float | Общая стоимость всех сегментов со статусом PDLIVRD |
totalCost | float | Общая стоимость всех сегментов в кампании. Обновляется при обработке (перед отправкой) сообщений/сегментов кампании. |
recipientsRejected | integer | Количество отклоненных получателей (не включенных в кампанию). Обновляется при обработке (перед отправкой) сообщений/сегментов кампании. |
curl -X POST \
'https://api.mobizon.ua/service/campaign/getInfo?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK' \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'id=123'
var data = "id=123";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.mobizon.ua/service/campaign/getInfo?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK");
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
<?php
use Mobizon\MobizonApi;
$api = new MobizonApi('KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK', 'api.mobizon.ua');
// Вызов АПИ метода
if ($api->call(
'campaign',
'getInfo',
array(
//идентификатор кампании
'id' => '123'
)
)
) {
// Получение результата выполнения метода
$result = $api->getData();
} else {
// Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}
https://api.mobizon.ua/service/Campaign/GetLinks
Параметр | Тип | Описание |
---|---|---|
campaignId | integer | Идентификатор кампании |
Массив данных для каждой ссылки
Поле | Тип | Описание |
---|---|---|
id | integer | Идентификатор ссылки |
code | string | Код короткой ссылки |
fullLink | string | Полная ссылка |
shortLink | string | Короткая ссылка |
clickCnt | integer | Кол-во кликов |
redirectCnt | integer | Кол-во переходов |
comment | string | Комментарий |
Код | Описание |
---|---|
2 | Если кампания не найдена. |
curl -X POST \
'https://api.mobizon.ua/service/campaign/getLinks?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK' \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'campaignId=123'
var data = "campaignId=123";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.mobizon.ua/service/campaign/getLinks?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK");
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
<?php
use Mobizon\MobizonApi;
$api = new MobizonApi('KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK', 'api.mobizon.ua');
// Вызов АПИ метода
if ($api->call(
'campaign',
'getLinks',
array(
//идентификатор кампании
'campaignId' => '123'
)
)
) {
// Получение результата выполнения метода
$result = $api->getData();
} else {
// Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}
https://api.mobizon.ua/service/Campaign/List
Если фильтр по дате создания кампании или дате ее отправки не установлен, то автоматически устанавливается фильтр по дате создания за последние сутки от текущего времени (c 00:00:00 прошлых суток до текущего момента по времени пользователя). Максимальный интервал выборки по дате создания/дате начала отправки - 90 дней, при попытке поиска по большему интервалу будут возвращены только результаты за последние 90 дней до даты конца интервала поиска; При установке только даты начала или только даты окончания вторая дата будет вычислена и установлена автоматически на расстоянии 90 дней от установленной. Если промежуток дат указан неверно (дата конца больше даты начала), то результат будет пустой. При установке только даты время устанавливается автоматически - для дат начала в значение 00:00:00
, а для дат окончания в 23:59:59
по времени пользователя в системе.
Параметр | Тип | Описание |
---|---|---|
criteria | array | Критерии поиска (см. таблицу Критерии поиска) |
pagination | array | Параметры постраничного вывода (см. таблицу Параметры постраничного вывода) |
sort | array | Параметры сортировки (см. таблицу Параметры сортировки) |
Параметр | Тип | Описание |
---|---|---|
criteria[id] | integer | Поиск по # кампании (если данный параметр установлен, то принудительное ограничение по дате создания не используется и поиск происходит по всем когда-либо созданным кампаниям) |
criteria[ids] | array | Поиск по идентификаторам кампаний, параметр должнен быть передан в виде массива или строки идентификаторов, разделенных запятыми, макисмальное кол-во идентификаторов - 10, при превышениии этого лимита поиск будет происходить по первым 10 из списка (если данный параметр установлен, то принудительное ограничение по дате создания не используется и поиск происходит по всем когда-либо созданным кампаниям) |
criteria[recipient] | string | Поиск по номеру получателя |
criteria[from] | string | Поиск по подписи (альфаимени) отправителя |
criteria[text] | string | Поиск по тексту кампании |
criteria[status] | string | Поиск по статусу кампании; список возможных статусов см. в документации |
criteria[createDateFrom] | string | Поиск по дате создания кампании начиная с указанной даты (формат даты YYYY-MM-DD ) |
criteria[createTimeFrom] | string | Поиск по дате создания кампании начиная с указанной даты с учетом точного времени в этот день (формат времени HH:MM:SS ) - если дата не указана, то данное поле игнорируется |
criteria[createDateTo] | string | Поиск по дате создания кампании менее указанной даты (формат даты YYYY-MM-DD ) |
criteria[createTimeTo] | string | Поиск по дате создания кампании менее указанной даты с учетом точного времени в этот день (формат времени HH:MM:SS ) - если дата не указана, то данное поле игнорируется |
criteria[sentDateFrom] | string | Поиск по дате отправки кампании начиная с указанной даты (формат даты YYYY-MM-DD ) |
criteria[sendTimeFrom] | string | Поиск по дате отправки кампании начиная с указанной даты с учетом точного времени в этот день (формат времени HH:MM:SS ) - если дата не указана, то данное поле игнорируется |
criteria[sentDateTo] | string | Поиск по дате отправки кампании менее указанной даты (формат даты YYYY-MM-DD ) |
criteria[sentTimeTo] | string | Поиск по дате отправки кампании менее указанной даты с учетом точного времени в этот день (формат времени HH:MM:SS ) - если дата не указана, то данное поле игнорируется |
criteria[type] | integer | Поиск по типу кампании; список доступных типов кампаний см. в документации |
Параметр | Тип | Описание |
---|---|---|
pagination[pageSize] | integer | Количество отображаемых элементов на странице |
pagination[currentPage] | integer | Текущая страница |
Параметр | Тип | Описание |
---|---|---|
sort[id] | integer | Идентификатор кампании |
sort[recipient] | string | Номер получателя |
sort[from] | string | Подпись отправителя |
sort[text] | string | Текст кампании |
sort[status] | string | Статус кампании. Список возможных статусов см. в таблице Статусы кампаний |
sort[type] | integer | Тип кампании |
Массив данных
Поле | Тип | Описание |
---|---|---|
items | array | Список найденных кампаний (см. таблицу Список кампаний) |
totalItemCount | integer | Общее количество найденных элементов |
Каждая из кампаний содержит поля:
Поле | Тип | Описание |
---|---|---|
userId | integer | Идентификатор пользователя |
partnerId | integer | Идентификатор партнера |
type | integer | Тип кампании |
name | string | Название кампании |
msgType | integer | Тип сообщений |
from | string | Подпись отправителя |
text | string | Текст сообщения или шаблон в случае шаблонной рассылки |
startTs | string | Время начала отправки |
createTs | string | Время создания |
rateLimit | integer | Ограничение отправки по количеству |
ratePeriod | integer | Период времени на ограничение по количеству |
status | string | Текущий статус кампании. Список возможных статусов см. в таблице Статусы кампаний |
creationWay | string | Способ создания кампании: 1 - WEB ,3 - SMPP , 5 - системная (например SMS с кодом подтверждения для формы) |
isDeleted | integer | Кампания удалена: 1 - да , 0 - нет |
extra | string | Сериализованное значение параметров (udh , ttl , mclass ) |
groups | string | Группы получателей рассылки |
counters | object | Различные счетчики кампании, описанные в таблице ниже. |
counters
Поле | Тип | Описание |
---|---|---|
updateTs | datetime | Время последнего обновления счетчиков. Формат: 2013-12-31 15:34:55 |
totalNewSegNum | integer | Общее количество сегментов со статусом NEW |
totalAcceptdSegNum | integer | Общее количество сегментов со статусом ACCEPTD |
totalDelivrdSegNum | integer | Общее количество сегментов со статусом DELIVRD |
totalRejectdSegNum | integer | Общее количество сегментов со статусом REJECTD |
totalExpiredSegNum | integer | Общее количество сегментов со статусом EXPIRED |
totalUndelivSegNum | integer | Общее количество сегментов со статусом UNDELIV |
totalDeletedSegNum | integer | Общее количество сегментов со статусом DELETED |
totalUnknownSegNum | integer | Общее количество сегментов со статусом UNKNOWN |
totalPdlivrdSegNum | integer | Общее количество сегментов со статусом PDLIVRD |
totalSegNum | integer | Общее кол-во сегментов в кампании. Обновляется при обработке (перед отправкой) сообщений/сегментов кампании. |
totalNewMsgNum | integer | Общее количество сообщений со статусом NEW |
totalAcceptdMsgNum | integer | Общее количество сообщений со статусом ACCEPTD |
totalDelivrdMsgNum | integer | Общее количество сообщений со статусом DELIVRD |
totalRejectdMsgNum | integer | Общее количество сообщений со статусом REJECTD |
totalExpiredMsgNum | integer | Общее количество сообщений со статусом EXPIRED |
totalUndelivMsgNum | integer | Общее количество сообщений со статусом UNDELIV |
totalDeletedMsgNum | integer | Общее количество сообщений со статусом DELETED |
totalUnknownMsgNum | integer | Общее количество сообщений со статусом UNKNOWN |
totalPdlivrdMsgNum | integer | Общее количество сообщений со статусом PDLIVRD |
totalMsgNum | integer | Общее количество сообщений (не сегментов). Обновляется при обработке (перед отправкой) сообщений/сегментов кампании. |
totalNewMsgCost | float | Общая стоимость всех сегментов со статусом NEW |
totalAcceptdMsgCost | float | Общая стоимость всех сегментов со статусом ACCEPTD |
totalDelivrdMsgCost | float | Общая стоимость всех сегментов со статусом DELIVRD |
totalRejectdMsgCost | float | Общая стоимость всех сегментов со статусом REJECTD |
totalExpiredMsgCost | float | Общая стоимость всех сегментов со статусом EXPIRED |
totalUndelivMsgCost | float | Общая стоимость всех сегментов со статусом UNDELIV |
totalDeletedMsgCost | float | Общая стоимость всех сегментов со статусом DELETED |
totalUnknownMsgCost | float | Общая стоимость всех сегментов со статусом UNKNOWN |
totalPdlivrdMsgCost | float | Общая стоимость всех сегментов со статусом PDLIVRD |
totalCost | float | Общая стоимость всех сегментов в кампании. Обновляется при обработке (перед отправкой) сообщений/сегментов кампании. |
recipientsRejected | integer | Количество отклоненных получателей (не включенных в кампанию). Обновляется при обработке (перед отправкой) сообщений/сегментов кампании. |
Статус | Описание |
---|---|
NEW | Кампания создана, но пользователь еще не отправил ее. В этом статусе разрешено добавление получателей. |
MODERATION | Ожидает проверки модератором на соответствие правилам сервиса. |
DECLINED | Отклонена модератором, так как не соответствует правилам сервиса или требованиям операторов, номера которых присутствуют в кампании. |
READY_FOR_SEND | Кампания допущена к отправке и будет отправлена. |
AUTO_READY_FOR_SEND | Кампания не нуждается в модерации и будет отправлена. |
NOT_YET_SENT | Статус для поиска. Включает все статусы, когда кампания еще не была отправлена. У кампаний такого статуса быть не может. |
RUNNING | Кампания находится в процессе отправки. |
DEFERRED | Отложена и будет отправлена в указанное время. |
SENT | Все сообщения были отправлены операторам и ожидают статусов. |
DONE | Все статусы получены или достигнуто максимальное время ожидания статусов для всех SMS и статусы не получены (по умолчанию - 24 часа). После установки этого статуса никакие счетчики кампании не меняются. |
curl -X POST \
'https://api.mobizon.ua/service/campaign/list?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK' \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'criteria%5Bfrom%5D=Alpha&pagination%5BcurrentPage%5D=2&pagination%5BpageSize%5D=50&sort%5Btype%5D=ASC'
var data = "criteria%5Bfrom%5D=Alpha&pagination%5BcurrentPage%5D=2&pagination%5BpageSize%5D=50&sort%5Btype%5D=ASC";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.mobizon.ua/service/campaign/list?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK");
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
<?php
use Mobizon\MobizonApi;
$api = new MobizonApi('KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK', 'api.mobizon.ua');
// Вызов АПИ метода
if ($api->call(
'campaign',
'list',
array(
//критерии поиска
'criteria' => array(
//подпись отправителя
'from' => 'Alpha'
),
//параметры постраничного вывода
'pagination' => array(
//текущая страница
'currentPage' => '2',
//количество отображаемых элементов на странице
'pageSize' => '50'
),
//параметры сортировки
'sort' => array(
//сортировка по типу кампании
'type' => 'ASC'
)
)
)
) {
// Получение результата выполнения метода
$result = $api->getData();
} else {
// Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}
https://api.mobizon.ua/service/Campaign/Send
В зависимости от флагов модерации пользователя, создавшего кампанию, кампания попадет на модерацию либо будет сразу поставлена в очередь на отправку
Параметр | Тип | Описание |
---|---|---|
id | integer | Идентификатор кампании |
integer статус кампании: 1 - модерация, 2 - отправка
Код | Описание |
---|---|
2 | Если кампания не найдена. |
10 | Если не удалось сменить статус кампании. |
curl -X POST \
'https://api.mobizon.ua/service/campaign/send?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK' \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'id=123'
var data = "id=123";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.mobizon.ua/service/campaign/send?output=json&api=v1&apiKey=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK");
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
<?php
use Mobizon\MobizonApi;
$api = new MobizonApi('KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK', 'api.mobizon.ua');
// Вызов АПИ метода
if ($api->call(
'campaign',
'send',
array(
//идентификатор кампании
'id' => '123'
)
)
) {
// Получение результата выполнения метода
$result = $api->getData();
} else {
// Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}