Перейти к содержимому
OmniChannels.ai
Меню

Что такое SMS-шлюз: как работает, виды и как выбрать

Что такое SMS-шлюз? Как сообщение идёт от приложения к телефону, какие бывают виды (API, SMPP, email-to-SMS, GSM-модем), ключевые функции и как выбрать шлюз.

Обновлено 10 мин чтения

Автор: OmniChannels.ai Editorial Team · Проверил: BroadNet Messaging Solutions Team

SMS и OTP

Короткий ответ

SMS-шлюз — это система, которая преобразует сообщения между вашими приложениями и мобильными сетями. Ваше ПО передаёт сообщение по HTTP API или SMPP, шлюз проверяет номер, выбирает кодировку и маршрут, делит длинные тексты на части и передаёт сообщение в SMSC оператора, который доставляет его на телефон. Затем обратно приходит отчёт о доставке, и вы видите результат.

На этой странице
  1. Что такое SMS-шлюз?
  2. Как текстовое сообщение проходит через SMS-шлюз?
  3. Какие бывают виды SMS-шлюзов?
  4. Почему деловые SMS не стоит отправлять через SIM-боксы?
  5. Какими функциями должен обладать SMS-шлюз?
  6. Как выбрать SMS-шлюз?
  7. Как подключиться к SMS-шлюзу и отправить первое сообщение?
  8. Какие ошибки люди делают с SMS-шлюзами?
  9. Пример: приложение доставки в Дубае
  10. Как помогает 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 на телефон, а отчёт о доставке возвращается тем же путём. Вот путь по шагам.

  1. Ваше приложение передаёт сообщение. Оно вызывает HTTP-эндпоинт или отправляет SMPP-команду submit_sm с номером получателя, именем отправителя и текстом.
  2. Шлюз проверяет и нормализует данные. Он проверяет формат номера, применяет правила страны и может выполнить поиск по номеру.
  3. Выбирает кодировку. Обычный латинский текст использует GSM-7: 160 символов в одной части. Арабский, кириллица и другие алфавиты требуют UCS-2: 70 символов в одной части. Как это влияет на стоимость и длину, показывает наше руководство по лимитам символов в SMS.
  4. Делит длинные сообщения на части, которые телефон собирает обратно.
  5. Выбирает маршрут для сети получателя и добавляет зарегистрированное имя отправителя там, где оно обязательно.
  6. Ставит в очередь с учётом пропускной способности, чтобы не превысить согласованную с оператором скорость.
  7. Передаёт в SMSC оператора, как правило по SMPP.
  8. SMSC доставляет. Он узнаёт у сети, где находится абонент, и пересылает сообщение. Если телефон выключен, SMSC хранит сообщение и повторяет попытки, пока не истечёт срок действия.
  9. Возвращается отчёт о доставке. Шлюз преобразует его в статус и отправляет на ваш вебхук.

Первый ответ 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-шлюз?

Сначала определите свой трафик, затем проверьте маршруты на своих номерах, прежде чем переносить объёмы. Действуйте в такой последовательности.

  1. Составьте список направлений и видов трафика: OTP, уведомления и рекламные рассылки ведут себя по-разному и часто регистрируются отдельно.
  2. Проверьте правила имени отправителя для каждой страны с помощью бесплатной проверки Sender ID.
  3. Решите, нужен ли API или SMPP. Большинство приложений используют API, а отправители больших объёмов добавляют SMPP.
  4. Спросите тип маршрута для каждой страны и откуда берутся отчёты о доставке.
  5. Проведите тест на ваших проверенных номерах в каждой целевой стране. Проверьте время доставки, отображение отправителя, арабский текст и отчёты.
  6. Изучите поддержку и порядок эскалации, включая контакт на случай, если сообщения перестали доходить.
  7. Прочитайте коммерческие условия, в том числе как указываются цены и регистрации имён отправителей. Подробнее — в нашем чек-листе выбора провайдера массовых SMS.

Бесплатный набор для RFP провайдеру сообщений поможет превратить этот список в вопросы поставщикам.

Как подключиться к SMS-шлюзу и отправить первое сообщение?

Запросите тестовый доступ, надёжно сохраните токен, вызовите эндпоинт отправки и получайте статусы доставки на вебхук. С BroadNet нет мгновенной самостоятельной регистрации, поэтому первый шаг — короткий запрос доступа.

  1. Запросите тестовый доступ. Расскажите нам о каналах, странах назначения, ожидаемых объёмах и сценарии использования. Инженер выдаст тестовые учётные данные и подтвердит номера, на которые вы будете отправлять тесты.
  2. Сохраните токен в переменной окружения, например BROADNET_TOKEN, на вашем сервере.
  3. Отправьте сообщение запросом POST /sms/sendSms на https://api.broadnet.me с заголовком Authorization: Bearer <token>.
  4. Получайте статус на ваш 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-шлюза?

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

Источники

  1. SMPP Protocol Specification v3.4, Issue 1.2 (12 October 1999), SMPP Developers Forum
  2. 3GPP TS 23.040: Technical realization of the Short Message Service (SMS)