Интеграция с сервисом (API)

API позволяет рассылать сообщения через ваши проекты и сервисы по протоколам HTTP/HTTPS, SMTP и SMPP. Готовые библиотеки на разных языках программирования подключаются к вашему проекту и помогают отправлять сообщения из любого места с помощью одной команды. Для упрощенной авторизации вместо пары логин и пароль можно использовать специальный API-ключ.


HTTP/HTTPS SMTP SMPP SOAP OMS SMS-команды Библиотеки и примеры кода

SMTP протокол (E-mail)

Отправка сообщения

Для отправки SMS необходимо послать e-mail на адрес sendsend.m.smsc.ru с текстом в формате: <login>:<psw>:<id>:<time>,<tz>:<translit>,<format>,<sender>,<test>:<phones>:<mes> либо: <login>:<psw>:<id>:<time>,<tz>:<translit>,<format>,<sender>,<test>::<list>
Возможно использование нашего SMTP-сервера напрямую. Адрес: send.m.smsc.ru. Авторизация не требуется.

Письмо должно передаваться простым текстом с указанием кодировки, по умолчанию koi8-r. Кодировка задается в заголовке Content-Type (Content-Type: text/plain; charset="CHARSET"). Максимальный размер письма составляет 100 Кб.

В случае отсутствия возможности передачи текста письма с "Content-Type: text/plain" необходимо заключить текст в специальные теги "[text]текст письма[/text]".

Описание параметров, передаваемых Серверу :

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента (можно добавить или изменить на данной странице). При передаче в запросе пустого значения поля login данный параметр интерпретируется, как API ключ авторизации (apikey).
phonesНомер или разделенный запятой или точкой с запятой список номеров мобильных телефонов в международном формате, на которые отправляется сообщение. Номера могут передаваться без знака "+". Если номер передан без знака "+", то он может быть исправлен автоматическим форматированием и приведен к правильному международному формату. Таким образом, некоторые ошибки при вводе номеров телефонов могут быть исправлены автоматически. Для отключения автоисправления передайте номер со знаком "+".
Также можно отправлять сообщение на группу номеров, указав специальный код "G<номер группы>". Сообщение будет отправлено на все номера, принадлежащие данной группе. Для e-mail сообщения передается список e-mail адресов получателей. Для telegram в качестве получателя сообщения возможно указание ника абонента или его ID в виде #ID.
mesТекст отправляемого сообщения. Максимальный размер – 1000 символов. Сообщение при необходимости будет разбито на несколько SMS, отправленных абоненту и оплаченных по отдельности. Размер одного SMS – 160 символов в латинице или 70 символов в кириллице. При разбивке сообщения на несколько SMS в каждую часть добавляется заголовок для объединения частей в одно сообщение на телефоне получателя, и максимальная длина становится 67 для кириллицы и 153 для латинских букв. В текст сообщения можно добавлять комментарии, предназначенные для просмотра отправителем истории в личном кабинете.
Дополнительные параметры
idИдентификатор сообщения. Назначается Клиентом. Служит для дальнейшей идентификации сообщения. Если не указывать, то будет назначен автоматически. Не обязательно уникален. Идентификатор представляет собой 32-битное число в диапазоне от 1 до 2147483647, либо строку длиной до 40 символов, состоящую из латинских букв, цифр и символов ".-_".
senderИмя отправителя, отображаемое в телефоне получателя. Разрешены английские буквы, цифры, пробел и некоторые символы. Длина – 11 символов или 15 цифр. Все имена регистрируются в личном кабинете на данной странице.
translitПризнак того, что сообщение необходимо перевести в транслит.
0 (по умолчанию) – не переводить в транслит.
1 – перевести в транслит в виде "translit".
2 – перевести в транслит в виде "mpaHc/Ium".
timeВремя отправки SMS-сообщения абоненту.
Форматы:
  1. DDMMYYhhmm или DD.MM.YY hh.mm.
  2. h1-h2. Задает диапазон времени в часах. Если текущее время меньше h1, то SMS-сообщение будет отправлено абоненту при наступлении времени h1, если текущее время попадает в промежуток от h1 до h2, то сообщение будет отправлено немедленно, в другом случае отправка будет выполнена на следующий день при достижении времени h1. Данная функция, например, полезна для того, чтобы не допустить получение SMS-сообщений абонентами в ночное время.
  3. 0ts, где ts – timestamp, время в секундах, прошедшее с 1 января 1970 года.
  4. +m. Задает относительное смещение времени от текущего в минутах. Символ + должен кодироваться как %2B в http-запросе.
Если time = 0 или указано уже прошедшее время, то сообщение будет отправлено немедленно.
tzЧасовой пояс, в котором задается параметр time. Указывается относительно московского времени. Параметр tz может быть как положительным, так и отрицательным. Если tz равен 0, то будет использован московский часовой пояс, если же параметр tz не задан, то часовой пояс будет взят из настроек Клиента.
formatОпределяет тип SMS-сообщения.
0 (по умолчанию) – обычное текстовое сообщение.
1 – flash-sms. Сообщение, отображаемое сразу на экране телефона.
2 – wap-push. Сообщение, содержащее ссылку на сайт, первая строка задает ссылку, вторая – название.
3 – hlr-запрос. Позволяет получить информацию о номере из базы оператора без отправки SMS.
4 – бинарное сообщение в двоичном виде.
5 – бинарное сообщение, представленное в виде шестнадцатеричной строки (hex).
6 – ping-sms. Проверка номера на доступность отправкой специального невидимого SMS.
7 – mms. Сообщение, позволяющее передавать текст (txt), изображения различных форматов (jpg, gif, png), музыку (wav, amr, mp3, mid) и видео (mp4, 3gp).
8 – e-mail. Сообщение электронной почты. Тема письма указывается в конце текста сообщения через перевод строки в виде "subj:Тема". Указание темы, текста и e-mail отправителя обязательно.
9 – голосовое сообщение (звонок). Голос, используемый для озвучки, указывается в конце текста сообщения через перевод строки в виде "voice:Голос". Возможные типы голосов подробно описаны на данной странице.
10 – viber-сообщение, отправляемое пользователям мессенджера Viber.
11 – whatsapp-сообщение, отправляемое пользователям мессенджера WhatsApp.
12 – soc-сообщение, отправляемое пользователям социальных сетей "Одноклассники", "ВКонтакте" или пользователям "Mail.Ru Агент".
testУказывает на необходимость отправлять ответное письмо с результатом отправки SMS-сообщения. Если 0 или не указано, то ответ посылается только при ошибке в параметрах, если 1, то ответ отправляется в любом случае. Параметр используется для отладки при первоначальной настройке сервиса.
listСписок номеров телефонов и соответствующих им сообщений, разделенных двоеточием или точкой с запятой и представленный в виде:
phones1:mes1
phones2:mes2
...
В качестве phones можно указать несколько номеров телефонов через запятую. Если в сообщении mes требуется передать символ новой строки, то укажите его через \n. В случае невозможности корректировки текста мультистрокового сообщения возможно включение специального режима для передачи такого типа сообщений. Для этого необходимо в параметре test передать значение, равное 2.
Параметр list позволяет выполнять множественную рассылку с разными сообщениями на несколько телефонов одним запросом. Сообщениям в запросе присваивается единый идентификатор. Некоторые параметры (например, subj, voice) передаются в конце списка сообщений list через перевод строки.


Параметры должны идти строго в заданном порядке. Обязательными являются login, psw, phones и mes. Если какой-то необязательный параметр отсутствует, то двоеточие должно оставаться.

Пример (<id>, поле <time>,<tz> и поле <translit>,<format>,<sender>,<test> не указаны):

alex:123::::79999999999:сообщение

В составном поле <translit>,<format>,<sender>,<test> любой параметр может отсутствовать, сохраняя начальную запятую.

Примеры:

alex:psw:::1,1,Alex:79999999999:сообщение
alex:psw:::1:79999999999:сообщение
alex:psw:::,1:79999999999:сообщение
alex:psw:::,1,Alex:79999999999:сообщение
alex:psw:::,1,,1:79999999999:сообщение

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

Поддерживаемые префиксы:

НазваниеОписание
__CALL__: сообщениеОтправка голосового сообщения (звонка). При отправке голосового сообщения в конце текста можно указать специальную комбинацию "\n~~~\n" (перевод строки, 3 символа тильды и снова перевод строки), после которой передать параметр param, определяющий некоторые характеристики звонка (более подробно можно посмотреть в описании).
__VIBER__: сообщениеОтправка сообщения пользователям мессенджера Viber.
__SOC__: сообщение Отправка сообщения пользователям социальных сетей "Одноклассники", "ВКонтакте" или пользователям "Mail.Ru Агент".
__MAIL__: сообщение Отправка E-mail сообщения.
__BOT__: сообщение Отправка сообщения пользователям чат-бота Telegram.
__PING__Отправка специального SMS, не отображаемого в телефоне, для проверки номеров на доступность в реальном времени по статусу доставки.
__HLR__Признак HLR-запроса для получения информации о номере из базы оператора без отправки реального SMS.


Если была допущена ошибка в параметрах или произошла любая другая ошибка, и параметром test был запрошен ответ, то он будет следующим:
  • ERROR = N (описание) – для ошибок 1,2,4,5,9;

  • ERROR = N (описание), ID - <id сообщения> – для ошибок 3,6,7,8.
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль. Также возникает при попытке отправки сообщения с IP-адреса, не входящего в список разрешенных Клиентом (если такой список был настроен Клиентом ранее).
3Недостаточно средств на счету Клиента.
4IP-адрес временно заблокирован из-за частых ошибок в запросах. Подробнее
5Неверный формат даты.
6Сообщение запрещено (по тексту или по имени отправителя).
7Неверный формат номера телефона.
8Сообщение на указанный номер не может быть доставлено.
9Отправка более одного одинакового запроса на передачу SMS-сообщения в течение минуты.

В случае успешного принятия сообщения и запроса ответа параметром test возвращается строка следующего вида:
  • OK - <n> SMS, ID - <id>
Где:
<n> – это количество отправленных SMS, вычисляемое как количество SMS в сообщении, умноженное на количество получателей.
<id> – идентификатор сообщения, переданный Клиентом или назначенный Сервером автоматически.

Сервер не принимает более двух одинаковых запросов на отправку SMS-сообщений в течение минуты для защиты от ошибок и зацикливаний в программе на стороне Клиента для того, чтобы снизить нагрузку и не расходовать средства Клиента, а также не допустить многократной отправки сообщения одному абоненту.

Сервер также блокирует отправку более 50 сообщений одному абоненту, которые были отправлены с перерывом между сообщениями менее 2-х минут, для защиты от флуда и лишнего списания средств со счета Клиента, так как многие операторы не пропускают большое количество сообщений одному абоненту за короткий промежуток времени.

Отправка HLR-запроса

Для отправки HLR-запроса используйте команду обычной отправки SMS-сообщения, указывая format равным 3. Параметр <mes> с текстом сообщения не используется и может быть пустым. Результат запроса можно получить по HTTP-протоколу автоматическим вызовом обработчика или самостоятельно запросить статус отправленного SMS-сообщения специальной командой. Так как HLR-запрос выполняется асинхронно, и результат может вернуться от оператора не сразу, то при самостоятельном запросе статуса важно делать цикл из нескольких итераций с засыпанием (команда sleep).

Функция E-mail2sms

В личном кабинете Клиента в "Настройках пользователя" имеется возможность указания списка номеров телефонов, на которые будет происходить пересылка в виде SMS-сообщений текстов электронных писем, пришедших на адрес ваш_логинsend.m.smsc.ru. Данная функция может быть использована, например, для получения уведомлений на телефон о различных событиях из программ или интернет-сервисов, в которых возможно указание только адреса E-mail.