Протокол обмена определяется спецификацией SMPP версии 3.4.
Версия 1.0 предназначена только для отправки сообщений и получения статуса доставки. Прием сообщений в данный момент не поддерживается.
Расшифровку ошибок можно найти в спецификации SMPP версии 3.4.
Внимание: Вам необходимо прислать список IP адресов, с которых Вы будете подключаться, перед тем как начать использовать SMPP протокол.
| Команда | Описание |
|---|---|
| BIND_TRANSMITTER | Подключиться как TRANSMITTER |
| BIND_TRANSCEIVER | Подключиться как TRANSCEIVER |
| SUBMIT_SM | Отправить сообщение |
| QUERY_SM | Запросить статус сообщения |
| DELIVER_SM | Отправка Delivery Receipt сервером |
| ENQUIRE_LINK | Проверка связи |
| GENERIC_NAK | Ошибочная команда |
| UNBIND | Отключение |
На не поддерживаемые команды сервер будет отвечать GENERIC_NAK сообщением с кодом ошибки ESME_RINVCMDID.
| Параметр | Значения |
|---|---|
| source_addr_ton | 0x01 (для номеров) или 0x00 (для остального) |
| source_addr_npi | 0x01 (для номеров) или 0x05 (для остального) |
| dest_addr_ton | 0x01 |
| dest_addr_npi | 0x01 |
| esm_class | 0x00 или 0x40 при использовании UDH |
| registered_delivery | 0x00 или 0x01 |
| data_coding | 0x01 - ASCII или 0x08 - UCS2 |
При установке подключения клиенту дается 10 секунд, что бы отправить команду BIND_TRANSMITTER или BIND_TRANSCEIVER. Иначе соединение будет разорвано сервером.
Клиент обязан отвечать на все пакеты отправленные сервером соответствующим resp пакетом в течение 1 минуты. Иначе соединение будет разорвано сервером без отсылки UNBIND.
После установки подключения и авторизации сервер будет отправлять ENQUIRE_LINK пакеты каждую минуту. На этот пакет клиент также обязан ответить в течение 1 минуты.
Есть две возможности получения статуса доставки (активный и пассивный). Пассивный вариант является предпочтительным.
Пассивный вариант предусматривает установки флага registered_delivery пакета SUBMIT_SM. После перехода сообщения в финальное состояние сервер отправит DELIVER_SM пакет с Delivery Receipt сообщением. Формат Delivery Receipt сообщения ниже.
Активный вариант предусматривает периодический опрос статуса сообщения отсылкой QUERY_SM.
"id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:DDDDDDD err:E Text: . . . . . . . . ."
| Поле | Описание |
|---|---|
| id ID | сообщения |
| sub | Количество отправленных сообщений |
| dlvrd | Количество доставленных сообщений |
| submit date | Время отправки сообщения |
| done date | Время перехода сообщение в финальное состояние |
| stat | Статус сообщения (расшифровка статусов см. ниже) |
| err | Может содержать код ошибки в случае не доставки сообщения |
| text | Первые 20 байт сообщения |
| Статус | Описание |
|---|---|
| delivrd | Доставлено |
| expired | Не доставлено из-за истечения периода ожидания доставки |
| deleted | Удалено |
| undeliv | Не может быть доставлено |
| acceptd | Принято на обработку |
| unknown | Статус не известен (поле err может содержать код ошибки) |
| rejectd | Сообщение отвергнуто |
| Код | Описание |
|---|---|
| 0x0400 (1024) | Кодировка не распознана |
| 0x0401 (1025) | Слишком большой текст сообщения. Максимальная длина не должна превышать 160 байт. |
| 0x0402 (1026) | Ошибка регистрации сообщения на отправку. При возникновении этой ошибки обратитесь в службу поддержки. |
| 0x0403 (1027) | Не прошла проверка текста сообщения на наличие недопустимых слов и/или фраз |
| 0x0404 (1028) | Отправитель или получатель в черном списке |
| 0x0453 (1107) | Сработало ограничение по отправке одинакового текста на один и тот же номер в течение небольшого промежутка времени. Обратитесь в поддержку, если хотите отключить или уменьшить период. |
| 0x043C (1084) | Нет доступного тарифа для запрашиваемого направления. |
| 0x043F (1087) | Нет подходящего тарифа у вышестоящего контрагента. |
| 0x045A (1114) | Политика маршрутизации не найдена. |
| 0x0446 (1094) | Ошибка транспорта. При возникновении этой ошибки обратитесь в службу поддержки. |
| 0x433 (1075) | Недостаточно средств на счете. |
Спецификация SMPP версии 3.4 - smpp34.pdf