Регистрация

Модуль Campaign

Данный модуль содержит функции для создания SMS кампаний, добавления в них получателей одним из возможных способов, запуска кампании в отправку, удаления неактуальных кампаний, просмотра списка кампаний и поиска по ним.

API methods

Добавление получателей в массовую SMS кампанию
https://api.mobizon.kz/service/Campaign/AddRecipients

Создание новой кампании рассылки
https://api.mobizon.kz/service/Campaign/Create

Полное удаление кампании
https://api.mobizon.kz/service/Campaign/Delete

Получение основных данных кампании
https://api.mobizon.kz/service/Campaign/Get

Получение статистических данных кампании
https://api.mobizon.kz/service/Campaign/GetInfo

Получение коротких ссылок кампаниии
https://api.mobizon.kz/service/Campaign/GetLinks

Получение списка кампаний
https://api.mobizon.kz/service/Campaign/List

Отправка кампании
https://api.mobizon.kz/service/Campaign/Send

Добавление получателей в массовую SMS кампанию

https://api.mobizon.kz/service/Campaign/AddRecipients

В одном запросе разрешена передача только данных о получателях одного типа:

  • список номеров/ID контактных карт/ID контактов
  • список ID групп из контактной книги
  • файл со списком получателей.

При попытке передать сразу несколько разных типов получателей будет возвращена ошибка 12. Если необходимо добавить в одну рассылку получателей из нескольких источников, следует сделать это в несколько запросов.

При добавлении номеров получателей, контактов или контактных карт максимальное число получателей, загружаемых в одном запросе, не может превышать 500 номеров. В случае превышения лимита будет возвращена ошибка 12 и получатели не будут добавлены.

Для загрузки в одну кампанию любого желаемого количества контактов следует разбивать список на порции по 500 или меньше штук и загружать каждую порцию отдельным вызовом апи - получатели будут добавляться к уже существующему списку, если не указан параметр replace=1.

Загрузка номеров, контактов и карт выполняется в основном потоке вебсервера и возвращает результат по каждому обработанному получателю в виде массива (см. формат возвращаемых данных ниже).

Загрузка из контактной группы или из файла вызывает создание фоновой задачи (асинхронная загрузка) и возвращает ее ID для дальнейшего отслеживания статуса. В этом случае код ответа API будет 100.

Номера получателей должны передаваться в международном формате. Все посторонние символы будут удалены из номера автоматически.

Каждый номер проверяется на возможность отправки на него сообщения по коду страны и оператора, которому он принадлежит.

Все не прошедшие проверку номера будут отклонены с соответствующим кодом ошибки (code), а для каждого добавленного номера будет возвращен ID созданного сообщения (messageId) для возможности последующего запроса статуса.

Если не все переданные получатели были добавлены (возникли ошибки), то API может вернуть один из двух кодов ответа:

  • 98 - если не все получатели были добавлены, но хотя бы один получатель прошел проверку
  • 99 - если ни один получатель не прошел проверку.

На все время добавления получателей кампания блокируется на добавление другими процессами, поэтому параллельное добавление невозможно.

Параметры запроса

ПараметрТипОписание
idintegerИдентификатор кампании, в которую необходимо добавить получателей
recipientsarray|stringДля обычной рассылки получатели, могут быть переданы в виде:
  • строки с номерами получателей, разделенных запятыми или переносами строк;
  • одномерного массива, где каждый элемент массива соответствует одному номеру получателя;
  • двухмерного массива, где каждый элемент - это массив, содеражащий элемент с ключем recipient и номером получателя в качестве значения.
Для шаблонной рассылки получатели должны быть переданы в виде двухмерного массива, где каждый элемент - это массив, содеражащий элемент с ключем recipient и номером получателя в качестве значения, так же могут находиться (но не обязательно) элементы с ключами, соответствующими названиям переменных (плейсхолдеров) в тексте SMS (без окружающих их фигурных скобок).
При этом, если какие-то из плейсхолдеров, содержащихся в тексте, не переданы, то обработка будет происходить в зависимости от переданного параметра placeholdersFlag (см. ниже описание флага). Примеры запросов см. ниже.
recipientsCardIdsarray|stringМассив или строка разделенных запятыми или переносами строк идентификаторов контактных карт из контактной книги, по которым будет сформирована отправка.
recipientsContactIdsarray|stringМассив или строка разделенных запятыми или переносами строк идентификаторов контактов из контактной книги.
Если рассылка шаблонная, то данные для заполнения плейсхолдеров в тексте будут использоваться из соответствующей контактной карты, которой принадлежит этот контакт.
recipientsGroupIdsarray|stringМассив или строка разделенных запятыми или переносами строк идентификаторов групп из контактной книги, по которым будет сформирована кампания.
recipientsFilefileМассив или строка разделенных запятыми или переносами строк идентификаторов групп из контактной книги, по которым будет сформирована кампания.
Объект загруженного файла с получателями - файл CSV или Excel (только XLS) с номерами получателей в международном формате.
Для обычной рассылки - номера по одному в строку.
Для шаблонной рассылки - номера по одному в строку в одном из столбцов с заголовком recipient, в остальных столбцах могут быть плейсходеры, заголовки столбцов должны соответствовать плейсхолдерам в тексте SMS (без окружающих фигурных скобок). Для текста плейсхолдеров разрешены только латинские буквы и цифры, а также символы '_', '-'. При наличии столбцов с одинаковыми заголовками, будет возвращена ошибка.
При этом если для каких-либо из плейсхолдеров, содержащихся в тексте, нет соответсвующих столбцов, то обработка будет происходить в зависимости от переданного значение placeholdersFlag параметра params (см. ниже описание флага).
paramsarrayДополнительные настройки (см. таблицу Дополнительные настройки).
Дополнительные настройки
ПараметрТипОписание
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 : При загрузке получателей из списка номеров, контактов или контактных карт возвращается массив, каждый элемент которого содержит данные о загруженных получателях:

ПолеТипОписание
recipientstring Номер получателя, который добавляется в кампанию
codeintegerКод результата добавления получателя:
0 - номер успешно добавлен в кампанию
1 - в переданных данных отсутствует номер телефона или его значение пустое
2 - в переданных данных не обнаружен номер телефона (скорее всего данные некорректно отформатированы)
3 - номер не соответствует международному формату телефонных номеров
4 - номер уже был добавлен в кампанию (исключение дубликатов из рассылки)
5 - номер находится в стоп-листе (это может быть как ваш стоп-лист, так и стоп-лист системы)
6 - отправка в страну назначения ограничена настройками вашего аккаунта
7 - невозможно определить оператора и/или страну назначения
8 - в системе отсутствует возможность отправки на данного оператора, обратитесь в нашу техподдержку для уточнения возможности отправки
20 - переданые данные не содержат всех необходимых плейсхолдеров (если placeholdersFlag установлен в значение 1)
30 - контактная карта не найдена в контактной книге (recipient будет равен null)
31 - контактная карта не содержит мобильного номера (recipient будет равен null)
32 - контакт не найден в контактной книге (recipient будет равен null)
51 - по техническим причинам на данный момент невозможно создать короткую ссылку
99 - системная ошибка при добавлении номера получателя
messageIdintegerИдентификатор добавленного сообщения, если номер был добавлен, по указанному идентификатору можно получить статус сообщения.
numberintegerИсходное, переданное пользователем значение номера получателя (если передан номер получателя)
contactIdintegerИдентификатор переданного контакта (если передавался recipientsContactIds)
contactCardIdintegerИдентификатор переданной контактной карты (если передавался 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.kz/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]integer0, 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Если какие либо параметры содержат неверные значения.

Examples

curl -X POST \
  'https://api.mobizon.kz/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.kz/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.kz');

// Вызов АПИ метода
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.kz/service/Campaign/Delete

Удалить можно кампанию, которая не начала отправляться, а если кампания отложена, то до отправки должно быть не менее 5 минут.

Параметры запроса

ПараметрТипОписание
idintegerИдентификатор кампании

Ответ сервера

boolean true - если удаление прошло успешно

Коды ошибок

КодОписание
2Если кампания с указанным идентификатором не найдена
10Если кампания с указанным идентификатором не может быть удалена

Examples

curl -X POST \
  'https://api.mobizon.kz/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.kz/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.kz');

// Вызов АПИ метода
if ($api->call(
    'campaign',
    'delete',
    array(
        //идентификатор кампании
        'id' => '123'
    )
)
) {
    // Получение результата выполнения метода
    $result = $api->getData();
} else {
    // Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
    echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}

Получение основных данных кампании

https://api.mobizon.kz/service/Campaign/Get

Параметры запроса

ПараметрТипОписание
idintegerИдентификатор кампании

Ответ сервера

Массив данных

ПолеТипОписание
namestringНазвание кампани
textstringПолный текст сообщения, или шаблонный текст с плейсхолдерами, которые затем будут заменены на уникальный для каждого сообщения текст
msgTypestringТип сообщений в кампании, сейчас поддерживается только SMS
fromstringПодпись отправителя
rateLimitintegerОграничение на отправку по количеству
ratePeriodintegerОграничение на отправку за период времени. Игнорируется, если rateLimit не задан или 0
deferredToTsstringДата и время отправки, если нужно начать рассылку в указанное время. Должна быть не позднее чем через 14 дней и не ранее чем через час от текущего времени. Формат: 2013-12-31 15:34:55
mclassinteger0, 1, 2, 3, по умолчанию 1 - сообщения сохраняются в папку Входящих сообщений телефона, 0 - отображаются всплывающим окном и никуда не сохраняются (flashSMS), поддерживается не всеми телефонами, 2 - Сохраняется на сим карту, 3 - SIM Toolkit SMS
ttlintegerВремя жизни сообщения в минутах от 1 мин до 3 суток (4320 мин) с момента отправки (параметр доступен только для SMS кампаний)

Examples

curl -X POST \
  'https://api.mobizon.kz/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.kz/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.kz');

// Вызов АПИ метода
if ($api->call(
    'campaign',
    'get',
    array(
        //идентификатор кампании
        'id' => '123'
    )
)
) {
    // Получение результата выполнения метода
    $result = $api->getData();
} else {
    // Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
    echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}

Получение статистических данных кампании

https://api.mobizon.kz/service/Campaign/GetInfo

Используется для получения предварительной информации о стоимости кампании с учетом текущей ситуации в системе, а так же для получения информации о количестве отправленных, доставленных сообщений, количестве потраченных средств и другую относящуюся к рассылке статистику.
ВАЖНО! Из-за технических особенностей подсчета стоимости рассылки, данные о возможной стоимости рассылки указаны на момент добавления получателей и не меняются с течением времени, если только не загрузить получателей повторно либо отредактировать данные рассылки (в случае редактирования данных все получатели и расчеты сбрасываются и требуется повторная загрузка).

Параметры запроса

ПараметрТипОписание
idintegerИдентификатор кампании
getFilledTplCampaignTextbool1 - возвращать текст шаблонной кампании заполненный реальными данными получателя, по умолчанию 0 - текст кампании с плейсхолдерами

Ответ сервера

ПолеТипОписание
namestringНазвание кампани
textstringПолный текст сообщения, или шаблонный текст с плейсхолдерами, которые затем будут заменены на уникальный для каждого сообщения текст
msgTypestringТип сообщений в кампании, сейчас поддерживается только SMS
fromstringПодпись отправителя
rateLimitintegerОграничение на отправку по количеству
ratePeriodintegerОграничение на отправку за период времени. Игнорируется, если rateLimit не задан или 0
deferredToTsstringДата и время отправки, если нужно начать рассылку в указанное время. Должна быть не позднее чем через 14 дней и не ранее чем через час от текущего времени. Формат: 2013-12-31 15:34:55
mclassinteger0, 1, 2, 3, по умолчанию 1 - сообщения сохраняются в папку Входящих сообщений телефона, 0 - отображаются всплывающим окном и никуда не сохраняются (flashSMS), поддерживается не всеми телефонами, 2 - Сохраняется на сим карту, 3 - SIM Toolkit SMS
ttlintegerВремя жизни сообщения в минутах от 1 мин до 3 суток (4320 мин) с момента отправки (параметр доступен только для SMS кампаний)
countersobjectРазличные счетчики кампании, описанные в таблице ниже.
Поля объекта counters
ПолеТипОписание
updateTsdatetimeВремя последнего обновления счетчиков. Формат: 2013-12-31 15:34:55
totalNewSegNumintegerОбщее количество сегментов со статусом NEW
totalAcceptdSegNumintegerОбщее количество сегментов со статусом ACCEPTD
totalDelivrdSegNumintegerОбщее количество сегментов со статусом DELIVRD
totalRejectdSegNumintegerОбщее количество сегментов со статусом REJECTD
totalExpiredSegNumintegerОбщее количество сегментов со статусом EXPIRED
totalUndelivSegNumintegerОбщее количество сегментов со статусом UNDELIV
totalDeletedSegNumintegerОбщее количество сегментов со статусом DELETED
totalUnknownSegNumintegerОбщее количество сегментов со статусом UNKNOWN
totalPdlivrdSegNumintegerОбщее количество сегментов со статусом PDLIVRD
totalSegNumintegerОбщее кол-во сегментов в кампании. Обновляется при обработке (перед отправкой) сообщений/сегментов кампании.
totalNewMsgNumintegerОбщее количество сообщений со статусом NEW
totalAcceptdMsgNumintegerОбщее количество сообщений со статусом ACCEPTD
totalDelivrdMsgNumintegerОбщее количество сообщений со статусом DELIVRD
totalRejectdMsgNumintegerОбщее количество сообщений со статусом REJECTD
totalExpiredMsgNumintegerОбщее количество сообщений со статусом EXPIRED
totalUndelivMsgNumintegerОбщее количество сообщений со статусом UNDELIV
totalDeletedMsgNumintegerОбщее количество сообщений со статусом DELETED
totalUnknownMsgNumintegerОбщее количество сообщений со статусом UNKNOWN
totalPdlivrdMsgNumintegerОбщее количество сообщений со статусом PDLIVRD
totalMsgNumintegerОбщее количество сообщений (не сегментов). Обновляется при обработке (перед отправкой) сообщений/сегментов кампании.
totalNewMsgCostfloatОбщая стоимость всех сегментов со статусом NEW
totalAcceptdMsgCostfloatОбщая стоимость всех сегментов со статусом ACCEPTD
totalDelivrdMsgCostfloatОбщая стоимость всех сегментов со статусом DELIVRD
totalRejectdMsgCostfloatОбщая стоимость всех сегментов со статусом REJECTD
totalExpiredMsgCostfloatОбщая стоимость всех сегментов со статусом EXPIRED
totalUndelivMsgCostfloatОбщая стоимость всех сегментов со статусом UNDELIV
totalDeletedMsgCostfloatОбщая стоимость всех сегментов со статусом DELETED
totalUnknownMsgCostfloatОбщая стоимость всех сегментов со статусом UNKNOWN
totalPdlivrdMsgCostfloatОбщая стоимость всех сегментов со статусом PDLIVRD
totalCostfloatОбщая стоимость всех сегментов в кампании. Обновляется при обработке (перед отправкой) сообщений/сегментов кампании.
recipientsRejectedintegerКоличество отклоненных получателей (не включенных в кампанию). Обновляется при обработке (перед отправкой) сообщений/сегментов кампании.

Examples

curl -X POST \
  'https://api.mobizon.kz/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.kz/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.kz');

// Вызов АПИ метода
if ($api->call(
    'campaign',
    'getInfo',
    array(
        //идентификатор кампании
        'id' => '123'
    )
)
) {
    // Получение результата выполнения метода
    $result = $api->getData();
} else {
    // Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
    echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}

Получение коротких ссылок кампаниии

https://api.mobizon.kz/service/Campaign/GetLinks

Параметры запроса

ПараметрТипОписание
campaignIdintegerИдентификатор кампании

Ответ сервера

Массив данных для каждой ссылки

ПолеТипОписание
idintegerИдентификатор ссылки
codestringКод короткой ссылки
fullLinkstringПолная ссылка
shortLinkstringКороткая ссылка
clickCntintegerКол-во кликов
redirectCntintegerКол-во переходов
commentstringКомментарий

Коды ошибок

КодОписание
2Если кампания не найдена.

Examples

Получение списка кампаний

https://api.mobizon.kz/service/Campaign/List

Если фильтр по дате создания кампании или дате ее отправки не установлен, то автоматически устанавливается фильтр по дате создания за последние сутки от текущего времени (c 00:00:00 прошлых суток до текущего момента по времени пользователя). Максимальный интервал выборки по дате создания/дате начала отправки - 90 дней, при попытке поиска по большему интервалу будут возвращены только результаты за последние 90 дней до даты конца интервала поиска; При установке только даты начала или только даты окончания вторая дата будет вычислена и установлена автоматически на расстоянии 90 дней от установленной. Если промежуток дат указан неверно (дата конца больше даты начала), то результат будет пустой. При установке только даты время устанавливается автоматически - для дат начала в значение 00:00:00, а для дат окончания в 23:59:59 по времени пользователя в системе.

Параметры запроса

ПараметрТипОписание
criteriaarrayКритерии поиска (см. таблицу Критерии поиска)
paginationarrayПараметры постраничного вывода (см. таблицу Параметры постраничного вывода)
sortarrayПараметры сортировки (см. таблицу Параметры сортировки)
Критерии поиска
ПараметрТипОписание
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Тип кампании

Ответ сервера

Массив данных

ПолеТипОписание
itemsarrayСписок найденных кампаний (см. таблицу Список кампаний)
totalItemCountintegerОбщее количество найденных элементов
Список кампаний

Каждая из кампаний содержит поля:

ПолеТипОписание
userIdintegerИдентификатор пользователя
partnerIdintegerИдентификатор партнера
typeintegerТип кампании
namestringНазвание кампании
msgTypeintegerТип сообщений
fromstringПодпись отправителя
textstringТекст сообщения или шаблон в случае шаблонной рассылки
startTsstringВремя начала отправки
createTsstringВремя создания
rateLimitintegerОграничение отправки по количеству
ratePeriodintegerПериод времени на ограничение по количеству
statusstringТекущий статус кампании. Список возможных статусов см. в таблице Статусы кампаний
creationWaystringСпособ создания кампании: 1 - WEB,3 - SMPP, 5 - системная (например SMS с кодом подтверждения для формы)
isDeletedintegerКампания удалена: 1 - да, 0 - нет
extrastringСериализованное значение параметров (udh, ttl, mclass)
groupsstringГруппы получателей рассылки
countersobjectРазличные счетчики кампании, описанные в таблице ниже.
Поля объекта counters
ПолеТипОписание
updateTsdatetimeВремя последнего обновления счетчиков. Формат: 2013-12-31 15:34:55
totalNewSegNumintegerОбщее количество сегментов со статусом NEW
totalAcceptdSegNumintegerОбщее количество сегментов со статусом ACCEPTD
totalDelivrdSegNumintegerОбщее количество сегментов со статусом DELIVRD
totalRejectdSegNumintegerОбщее количество сегментов со статусом REJECTD
totalExpiredSegNumintegerОбщее количество сегментов со статусом EXPIRED
totalUndelivSegNumintegerОбщее количество сегментов со статусом UNDELIV
totalDeletedSegNumintegerОбщее количество сегментов со статусом DELETED
totalUnknownSegNumintegerОбщее количество сегментов со статусом UNKNOWN
totalPdlivrdSegNumintegerОбщее количество сегментов со статусом PDLIVRD
totalSegNumintegerОбщее кол-во сегментов в кампании. Обновляется при обработке (перед отправкой) сообщений/сегментов кампании.
totalNewMsgNumintegerОбщее количество сообщений со статусом NEW
totalAcceptdMsgNumintegerОбщее количество сообщений со статусом ACCEPTD
totalDelivrdMsgNumintegerОбщее количество сообщений со статусом DELIVRD
totalRejectdMsgNumintegerОбщее количество сообщений со статусом REJECTD
totalExpiredMsgNumintegerОбщее количество сообщений со статусом EXPIRED
totalUndelivMsgNumintegerОбщее количество сообщений со статусом UNDELIV
totalDeletedMsgNumintegerОбщее количество сообщений со статусом DELETED
totalUnknownMsgNumintegerОбщее количество сообщений со статусом UNKNOWN
totalPdlivrdMsgNumintegerОбщее количество сообщений со статусом PDLIVRD
totalMsgNumintegerОбщее количество сообщений (не сегментов). Обновляется при обработке (перед отправкой) сообщений/сегментов кампании.
totalNewMsgCostfloatОбщая стоимость всех сегментов со статусом NEW
totalAcceptdMsgCostfloatОбщая стоимость всех сегментов со статусом ACCEPTD
totalDelivrdMsgCostfloatОбщая стоимость всех сегментов со статусом DELIVRD
totalRejectdMsgCostfloatОбщая стоимость всех сегментов со статусом REJECTD
totalExpiredMsgCostfloatОбщая стоимость всех сегментов со статусом EXPIRED
totalUndelivMsgCostfloatОбщая стоимость всех сегментов со статусом UNDELIV
totalDeletedMsgCostfloatОбщая стоимость всех сегментов со статусом DELETED
totalUnknownMsgCostfloatОбщая стоимость всех сегментов со статусом UNKNOWN
totalPdlivrdMsgCostfloatОбщая стоимость всех сегментов со статусом PDLIVRD
totalCostfloatОбщая стоимость всех сегментов в кампании. Обновляется при обработке (перед отправкой) сообщений/сегментов кампании.
recipientsRejectedintegerКоличество отклоненных получателей (не включенных в кампанию). Обновляется при обработке (перед отправкой) сообщений/сегментов кампании.
Статусы кампаний
СтатусОписание
NEWКампания создана, но пользователь еще не отправил ее. В этом статусе разрешено добавление получателей.
MODERATIONОжидает проверки модератором на соответствие правилам сервиса.
DECLINEDОтклонена модератором, так как не соответствует правилам сервиса или требованиям операторов, номера которых присутствуют в кампании.
READY_FOR_SENDКампания допущена к отправке и будет отправлена.
AUTO_READY_FOR_SENDКампания не нуждается в модерации и будет отправлена.
NOT_YET_SENTСтатус для поиска. Включает все статусы, когда кампания еще не была отправлена. У кампаний такого статуса быть не может.
RUNNINGКампания находится в процессе отправки.
DEFERREDОтложена и будет отправлена в указанное время.
SENTВсе сообщения были отправлены операторам и ожидают статусов.
DONEВсе статусы получены или достигнуто максимальное время ожидания статусов для всех SMS и статусы не получены (по умолчанию - 24 часа). После установки этого статуса никакие счетчики кампании не меняются.

Examples

curl -X POST \
  'https://api.mobizon.kz/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.kz/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.kz');

// Вызов АПИ метода
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.kz/service/Campaign/Send

В зависимости от флагов модерации пользователя, создавшего кампанию, кампания попадет на модерацию либо будет сразу поставлена в очередь на отправку

Параметры запроса

ПараметрТипОписание
idintegerИдентификатор кампании

Ответ сервера

integer статус кампании: 1 - модерация, 2 - отправка

Коды ошибок

КодОписание
2Если кампания не найдена.
10Если не удалось сменить статус кампании.

Examples

curl -X POST \
  'https://api.mobizon.kz/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.kz/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.kz');

// Вызов АПИ метода
if ($api->call(
    'campaign',
    'send',
    array(
        //идентификатор кампании
        'id' => '123'
    )
)
) {
    // Получение результата выполнения метода
    $result = $api->getData();
} else {
    // Во время выполнения произошла ошибка, вывод кода ошибки и текста сообщения
    echo '[' . $api->getCode() . '] ' . $api->getMessage() . PHP_EOL;
}