Как выбрать SMPP-шлюз в 2026 году: SMPP или HTTP API

Как выбрать SMPP-шлюз в 2026 году: SMPP или HTTP API

Для малого бизнеса Беларуси выбор между «голым» SMPP и HTTP API зависит от объёма отправки, требований к контролю доставки и готовности заниматься технической интеграцией. HTTP API проще запустить, когда SMS отправляются из сайта или CRM небольшими партиями. SMPP оправдан, когда нужен постоянный поток сообщений, несколько соединений, управление скоростью и подробный контроль статусов. Ниже разберём различия, критерии выбора и порядок подключения, чтобы оценить задачу до разговора с провайдером.

Чем SMPP отличается от HTTP API?

HTTP API обычно работает как веб-запрос: приложение передаёт текст, номер и дополнительные параметры, а сервис возвращает ответ о принятии запроса. Такой способ понятен разработчику, который уже работает с REST, JSON и веб-сервисами. Для разовой отправки уведомления после заказа достаточно вызвать один метод API и обработать ответ.

SMPP устанавливает постоянное соединение между приложением и SMS-шлюзом. Программа подключается с учётными данными, отправляет команды протокола и получает ответы по тому же соединению. Для этого нужно учитывать bind, sequence number, скорость передачи, повторные подключения, тайм-ауты и входящие delivery receipts, или DLR.

Разница заметна в контроле. HTTP API скрывает часть работы внутри сервиса, а SMPP даёт разработчику больше параметров: количество соединений, режим отправки, обработку ответов и маршрутизацию трафика. Цена такой свободы — отдельная настройка приложения и постоянный мониторинг соединения.

КритерийHTTP APISMPP
Старт интеграцииОбычно проще для небольшого проектаТребует понимания протокола и состояний соединения
Тип соединенияОтдельные HTTP-запросыПостоянная сессия с SMS-шлюзом
Контроль нагрузкиЧасто задаётся параметрами API или ограничениями сервисаНастраивается через окна сообщений, соединения и лимиты
Статусы доставкиЗависят от формата API и реализации провайдераПередаются через DLR при поддержке со стороны шлюза
Массовая отправкаПодходит при корректной очереди запросовУдобна для постоянного высокообъёмного трафика
ПоддержкаМеньше протокольных деталей на стороне бизнесаНужно обслуживать соединение и разбирать ответы SMPP

Таблица показывает принцип, а не универсальное правило. Один и тот же бизнес может оставить HTTP API для редких административных уведомлений, а поток заказов перевести на SMPP. При выборе смотрите на архитектуру приложения, а не только на название протокола.

Когда малому бизнесу достаточно HTTP API?

HTTP API разумно выбрать, если SMS уходят из одного приложения и отправка начинается после конкретного события: оформления заказа, изменения статуса или запроса кода. В этом сценарии важны короткая интеграция и понятная обработка ошибок. Приложение формирует запрос, записывает идентификатор сообщения и передаёт его в очередь.

Такой вариант подходит и для небольшого интернет-магазина, если количество сообщений меняется в течение дня и нет задачи управлять несколькими SMPP-сессиями. Но даже при API не стоит отправлять SMS прямо из пользовательского HTTP-запроса. Если внешний сервис временно не отвечает, страница заказа зависнет или клиент увидит ошибку, хотя сам заказ уже создан.

Надёжнее разделить процесс на этапы: бизнес-система создаёт событие, очередь сохраняет задание, отдельный обработчик отправляет SMS, а журнал фиксирует ответ шлюза. Для каждой попытки сохраняйте время, номер сообщения, код ответа и причину повторной отправки. Это пригодится при разборе пропущенного уведомления.

Если проект уже работает через HTTP API, переход на SMPP не обязательно делать одномоментно. Практический план миграции с сохранением очереди и контроля отправки разобран в материале о миграции с HTTP API на SMPP без потери SMS.

Когда SMPP оправдан для бизнеса в Беларуси?

SMPP выбирают, когда SMS становятся постоянной частью внутренней системы: сайт создаёт поток уведомлений, CRM запускает сообщения по событиям, а несколько сервисов используют один шлюз. Постоянная сессия уменьшает число служебных HTTP-запросов и позволяет приложению работать с очередью сообщений напрямую через протокол.

До подключения нужно определить предполагаемый поток и ограничения. Под «объёмом» стоит понимать не только количество SMS за месяц, но и пиковую скорость: сколько сообщений приложение отправляет за секунду или минуту. Если утром одновременно формируются заказы, рассылка и напоминания, именно пик создаёт нагрузку на соединение.

У SMPP есть параметр window size, который ограничивает число неподтверждённых операций. При слишком большом окне приложение начнёт получать ошибки перегрузки или будет сложнее сопоставлять ответы с исходными сообщениями. При слишком маленьком окне канал будет простаивать. Значение подбирают тестом, учитывая лимит провайдера и скорость обработки ответов.

Для постоянного соединения нужен контроль состояния канала. Команда Enquire Link помогает проверить, что соединение доступно, а таймеры позволяют вовремя закрыть зависшую сессию и подключиться заново. Настройку этого механизма можно сверить с отдельным руководством об Enquire Link на SMPP-шлюзе.

Какие параметры проверить у SMPP-шлюза?

До разработки запросите техническое описание подключения. В нём должны быть указаны версия SMPP, адрес и порт, тип bind, логин, пароль, разрешённый source address, лимиты скорости и правила работы с DLR. Если провайдер сообщает только адрес и пароль, этого недостаточно для предсказуемой интеграции.

Отдельно уточните кодировку. В SMPP не используется UTF-8 как универсальная кодировка текста. Для кириллицы применяют DCS 0x08, для латинского текста часто используют DCS 0x03 в соответствии со спецификациями SMPP и 3GPP TS 23.038 (документация МТС для бизнеса). Неправильный DCS приводит к кракозябрам, ошибочной длине сообщения или неожиданному разбиению текста.

Протестируйте минимум четыре варианта: короткое сообщение на латинице, кириллический текст, сообщение на границе допустимой длины и длинный текст с несколькими сегментами. Проверяйте не только отображение на телефоне, но и значение esm_class, data_coding, registered_delivery и идентификатор сообщения в ответе submit_sm_resp.

DLR нужен для понимания дальнейшего состояния SMS. Ответ шлюза о принятии submit_sm означает, что сообщение принято на обработку, но не подтверждает доставку абоненту. Для анализа проверьте формат delivery receipt, соответствие message_id и итоговый статус. Мониторинг через DLR описан в материале о контроле сбоев доставки SMPP.

Как сравнить варианты до подключения?

Составьте короткую техническую таблицу по своему проекту. Запишите источник сообщений, пиковую скорость, нужный sender ID, языки текста, количество систем-отправителей, требования к DLR и допустимую задержку повторной попытки. Такой список помогает отличить реальную потребность в SMPP от желания выбрать более сложный протокол «на будущее».

Если SMS отправляет один сайт и очередь небольшая, начните с HTTP API, но сохраните в программе отдельный слой отправки. Тогда транспорт можно заменить без переписывания логики заказов. Если сообщений много, источников несколько, а статусы должны поступать в собственную систему, проектируйте SMPP-соединение сразу.

Уточните, как провайдер обрабатывает временные ошибки, повторные bind-запросы, дубликаты и недоступность маршрута. Попросите тестовые параметры и проверьте их в отдельном окружении. Рабочие логины лучше не использовать для первых экспериментов: ошибка в цикле отправки создаёт поток сообщений, который сложно остановить вручную.

Типичные ошибки при выборе и настройке

  • Сравнивать SMPP и HTTP API только по числу методов, не учитывая очередь, пиковую скорость и DLR.
  • Передавать кириллицу с неверным data_coding и проверять результат только на одном коротком сообщении.
  • Считать ответ submit_sm_resp подтверждением доставки абоненту.
  • Запускать постоянное SMPP-соединение без Enquire Link, тайм-аутов и повторного подключения.
  • Не сохранять message_id, из-за чего невозможно связать DLR с исходной SMS.
  • Отправлять длинный текст без теста сегментации и последующего объединения частей на телефоне.

3 шага, которые можно сделать на этой неделе:

  1. Опишите поток SMS: какие события создают сообщения, сколько их бывает в обычный и пиковый период, какие статусы нужны бизнесу.
  2. Проверьте у провайдера версию SMPP, DCS для кириллицы и латиницы, лимит скорости, формат DLR и правила восстановления соединения.
  3. Проведите тест в отдельном окружении: отправьте короткие и длинные сообщения, отключите соединение, восстановите его и сверьте каждый DLR с исходным message_id.