SMPP: как работает протокол передачи SMS
Как работает SMPP
Типичная цепочка выглядит так:
Маркетинговая платформа или приложение → SMS-шлюз либо SMSC → мобильная сеть → телефон получателяПриложение устанавливает TCP-соединение с SMSC или шлюзом и авторизуется. Сессию открывают в одном из режимов:
- transmitter — только отправка сообщений;
- receiver — только получение входящих сообщений и уведомлений;
- transceiver — отправка и получение через одно соединение.
После установления сессии стороны обмениваются блоками данных PDU (Protocol Data Unit). В них передаются команды, параметры сообщений и ответы.
| Команда | Для чего используют |
|---|---|
submit_sm | Передать SMS из приложения в SMSC или шлюз |
submit_sm_resp | Подтвердить приём запроса и вернуть идентификатор сообщения |
deliver_sm | Передать приложению входящее SMS или отчёт о доставке |
enquire_link | Проверить активность соединения |
unbind | Корректно завершить сессию |
SMPP поддерживает асинхронный обмен: приложение отправляет несколько запросов, не дожидаясь ответа на предыдущий. Допустимое количество неподтверждённых запросов и скорость отправки зависят от настроек соединения и условий провайдера.
submit_sm означает, что шлюз или SMSC принял сообщение в обработку. Он не подтверждает доставку на телефон. Итоговый статус передаётся позже в отчёте о доставке, если провайдер поддерживает эту функцию.
Как приложение обменивается сообщениями с SMSC по SMPP
Для чего используют SMPP
Протокол применяют для постоянного или интенсивного обмена сообщениями:
- транзакционных и сервисных сообщений — например, уведомлений о заказе и кодов подтверждения;
получения ответных SMS от абонентов.
SMPP не определяет содержание сообщений и не разделяет рассылки на рекламные и транзакционные. Допустимые типы трафика, имя отправителя, ограничения скорости и другие условия устанавливает оператор или SMS-провайдер.
SMPP и HTTP API: в чём разница
Оба способа используют для передачи сообщений из приложения в SMS-сервис, но обмен организован по-разному.
| Критерий | SMPP | HTTP API |
|---|---|---|
| Соединение | Длительная TCP-сессия | Отдельные HTTP-запросы к API сервиса |
| Обмен | Двусторонний асинхронный обмен внутри сессии | Запросы на отправку и получение статусов; входящие события обычно передаются через вебхуки |
| Стандартизация | Общий отраслевой протокол, но параметры и ограничения зависят от провайдера | Собственный API каждого SMS-сервиса |
| Настройка | Требует управления сессиями, повторными подключениями и командами протокола | Обычно проще интегрируется с веб-приложениями |
| Пропускная способность | Рассчитан на постоянный поток сообщений | Зависит от API и установленных провайдером лимитов |
Фактическая пропускная способность зависит от ограничений провайдера, числа соединений, допустимого количества одновременных запросов и настроек интеграции.
Статусы и ошибки
0 означает, что команда выполнена. Другие коды указывают причину отказа: ошибку авторизации, неверный номер, недопустимое имя отправителя, превышение лимита, временную недоступность шлюза или другую проблему.Техническая команда следит за отказами, состоянием сессии и временем ответа, чтобы обнаруживать ошибки подключения и ограничения провайдера. Отдельно сопоставляют сообщения, принятые шлюзом в обработку, с итоговыми статусами доставки.
Принятый запрос ещё не означает, что SMS доставлено получателю: после него сообщение проходит маршрутизацию через мобильную сеть.
Защита SMPP-соединения
SMPP версии 3.4 работает поверх TCP и сам не шифрует трафик. Способ защиты определяет провайдер: это может быть закрытая сеть, VPN, защищённый туннель или ограничение подключений по IP-адресам.
Адрес сервера, порт, логин, пароль, разрешённые IP-адреса и другие условия согласуют при подключении к шлюзу. Учётные данные нельзя передавать через открытые каналы или хранить непосредственно в коде приложения.
SMS-шлюзы в Altcraft
Конкретный способ обмена между шлюзом и оператором, включая использование SMPP, зависит от выбранного провайдера и схемы подключения.
Подключение SMS-шлюза в Altcraft
Заключение
SMPP организует двусторонний обмен SMS между приложением и центром сообщений или шлюзом. Протокол передаёт исходящие и входящие SMS, ответы на запросы и отчёты о доставке. Скорость обмена и доступные статусы зависят от условий провайдера.


