В данном документе содержатся сведения о протоколе JSONv2, который позволяет передавать на платформу сообщения поверх протокола HTTP(S).
Настоящий документ содержит информацию,актуальную на момент его составления. Производитель не гарантирует отсутствие ошибок в данном документе. Производитель оставляет за собой право вносить изменения в документ без предварительного уведомления
Никакаячастьнастоящегодокументанеможетбытьвоспроизведенаилипереданавкакойбытонибыло форме и какими бы то ни было средствами без письменного уведомления Производителя
Производитель не гарантирует, что специфицированное в данном документе программное обеспечение не содержит ошибок, будет работать в произвольно выбранных условиях и удовлетворять всем требованиям, которые могут быть к нему предъявлены.
Производитель не гарантирует работоспособность нелегально полученного программного обеспечения. Нелегальное использование программного обеспечения и документации на него преследуется по закону
Протокол JSONv2 позволяет передавать на платформу сообщения поверх протокола HTTP(S).
Платформа выступает в роли сервера. Клиенты, присылающие сообщения на доставку, выступают в роли HTTP-клиентов.
Протокол предоставляет возможность передачи платформе одиночного сообщения для доставки абоненту, а также возможность запуска массовых рассылок сообщений двух типов.
Сценарий доставки одиночного сообщения:
Сценарий запуска массовой рассылки обычного типа (batch или broadcast):
Сценарий запуска массовой рассылки типа sync (batch или broadcast):

| Параметр | Значение |
|---|---|
| URLof the API | [JSONv2_URL]/{client_id}/json2/simple |
| Method | POST |
| HTTPAuthentication | Basic |
| Mandatory header | Content-Type: application/json |
Параметры запроса делятся на два типа: обязательные и необязательные. Если хотя бы один обязательный параметр отсутствует, запрос не принимается платформой. Каждый канал передачи сообщений имеет свои уникальные параметры. Описание всех параметров запроса см. ниже
{
"phone_number": 79651111111,
"extra_id": "AD-6640-7006",
"callback_url": "https://send-dr-here.com",
"start_time": "2020-12-12 10:10:10+03:00",
"tag": "Campaign name",
"channels": [
"sms"
],
"channel_options": {
"sms": {
"text": "Text for SMS",
"alpha_name": "Test",
"ttl": 300
}
}
}
HTTP статус 200 OK означает, что Ваш запрос был успешно обработан сервером.
Если запрос правильный, вы получите следующий ответ:
{"message_id":"9f60ac8f-e721-5027-b838-e6fcb95fcd7a"}
Если запрос содержит ошибку или несоответствие с настройками соединения, вы получите следующий ответ:
{"error_code":36024,"error_text":"Phone number incorrect"}
Описание параметров ответа см. ниже.
Протокол JSONv2 предоставляет возможность запуска массовой рассылки сообщений по одному запросу. Максимальное количество получателей в одном запросе- 50 000.
Запрос на batch-рассылкусодержит персонализированный текст сообщения по всем каналам связи для каждого пользователя.
Запрос на broadcast-рассылкусодержит общий текст и переменные, которые содержат персонализированные значения и могут быть использованы для всех параметров запроса
| Параметр | Значение |
|---|---|
| Batch-URL of the API | [JSONv2_URL]/{client_id}/json2/batch или [JSONv2_URL]/{client_id}/json2/batch/sync |
| Broadcast-URL of the API | [JSONv2_URL]/{client_id}/json2/broadcast или [JSONv2_URL]/{client_id}/json2/broadcast/sync |
| Method | POST |
| HTTPAuthentication | Basic |
| Mandatory header | Content-Type: application/json |
Платформа возвращает ответ на запрос (см. Ответ на запрос на рассылку массовых сообщений).
Пример запроса на batch-рассылку SMS-сообщений:
{
"messages": [
{
"phone_number": 79651111111,
"extra_id": "AD-6640-7006",
"text": "Text for all channels, recipient #79651111111"
},
{
"phone_number": 79652222222,
"extra_id": "AD-6640-7007",
"text": "Text for all channels, recipient #79652222222"
}
],
"start_time": "2020-12-12 10:10:10+03:00",
"tag": "Campaign name",
"channels": [
"sms"
],
"channel_options": {
"sms": {
"alpha_name": "Test",
"ttl": 300
}
}
}
HTTP статус 200 OK означает, что Ваш запрос был успешно обработан сервером.
Пример запроса на broadcast-рассылку SMS сообщений:
{
"recipients": [
{
"phone_number": 79651111111,
"extra_id": "AD-6640-7006",
"name": "Michael",
"greeting": "Mr. "
},
{
"phone_number": 79652222222,
"extra_id": "AD-6640-7007",
"name": "Zoya",
"greeting": "Ms. "
}
],
"start_time": "2020-12-12 10:10:10+03:00",
"tag": "Campaign name",
"channels": [
"sms"
],
"channel_options": {
"sms": {
"text": "Dear %greeting% %name%! Here is an SMS",
"alpha_name": "Test",
"ttl": 300
}
}
}
В тексте можно использовать переменные. Имя переменной может быть произвольными указывается между символами “%”. Переменные с их значениями для подстановки должны бытьуказаны в разделе “recipients”. Количество переменных в тексте неограниченно. Но существует ограничение на длину сообщения, и оно должно соответствовать следующим параметрам:
{
"recipients": [
{
"phone_number": 79651111111,
"extra_id": "AD-6640-7006",
"name": "Michael",
"greeting": "Mr. "
},
{
"phone_number": 79652222222,
"extra_id": "AD-6640-7007",
"name": "Zoya",
"greeting": "Ms. "
}
],
"start_time": "2020-12-12 10:10:10+03:00",
"tag": "Campaign name",
"channels": [
"sms"
],
"channel_options": {
"sms": {
"text": "Dear %greeting% %name%! Here is an SMS",
"alpha_name": "Test",
"ttl": 300
}
},
"sms_cyrillic": {
"min": 0,
"max": 1340
},
"sms_latin": {
"min": 0,
"max": 3060
}
}
HTTP статус 200 OK означает, что Ваш запрос был успешно обработан сервером.
Если запрос отправлен на URL[JSONv2_URL]/{client_id}/json2/broadcastили [JSONv2_URL] /{client_id}/json в ответ Вы получите идентификатор (ID) кампании в виде:
{"job_id": "66591729-cb47-5ef9-964b-949dc6aff84f"}
Используя этот job_id можно запрашивать отчёт о статусе кампании(рассылки).
Если запрос отправленна URL [JSONv2_URL]/{client_id}/json2/broadcast/sync или [JSONv2_URL] /{client_id} Вы получите детали, по каждому сообщению, с их “message_id”:
{
"messages": [
{
"processed": true,
"phone_number": "79651111111",
"message_id": "9f60ac8f-e721-5027-b838-e6fcb95fcd7a",
"extra_id": "AD-6640-7006",
"accepted": true
},
{
"processed": true,
"phone_number": "79652222222",
"message_id": "e5ea7286-6849-52d7-9e1b-8719b736283e",
"extra_id": "AD-6640-7007",
"accepted": true
}
]
}
Описание параметров ответа см. ниже.
Запрос статуса кампании позволяет получить информациюо состоянии вашей кампании (рассылки)
| Параметр | Значение |
|---|---|
| Get Job status URL | [JSONv2_URL]/{client_id}/json2/job/{job_id} |
| Method | GET |
| HTTP Authentication | Basic |
Пример статуса кампании:
{
"messages": [
{
"time": 1477417299000,
"phone_number": "79652222222",
"message_id": "e5ea7286-6849-52d7-9e1b-8719b736283e",
"extra_id": "AD-6640-7007",
"processed": false,
"accepted": true,
"total_sms_parts": 1,
"error_text": "SMS expired",
"error_code": 35015
},
{
"time": 1477417294667,
"phone_number": "79651111111",
"message_id": "9f60ac8f-e721-5027-b838-e6fcb95fcd7a",
"extra_id": "AD-6640-7006",
"processed": false,
"accepted": true,
"total_sms_parts": 1,
"delivered_sms_parts": 1,
"status_text": "SMS delivered",
"status": 2,
"substatus": 23,
"msghub_status": 23011
}
]
}
HTTP-статус 200 OK означает,что ваш запрос был успешно обработан сервером
Описание параметров отчета см.ниже
Как только статус обновляется в системе, отчет отправляется на Ваш URL в формате JSON. Отчет содержит окончательный статус сообщения.
Пример отчета:
{
"number": 79651111111,
"time": 1477417294667,
"status": 2,
"substatus": 23,
"msghub_status": 23011,
"message_id": "9f60ac8f-e721-5027-b838-e6fcb95fcd7a",
"extra_id": "AD-6640-7006",
"sent_via": "sms"
}
Описание параметров отчета см.ниже
Как только статус обновляется в системе, отчеты о доставке сообщений сохраняются в пакет. Пакет отправляется на Ваш URL в формате JSON(HTTP,HTTPS).Количество отчетов в пакете и периодичность их отправки настраиваются на стороне платформы
Пример отчета:
[
{
"number": "79651111111",
"time": 1477417294667,
"status": 2,
"substatus": 23,
"msghub_status": 23011,
"message_id": "9f60ac8f-e721-5027-b838-e6fcb95fcd7a",
"extra_id": "AD-6640-7006",
"sent_via": "sms"
},
{
"number": "79652222222",
"time": 1477417299000,
"status": 3,
"substatus": 35,
"msghub_status": 35015,
"message_id": "e5ea7286-6849-52d7-9e1b-8719b736283e",
"extra_id": "AD-6640-7007",
"sent_via": "sms"
},
{
"number": "79653333333",
"time": 1477417299050,
"status": 2,
"substatus": 23,
"msghub_status": 23033,
"message_id": "8a3ff6c5-a1fb-4849-a54b-3c488753cb8b",
"extra_id": "AD-6640-7008",
"sent_via": "sms"
}
]
Описание параметров отчета см. ниже
Отчет о доставке включает окончательный статус сообщения.
| Параметр | Значение |
|---|---|
| Get Detailed DR URLs | [JSONv2_URL]/{client_id}/dr/{message_id}/advanced или [JSONv2_URL]/{client_id}/dr/external/{extra_id}/advanced |
| Get Simple DR URLs | [JSONv2_URL]/{client_id}/dr/{message_id}/simple или [JSONv2_URL]/{client_id}/dr/external/{extra_id}/simple |
| Method | GET |
| HTTP Authentication | Basic |
Простой отчет о доставке сообщения может быть запрошен по идентификатору сообщения (сформированный платформой параметр “message_id”)или по дополнительному идентификатору (заданный клиентским приложением параметр “extra_id”).
Чтобы получить отчет по идентификатору сообщения, используйте следующий URL:
[JSONv2_URL]/{client_id}/dr/{message_id}/simple
Чтобы получить отчет с использованием дополнительного идентификатора, используйте следующий URL:
[JSONv2_URL]/{client_id}/dr/external/{extra_id}/simple
Пример упрощенного отчета о доставке:
{
"phone_number": "79651111111",
"last_partner": "sms",
"message_id": "9f60ac8f-e721-5027-b838-e6fcb95fcd7a",
"extra_id": "AD-6640-7006",
"time": 1477417294667,
"status": 2,
"substatus": 23,
"msghub_status": 23011,
"total_sms_parts": 1,
"delivered_sms_parts": 1
}
HTTP-статус 200 OK означает, что ваш запрос был успешно обработан сервером.
Описание параметров отчета см. ниже
Детальный отчет о доставке сообщения может быть запрошен по идентификатору сообщения (сформированный платформой параметр “message_id”) или по дополнительному идентификатору (заданный клиентским приложением параметр “extra_id”).
Чтобы получить отчет по идентификатору сообщения, используйте следующий URL:
[JSONv2_URL]/{client_id}/dr/{message_id}/advanced
Чтобы получить отчет с использованием дополнительного идентификатора, используйте следующий URL:
[JSONv2_URL]/{client_id}/dr/external/{extra_id}/advanced
Пример детального отчета о доставке:
{
"reports": [
{
"phone_number": "79651111111",
"message_id": "9f60ac8f-e721-5027-b838-e6fcb95fcd7a",
"extra_id": "AD-6640-7006",
"time": 1477417294667,
"last_partner": "sms",
"status": 3,
"substatus": 35,
"msghub_status": 35015
},
{
"phone_number": "79651111111",
"message_id": "9f60ac8f-e721-5027-b838-e6fcb95fcd7a",
"extra_id": "AD-6640-7006",
"time": 1477417294667,
"last_partner": "sms",
"status": 2,
"substatus": 23,
"msghub_status": 23011,
"total_sms_parts": 1,
"delivered_sms_parts": 1
}
],
"started": true,
"processing": false,
"delivered_via": "sms",
"channels": [
{
"channel": "sms",
"ttl": 300
}
]
}
Если сообщение не отправлено ни на один из каналов связи или еще не имеет статуса окончательной доставки, статус сообщения обозначается -1.
HTTP-статус 200 OK означает,что ваш запрос был успешно обработан сервером
Описание параметров отчета см. ниже
| Схема кодирования | Длина текста короткого SMS-сообщения в сегменте сообщения | Длина текста длинного SMS-сообщения в сегменте сообщений | Поддерживается |
|---|---|---|---|
| GSM7-bitdefault alphabet(GSM03.38)* | 160 символов | 153 символов | Да |
| UCS2(ISO/IEC-10646) 16-bit | 70 символов | 67 символов | Да |
* длина сегментов сообщения указана исходя из использования символов 7-битной таблицы алфавита GSM по умолчанию. В данном случае следует отметить, что при использовании символов расширенной таблицы 7-битного алфавита GSM по умолчанию длина сегментов сообщения уменьшится,так как каждый символ расширенной таблицы передается в виде двух октетов и считается как два символа
Расширенная таблица 7-битных символов алфавита GSM по умолчанию:
| Hex | Dec | Название символа | Символ |
|---|---|---|---|
| 0x1B0A | 27 10 | FORM FEED (PAGE BREAK) | |
| 0x1B14 | 27 20 | CIRCUMFLEX ACCENT | ^ |
| 0x1B28 | 27 40 | LEFT CURLY BRACKET | { |
| 0x1B29 | 27 41 | RIGHT CURLY BRACKET | } |
| 0x1B2F | 27 47 | REVERSE SOLIDUS (BACKSLASH) | \ |
| 0x1B3C | 27 60 | LEFT SQUARE BRACKET | [ |
| 0x1B3D | 27 61 | TILDE | ~ |
| 0x1B3E | 27 62 | RIGHT SQUARE BRACKET | ] |
| 0x1B40 | 27 64 | VERTICAL BAR | | |
| 0x1B65 | 27 101 | EURO SIGN | € |
| 0x1B1B | 27 27 | RESERVED |
Описание параметров запроса:
| Название | Обязательно | Описание |
|---|---|---|
| Основные | ||
| phone_number | Да | Номер телефона пользователя. Приводится в международном формате без знака “+” |
| channels | Да | Список каналов доставки сообщений. |
| channel_options | Да | Должны быть указаны для каждого канала связи |
| messages | Да | Список номеров телефонов получателей и тексты сообщений, которые будут использоваться для всех каналов коммуникации. Для запроса batch-рассылки |
| recipients | Да | Список параметров для персонализированной кампании. Для запроса broadcast-рассылки |
| extra_id | Нет | Внешний идентификатор сообщения (заданный клиентским приложением). Максимальная длина: 64 символа |
| callback_url | Нет | Отчеты о сообщениях будут отправляться на этот URL. Максимальная длина: 256 символов |
| start_time | Нет | Планируемая дата начала кампании. Должна быть указана в следующем формате: “YYYY-MM-DD hh:mm:ss±hh:mm”. Если разница со временем по Гринвичу (в формате +03:00) не указана, то рассчитывается разница по времени местного провайдера |
| tag | Нет | Название кампании. Максимальная длина: 64 символа |
| is_promotional | Нет | Булево значение (true/false). Признак рекламного сообщения. Значение true, сообщение рекламное. Значение false, сообщение не рекламное. |
| ctr | Нет | Булево значение (true/false). Если флаг включен, то происходит подмена сcылок для подсчета количества переходов по ссылкам в сообщении. Значение true, ссылки заменяются. Значение false,ссылки не заменяются. |
| Параметры канала | ||
|---|---|---|
| SMS | ||
| Название | Обязательно | Описание |
| text | Да | Текст SMS-сообщения. Требования к тексту – символы кириллицы (до 1005 символов), латинские символы (до 2295 символов) |
| ttl | Да | Время жизни сообщения в секундах: SMS: 300..259200 |
| alpha_name | Да | Алфавитно-цифровое имя. Максимальная длина - 11 символов, может начинаться с цифры. Алфавитно-цифровое наименование может состоять только из 7-битных символов алфавитной таблицы GSM по умолчанию |
Описание параметров ответа:
| Название | Описание |
|---|---|
| message_id | Идентификатор сообщения. Задается в формате UUID |
| phone_number | Номер телефона пользователя. Указывается в международном формате без знака “+” |
| extra_id | Внешний идентификатор сообщения (заданный клиентским приложением параметр) |
| job_id | Идентификатор кампании. Устанавливается в формате UUID |
| error_code | Код ошибки. Значения настраиваются в веб-интерфейсе платформы в разделе «Администрирование» → «Настройки модулей» → «Коды ошибок» на вкладке “Входящие” (столбец full_status) |
| error_text | Краткое описание кода ошибки |
| processed | Булево значение (true/false). Значение true, только если сообщение обрабатывается. Значение false, если обработка сообщения не началась |
| accepted | Булево значение (true/false). Значение true, только если сообщение принято платформой. Значение false, если сообщение отклонено платформой |
Описание параметров отчета о доставке сообщения:
| Название | Описание |
|---|---|
| phone_number | Номер телефона пользователя. Указывается в международном формате без знака “+” |
| message_id | Идентификатор сообщения |
| extra_id | Внешний идентификатор сообщения (заданный клиентским приложением параметр) |
| status | Упрощенный статус сообщения. Список статусов см. ниже. |
| substatus | Статус расширенного сообщения. Список статусов см. ниже. |
| msghub_status | Подробный статус сообщения. Значения настраиваются в веб-интерфейсе платформы в разделе «Администрирование» → «Настройки модулей» → «Коды ошибок» на вкладке “Входящие” (столбец full_status). |
| sent_via | Последний канал доставки сообщения. Если сообщение заблокировано платформой, значение поля- “msghub” |
| total_sms_parts | Общее количество частей SMS-сообщения |
| delivered_sms_parts | Количество доставленных частей SMS-сообщения. Если в SMS-канал не было отправлено ни одного сообщения, этот параметр отсутствует |
| status_text | Краткое описание статуса сообщения |
| error_text | Краткое описание ошибки |
| error_code | Код ошибки. Значения настраиваются в веб-интерфейсе платформы в разделе «Администрирование» → «Настройки модулей» → «Коды ошибок» на вкладке “Входящие” (столбец full_status). |
| processed | Булево значение (true/false). Значение true, если сообщение обрабатывается. Значение false, если обработка сообщения не началась |
| accepted | Булево значение (true/false). Значение true, только если сообщение принято платформой. Значение false, если сообщение отклонено платформой |
| last_partner | Последний канал доставки сообщения. Если сообщение заблокировано платформой, значение поля- “msghub”. Для подробного (расширенного) отчета этот параметр задается для каждого канала коммуникации |
| delivered_via | Последний канал доставки сообщения. Если сообщение принято, но не получило окончательного статуса или заблокировано платформой значение поля “msghub” |
| started | Булево значение (true/false). Значение false, если обработка сообщения не началась или началась с задержкой |
| processing | Булево значение (true/false). Значение true, если сообщение обрабатывается. Значение false, если обработка сообщения не началась или уже завершилась |
| channel | Канал отправки сообщения |
| ttl | Время жизни сообщения в секундах для каждого из каналов |
В данном разделе приводится базовый перечень статусов, который может изменяться владельцем системы.
Упрощенное значение “status”- статус:
Расширенное значение “substatus”- подстатусы:
| Код | Статус |
|---|---|
| 1 | Message is being delivered- Сообщение доставляется |
| 2 | Message delivered- Сообщение доставлено |
| 3 | Message processing or delivering error- Ошибка обработки или доставки сообщения |
| Код | Статус |
| 10 | Message is not accepted for processing- Сообщение не принято к обработке |
| 12 | Message is accepted for processing- Сообщение принято к обработке |
| 23 | Message delivered- Сообщение доставлено |
| 24 | Message has not been delivered within TTL- Сообщение не доставлено внутри TTL |
| 28 | Message has not been delivered within TTL- Сообщение не доставлено внутри TTL |
| 35 | Message has not been delivered within TTL- Сообщение не доставлено внутри TTL |
| 36 | Message delivery error- Ошибка доставки сообщения |