7 (495) 374-80-34
  • Межгород 8 (800) 500-80-16
  • Санкт-Петербург 7 (812) 426-13-66
  • Москва 7 (495) 374-80-34
  • Новосибирск 7 (383) 207-54-38
  • Екатеринбург 7 (343) 351-75-20
  • Челябинск 7 (351) 799-57-70
  • Воронеж 7 (473) 300-30-34
  • Нижний Новгород 7 (831) 280-98-15
  • Казань 7 (843) 212-20-24
  • Самара 7 (846) 212-98-95
  • Краснодар 7 (861) 201-83-82
  • Ростов-на-Дону 7 (863) 322-03-92

Протокол SMPP

SMPP (Short message peer-to-peer protocol) - протокол, описывающий взаимодействие конечного клиента с SMS-сервером (SMSC).

SMS-центр (SMSC) - отвечает за работу службы коротких сообщений сети мобильной связи. Его задачами являются хранение, передача, конвертация и доставка SMS сообщений.

SMPP v3.4 - для подключения к нашему серверу используется SMPP протокол наиболее актуальной на сегодняшний день версии 3.4 (приложение)

Параметры подключения

Основные параметры:

smsc-username = "login" - зарегистрированное в системе ID пользователя вида ХХХХХ или XXXXX.X
smsc-password = "password" - пароль пользователя
host = smpp.smsgold.ru или 188.93.18.70 - адрес smpp сервера
port = 2604 - порт подключения

Дополнительные параметры:

interface-version = 34
source-addr-autodetect = yes
source-addr-ton = 5
source-addr-npi = 1
dest-addr-ton = 1
dest-addr-npi = 1
Внимание:

Вам необходимо предоставить нам список IP адресов, с которых Вы будете подключаться, перед тем как начать использовать SMPP протокол.

Поддерживаемые команды

Команда Описание
BIND_RECEIVER Подключиться как RECEIVER (клиент может только получать сообщения от SMSC)
BIND_TRANSMITTER Подключиться как TRANSMITTER (клиент может только отправлять сообещения на SMSC)
BIND_TRANSCEIVER Подключиться как TRANSCEIVER (клиент осуществляет двухстороннюю передачу сообщений
SUBMIT_SM Отправить сообщение
QUERY_SM Запросить статус сообщения
DELIVER_SM Отправка Delivery Receipt сервером
ENQUIRE_LINK Проверка связи
GENERIC_NAK Ошибочная команда
UNBIND Отключение

*На не поддерживаемые команды сервер будет отвечать GENERIC_NAK сообщением с кодом ошибки ESME_RINVCMDID.

Поддерживаемые команды

Параметр Описание Значения
source_addr_ton Type of Number (TON) Тип номера отправителя 0x00 - Неизвестный (Unknown) 0x01 - Международный (International) 0x02 - Государственный (National) 0x03 - Сетевой Специальный (Network Specific) 0x04 - Номер Абонента (Subscriber Number) 0x05 - Алфавитно-цифровой (Alphanumeric) 0x06 - Сокращенный (Abbreviated)
source_addr_npi Numbering Plan Indicator (NPI) Идентификатор плана нумерации отправителя 0x00 - Unknown 0x01 - ISDN (E163/E164) 0x02 - Data (X.121) 0x03 - Telex (F.69) 0x04 - Land Mobile (E.212) 0x05 - National 0x06 - Private 0x07 - ERMES 0x08 - Internet (IP) 0x09 - WAP Client Id (его должен определять WAP Forum)
dest_addr_ton Type of Number (TON) Тип номера получателя 0x01 - Международный (International)
dest_addr_npi Numbering Plan Indicator (NPI) Идентификатор плана нумерации получателя 0x01 - ISDN (E163/E164) (для номеров) 0x02 - National (для остального)
esm_class Указывает Message Mode & Message Type Используется для определения специальных аттрибутов короткого сообщения 0x00 - Тип сообщения по умолчанию 0x40 - UDHI индикатор установлен User Data Header Indicator - Указатель Заголовка Пользовательских Данных
registered_delivery Параметр запроса статуса 0x00 - флаг запроса статуса отключен 0x01 - флаг запроса статуса включен
data_coding Определяет схему кодировки пользовательских данных короткого сообщения. 0x01 - IA5(CCITT T.50)/ASCII (ANSI X3.4) латинский алфавит 7 бит на 1 символ максимальная длина одного сообщения 160 символов 0x07 - Latin/Hebrew(ISO-8859-8) латинский алфавит 8 бит на 1 символ максимальная длина сообщения 140 символов 0x08 - UCS2(ISO/IEC-10646) для национальных алфавитов (например, русского) максимальная длина сообщения 70 символов

Правила работы с SMPP подключением

При установке подключения клиенту дается 10 секунд, чтобы отправить команду BIND_TRANSMITTER или BIND_TRANSCEIVER. Иначе соединение будет разорвано сервером.

Клиент обязан отвечать на все пакеты отправленные сервером соответствующим resp пакетом в течение 1 минуты. Иначе соединение будет разорвано сервером без отсылки UNBIND.

После установки подключения и авторизации сервер будет отправлять ENQUIRE_LINK пакеты каждую минуту. На этот пакет клиент также обязан ответить в течение 1 минуты.

Для завершения SMPP сессии используется команда UNBIND.

Если при отправке в пакете Submit_sm установлен флаг registered_delivery, то статус сообщения будет возвращен только в подключение, установленное от имени пользователя, отправившего сообщения.

Одновременно возможно только одно подключение от одного имени пользователя. На все дополнительные подключения будет отправлена ошибка (0x00000005 ESME Already in Bound State). Если необходимо сделать несколько подключений для одного кабинета, для каждого необходимо создать отдельного пользователя и использовать его подключение.

Получение статуса доставки сообщения

Есть две возможности получения статуса доставки (активный и пассивный). Пассивный вариант является предпочтительным.

Пассивный вариант предусматривает установку флага registered_delivery пакета SUBMIT_SM. После перехода сообщения в финальное состояние сервер отправит DELIVER_SM пакет с Delivery Receipt сообщением. Формат Delivery Receipt сообщения ниже.

Активный вариант предусматривает периодический опрос статуса сообщения отсылкой QUERY_SM.

Формат Delivery Receipt

"id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:DDDDDDD err:E Text: . . . . . . . . ."

Расшифровка формата ответа Delivery Receipt:

Поле Описание
id ID сообщения
sub Количество отправленных сообщений
dlvrd Количество доставленных сообщений
submit date Время отправки сообщения
done date Время перехода сообщение в финальное состояние
stat Статус сообщения (расшифровка статусов см. ниже)
err Может содержать код ошибки в случае не доставки сообщения
text Первые 20 байт сообщения

Расшифровка сатусов поля stat:

Статус Описание
delivrd Доставлено
expired Не доставлено из-за превышения периода ожидания доставки
deleted Удалено
undeliv Не может быть доставлено
acceptd Принято на обработку
unknown Статус не известен (поле err может содержать код ошибки)
rejectd Сообщение отвергнуто

Зарезервированные коды ошибок

Код HEX Код DEC Описание
0x0400 1024 Кодировка не распознана.
0x0401 1025 Слишком большой текст сообщения. Максимальная длина не должна превышать 160 байт.
0x0402 1026 Ошибка регистрации сообщения на отправку. При возникновении этой ошибки обратитесь в службу поддержки.
0x0403 1027 Не прошла проверка текста сообщения на наличие недопустимых слов и/или фраз.
0x0404 1028 Отправитель или получатель в черном списке.
0x0453 1107 Сработало ограничение по отправке одинакового текста на один и тот же номер в течение небольшого промежутка времени. Обратитесь в поддержку, если хотите отключить или уменьшить период.
0x043C 1084 Нет доступного тарифа для запрашиваемого направления.
0x043F 1087 Нет подходящего тарифа у вышестоящего контрагента.
0x045A 1114 Политика маршрутизации не найдена.
0x0446 1094 Ошибка транспорта. При возникновении этой ошибки обратитесь в службу поддержки.
0x0433 1075 Недостаточно средств на счете.

*Расшифровку ошибок протокола можно найти в спецификации SMPP версии 3.4.

Приложение

Спецификация SMPP протокола версии 3.4 - smpp34_rus.pdf (RUS) (русский язык)

Спецификация SMPP протокола версии 3.4 - smpp34_eng.pdf (ENG) (английский язык)