В данном документе содержатся сведения о протоколе 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- Ошибка доставки сообщения |