Что такое SMS-шлюз: как работает, виды и как выбрать
Что такое SMS-шлюз? Как сообщение идёт от приложения к телефону, какие бывают виды (API, SMPP, email-to-SMS, GSM-модем), ключевые функции и как выбрать шлюз.
Автор: OmniChannels.ai Editorial Team · Проверил: BroadNet Messaging Solutions Team
SMS и OTP
Короткий ответ
SMS-шлюз — это система, которая преобразует сообщения между вашими приложениями и мобильными сетями. Ваше ПО передаёт сообщение по HTTP API или SMPP, шлюз проверяет номер, выбирает кодировку и маршрут, делит длинные тексты на части и передаёт сообщение в SMSC оператора, который доставляет его на телефон. Затем обратно приходит отчёт о доставке, и вы видите результат.
На этой странице
- Что такое SMS-шлюз?
- Как текстовое сообщение проходит через SMS-шлюз?
- Какие бывают виды SMS-шлюзов?
- Почему деловые SMS не стоит отправлять через SIM-боксы?
- Какими функциями должен обладать SMS-шлюз?
- Как выбрать SMS-шлюз?
- Как подключиться к SMS-шлюзу и отправить первое сообщение?
- Какие ошибки люди делают с SMS-шлюзами?
- Пример: приложение доставки в Дубае
- Как помогает OmniChannels.ai
Главное
- SMS-шлюз находится между вашим приложением и SMSC оператора; он отвечает за маршрутизацию, кодировку, разбиение на части, контроль скорости отправки и отчёты о доставке.
- Используются четыре вида шлюзов: HTTP API, SMPP, email-to-SMS и аппаратные GSM-модемы или SIM-боксы. Деловой трафик A2P должен идти через программные шлюзы с подключением к операторам.
- SMS API — это интерфейс разработчика перед шлюзом, а SMPP-сессия (bind) — постоянное соединение для больших объёмов.
- Отправка делового трафика через SIM-карты может убрать имя отправителя, задержать сообщения, испортить арабский текст и привести к блокировке, потому что в обход коммерческого соглашения с оператором.
- Выбирайте шлюз по типу маршрута для каждой страны, качеству отчётов о доставке, работе с именем отправителя, пропускной способности, поддержке кодировок и тесту на ваших номерах до переноса объёмов.
Это руководство для разработчиков, владельцев продуктов и руководителей операций, которым нужно понять, что находится между их приложением и телефоном клиента. Вы узнаете, каким путём идёт сообщение, какие бывают шлюзы, какие функции важны и как отправить первое тестовое сообщение.
Что такое SMS-шлюз?
SMS-шлюз — это система, которая преобразует сообщения между приложениями и мобильными сетями и отвечает за маршрутизацию, кодировку, разбиение на части и отчёты о доставке. Это слой преобразования между вашим ПО и операторами, которые доставляют сообщения на телефоны.
Термин используют в двух значениях. Так называют платформу провайдера, подключённую ко многим операторам, а также ПО и оборудование, которые соединяют системы одной компании с провайдером. Краткое определение дано в статье глоссария о SMS-шлюзе.
С ним часто путают два соседних термина:
- SMSC (Short Message Service Centre): собственный элемент сети оператора, который хранит, пересылает и доставляет SMS. В 3GPP TS 23.040 он называется Service Centre. См. SMSC.
- SMS API: интерфейс разработчика перед шлюзом. См. SMS API.
Шлюз — слой маршрутизации и преобразования между ними, и один провайдер может одновременно быть шлюзом, поставщиком API и агрегатором.
Как текстовое сообщение проходит через SMS-шлюз?
Сообщение идёт от вашего приложения к шлюзу, от шлюза в SMSC оператора и от SMSC на телефон, а отчёт о доставке возвращается тем же путём. Вот путь по шагам.
- Ваше приложение передаёт сообщение. Оно вызывает HTTP-эндпоинт или отправляет SMPP-команду
submit_smс номером получателя, именем отправителя и текстом. - Шлюз проверяет и нормализует данные. Он проверяет формат номера, применяет правила страны и может выполнить поиск по номеру.
- Выбирает кодировку. Обычный латинский текст использует GSM-7: 160 символов в одной части. Арабский, кириллица и другие алфавиты требуют UCS-2: 70 символов в одной части. Как это влияет на стоимость и длину, показывает наше руководство по лимитам символов в SMS.
- Делит длинные сообщения на части, которые телефон собирает обратно.
- Выбирает маршрут для сети получателя и добавляет зарегистрированное имя отправителя там, где оно обязательно.
- Ставит в очередь с учётом пропускной способности, чтобы не превысить согласованную с оператором скорость.
- Передаёт в SMSC оператора, как правило по SMPP.
- SMSC доставляет. Он узнаёт у сети, где находится абонент, и пересылает сообщение. Если телефон выключен, SMSC хранит сообщение и повторяет попытки, пока не истечёт срок действия.
- Возвращается отчёт о доставке. Шлюз преобразует его в статус и отправляет на ваш вебхук.
Первый ответ SMSC говорит лишь о том, что сообщение принято. О том, что произошло дальше, сообщает отчёт. Сообщение с ответом «принято» и без отчёта ещё не доставлено, но и не обязательно потеряно. Статусы расшифровывает наше руководство по статусам доставки сообщений.
Какие бывают виды SMS-шлюзов?
Обычно используют четыре вида, и они различаются способом подключения и пригодностью для делового трафика.
| Вид | Как подключаться | Типичное применение | Подходит для A2P-трафика |
|---|---|---|---|
| Шлюз HTTP API | HTTPS-запросы с JSON или данными формы плюс вебхуки | Приложения, OTP, уведомления, маркетинг | Да |
| Шлюз SMPP | Постоянная TCP-сессия (bind) | Большие объёмы, реселлеры, предприятия с SMPP-клиентами | Да |
| Шлюз email-to-SMS | Письмо на специальный адрес или веб-форма | Устаревшие системы и инструменты, которые умеют только отправлять почту | Ограниченно: мало контроля над кодировкой, именем отправителя и отчётами |
| Аппаратный GSM-модем или SIM-бокс | ПО управляет SIM-картами в устройстве | Небольшие локальные тесты, разовые уведомления с вашей SIM-карты | Нет для делового A2P |
Шлюзы API
Шлюз API — обычный выбор. Ваш код делает HTTPS-вызов и получает идентификатор сообщения, а платформа отправляет статусы на вебхук. Такой шлюз не хранит состояние, и его просто отлаживать стандартными средствами. Примеры на cURL, Node.js, Python и PHP есть в наших примерах SMS API.
Шлюзы SMPP
SMPP (Short Message Peer-to-Peer) — открытый двоичный протокол поверх TCP, по которому приложения (ESME) и провайдеры обмениваются SMS с SMSC. Самая распространённая версия — 3.4; мы ссылаемся на спецификацию Issue 1.2 от 12 октября 1999 года. Сессия начинается с bind в роли передатчика, приёмника или трансивера. Клиент отправляет сообщения командой submit_sm, а входящие сообщения и отчёты о доставке получает как deliver_sm; enquire_link поддерживает сессию активной. У каждого запроса есть порядковый номер, поэтому одновременно может выполняться много запросов, и именно это делает SMPP эффективным на больших объёмах.
Выбирайте SMPP, если у вас уже есть SMPP-ПО или вы отправляете большие объёмы. Сравнение двух подходов — в нашем материале SMS API и SMPP, а типы сессий объясняет статья о SMPP bind.
Шлюзы email-to-SMS
Они позволяют системе, умеющей только отправлять почту, создать текстовое сообщение. Для устаревших инструментов это удобно, но контроля мало: кодировка, правила имени отправителя и отчёты о доставке обычно ограничены. Используйте их только как временное решение и проверяйте доставку в каждой стране.
Аппаратные GSM-модемы и SIM-боксы
Модем или SIM-бокс содержит SIM-карты и отправляет тексты как обычные телефоны. Это работает для горстки сообщений, но для делового A2P-трафика связано с реальными рисками, описанными ниже.
Почему деловые SMS не стоит отправлять через SIM-боксы?
Отправка через SIM-карты обходит коммерческое соглашение с оператором, поэтому трафик могут задержать, подменить отправителя или заблокировать. В сфере сообщений именно такой приём лежит в основе многих серых маршрутов.
Симптомы описаны в нашей статье о мошенничестве с SIM-боксами и материале о серых маршрутах:
- Деловые сообщения приходят со случайного местного мобильного номера вместо зарегистрированного имени отправителя.
- Сообщения приходят с опозданием, теряют арабскую кодировку или блокируются, когда оператор обнаруживает SIM-карты.
- Отчёты о доставке могут быть ненадёжными или сфабрикованными шлюзом.
- Не выполняются правила регистрации имени отправителя на рынках вроде ОАЭ и Саудовской Аравии.
Риск несёт компания, отправившая сообщение, зачастую не замечая его. Очень низкая цена должна насторожить. Просите указать тип маршрута для каждого направления и тестируйте на своих номерах.
Какими функциями должен обладать SMS-шлюз?
Хороший шлюз надёжно справляется со скучными вещами: отчётами о доставке, кодировкой, пропускной способностью и именами отправителей. Используйте этот список при сравнении вариантов.
| Функция | Почему это важно | Какой вопрос задать |
|---|---|---|
| Прямое подключение к операторам | Меньше промежуточных звеньев, лучше доставка и прослеживаемость | Какие направления прямые, а какие идут через партнёров? |
| Отчёты о доставке и вебхуки | Нужно знать, что произошло | Откуда берутся отчёты и каким статусам они соответствуют? |
| Работа с именем отправителя | Во многих странах обязательно или ограничено | Кто подаёт регистрацию и что будет при отказе? |
| Поддержка Unicode и арабского | Арабскому нужен UCS-2 с более короткими частями | Считает ли API части до отправки? |
| Контроль пропускной способности | Предотвращает перегрузку и ограничение скорости | Как для аккаунта согласуется скорость отправки? |
| Проверка номеров | Очищает списки и помогает маршрутизации | Можно ли проверить номера до отправки? См. HLR-запросы |
| Резервирование | Маршрут может отказать | Что происходит, когда один маршрут деградирует? |
| Двусторонние SMS | Ответы, отписки и диалоги | Могут ли клиенты отвечать и куда попадают ответы? |
| API и SMPP | Совместимость с вашими системами | Предлагаются ли оба варианта на одних и тех же маршрутах? |
| Планирование и массовые задания | Рассылки | Можно ли загружать файлы и планировать отправку? |
| Защита от мошенничества | Защита от SMS-памп-атак (SMS pumping) | Какие лимиты и оповещения есть? См. защиту от SMS pumping |
Как выбрать SMS-шлюз?
Сначала определите свой трафик, затем проверьте маршруты на своих номерах, прежде чем переносить объёмы. Действуйте в такой последовательности.
- Составьте список направлений и видов трафика: OTP, уведомления и рекламные рассылки ведут себя по-разному и часто регистрируются отдельно.
- Проверьте правила имени отправителя для каждой страны с помощью бесплатной проверки Sender ID.
- Решите, нужен ли API или SMPP. Большинство приложений используют API, а отправители больших объёмов добавляют SMPP.
- Спросите тип маршрута для каждой страны и откуда берутся отчёты о доставке.
- Проведите тест на ваших проверенных номерах в каждой целевой стране. Проверьте время доставки, отображение отправителя, арабский текст и отчёты.
- Изучите поддержку и порядок эскалации, включая контакт на случай, если сообщения перестали доходить.
- Прочитайте коммерческие условия, в том числе как указываются цены и регистрации имён отправителей. Подробнее — в нашем чек-листе выбора провайдера массовых SMS.
Бесплатный набор для RFP провайдеру сообщений поможет превратить этот список в вопросы поставщикам.
Как подключиться к SMS-шлюзу и отправить первое сообщение?
Запросите тестовый доступ, надёжно сохраните токен, вызовите эндпоинт отправки и получайте статусы доставки на вебхук. С BroadNet нет мгновенной самостоятельной регистрации, поэтому первый шаг — короткий запрос доступа.
- Запросите тестовый доступ. Расскажите нам о каналах, странах назначения, ожидаемых объёмах и сценарии использования. Инженер выдаст тестовые учётные данные и подтвердит номера, на которые вы будете отправлять тесты.
- Сохраните токен в переменной окружения, например
BROADNET_TOKEN, на вашем сервере. - Отправьте сообщение запросом
POST /sms/sendSmsнаhttps://api.broadnet.meс заголовкомAuthorization: Bearer <token>. - Получайте статус на ваш HTTPS-вебхук. Статусы: SUBMITTED, SENT, DELIVERED, READ, FAILED и REJECTED. Обрабатывайте дубликаты и события в нарушенном порядке.
curl -X POST https://api.broadnet.me/sms/sendSms \
-H "Authorization: Bearer $BROADNET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"senderId": "OmniDemo",
"destinationNumber": "447700900123",
"message": "Your OmniDemo code is 482913",
"messageType": "TEXT"
}'
Полное описание с примерами на Node.js, Python и PHP есть в кратком руководстве для разработчиков, справочнике SMS API и руководстве по вебхукам. Для SMPP сессии (bind) выдаются для каждого аккаунта и работают по TLS; см. подключение по SMPP.
Какие ошибки люди делают с SMS-шлюзами?
Большинство проблем связано с предположениями о доставке и маршрутах, а не с самим вызовом API.
- Считать «принято» равным «доставлено». Дожидайтесь отчёта.
- Не учитывать кодировку. Одна арабская или кириллическая буква может переключить сообщение на UCS-2 и уменьшить размер части. Пользуйтесь счётчиком символов SMS.
- Пропускать регистрацию имени отправителя в странах, где она обязательна.
- Покупать только по цене. Дешёвые маршруты могут означать серые маршруты.
- Отправлять OTP и рекламу по одному маршруту без разделения.
- Не планировать резервирование. Узнайте, что происходит при деградации маршрута.
- Пропускать защиту от мошенничества. Незащищённые эндпоинты OTP привлекают SMS pumping.
Пример: приложение доставки в Дубае
«Rahal Express» — условное приложение доставки в Дубае, которое отправляет код входа, уведомление «курьер в пути» и еженедельную акцию. Первым шлюзом был мост email-to-SMS, встроенный в старый инструмент. Коды порой приходили после окончания сессии, арабские имена ломались, а статусов доставки у приложения не было.
Компания переходит на шлюз API: приложение вызывает эндпоинт SMS, имя отправителя регистрируется там, где это нужно, арабский текст до отправки считается частями UCS-2, а статусы возвращаются на вебхук, чтобы служба поддержки видела сбои. Для OTP и рекламного трафика используются отдельные кампании и имена отправителей. Перед переносом объёмов компания проводит тест на своих номерах в каждом направлении. Результат не волшебный: видимая доставка, правильный текст и понятный ответственный за каждое сообщение.
Как помогает OmniChannels.ai
OmniChannels.ai отправляет A2P SMS по прямым подключениям BroadNet к операторам: с двусторонними SMS, именами отправителей, массовой отправкой, Unicode и арабским, HLR-проверкой номеров и SMPP 3.4 для больших объёмов. REST API на api.broadnet.me передаёт статусы доставки в одном формате вебхука, а наша команда готовит и подаёт регистрации имён отправителей вместе с вами. Тестовый доступ даётся на ваши проверенные номера. Запросите доступ или изучите документацию для разработчиков.
Часто задаваемые вопросы
Что такое SMS-шлюз простыми словами?
SMS-шлюз — это система, которая доставляет текстовое сообщение из вашего ПО в мобильную сеть. Вы отправляете сообщение через API или SMPP, а шлюз занимается проверкой номера, кодировкой, разбиением, маршрутизацией и отчётами о доставке. Без шлюза вам понадобилось бы отдельное подключение к каждому оператору, до абонентов которого вы хотите дойти.
Чем SMS-шлюз отличается от SMS API?
SMS API — это интерфейс, который вызывают разработчики, обычно HTTPS с JSON. Шлюз — платформа за ним, которая маршрутизирует сообщение операторам. Один провайдер обычно предлагает и то и другое, а SMPP — ещё один способ подключиться к тому же шлюзу. Когда говорят «API шлюза», имеют в виду API, который даёт вашему ПО доступ к инфраструктуре шлюза.
Как работает SMS-шлюз?
Ваше приложение передаёт сообщение, шлюз проверяет номер, выбирает кодировку GSM-7 или UCS-2, добавляет имя отправителя, делит длинные сообщения на части и отправляет их в SMSC оператора по SMPP или другому интерфейсу. SMSC доставляет сообщение на телефон. Возвращается отчёт о доставке, и шлюз преобразует его в статус, например «доставлено» или «не доставлено».
SMS-шлюз и SMSC — это одно и то же?
Нет. SMSC — это центр хранения и пересылки сообщений оператора внутри мобильной сети: он хранит сообщения и повторяет попытки, пока они не будут доставлены или не истечёт срок. Шлюз — слой между вашими системами и одним или несколькими операторами. Одни шлюзы подключены напрямую к SMSC операторов, другие маршрутизируют трафик через агрегаторов.
Можно ли использовать GSM-модем или SIM-бокс как SMS-шлюз?
Технически да, для нескольких сообщений в стиле «от человека к человеку» с вашей собственной SIM-карты. Для делового трафика это плохой вариант: ёмкость ограничена, возможности с именем отправителя скудные, а операторы могут обнаружить и заблокировать A2P-трафик с SIM-карт. Для OTP, уведомлений и рассылок используйте шлюз с подключением к операторам и перед подписанием договора уточните тип маршрута.
На что обратить внимание при выборе SMS-шлюза?
Спросите, прямые ли маршруты до операторов, откуда берутся отчёты о доставке, как регистрируются имена отправителей в странах, где это требуется, какие кодировки поддерживаются, как согласуется пропускная способность, как работает резервирование и как можно протестировать шлюз на ваших номерах. Не принимайте решение только по цене за сообщение.
Источники
Читайте дальше
Ещё руководстваSMS и OTP
Как отправлять миллионы SMS в сутки: руководство
Миллионы SMS в сутки: расчёт TPS, SMPP-бинды и окно, очереди и троттлинг, обработка DLR, Sender ID, тихие часы и KPI для мониторинга массовой SMS-рассылки.
11 мин чтения
SMS и OTP
Оптовые A2P SMS: как выбрать провайдера и проверить маршруты
Оптовые A2P SMS: кто их покупает, как работают SMPP bind, что о маршруте говорят DLR и задержка, а также какие KYC и антифрод-меры нужно требовать.
9 мин чтения
Интеграции
SMS API или SMPP: какой способ подключения выбрать?
Сравнение SMS API и SMPP: сессии и bind, windowing, пропускная способность, отчёты о доставке, кодировка, TLS, сложность эксплуатации и миграция.
12 мин чтения
