- Ваше приложениеОтправка через REST API или SMPP
- Платформа BroadNetВалидация, маршрутизация и тарификация каждого сообщения
- SMSC оператораПрямое соединение с оператором
- Телефон абонентаСообщение доставлено
Анатомия SMS
SMS — Short Message Service — была стандартизирована как часть GSM и переносит полезную нагрузку в 140 байт. Именно этот фиксированный размер лежит в основе любого ограничения длины, с которым вы столкнётесь: вся суть длины SMS сводится к тому, чтобы уместиться в 140 байт.
Сообщение передаётся либо как MO (mobile-originated — отправленное с телефона), либо как MT (mobile-terminated — доставленное на телефон). Трафик application-to-person практически весь является MT: ваша платформа отправляет сообщение, а сеть доставляет его абоненту.
Между отправкой и телефоном находится SMSC (Short Message Service Centre), который хранит сообщение и пересылает его, когда получатель становится доступен. Если телефон выключен, SMSC удерживает сообщение до истечения периода действия.
Кодировка: GSM 7-бит против UCS-2
Обычный латинский текст использует стандартный 7-битный алфавит GSM, определённый в GSM 03.38. Поскольку каждый символ занимает 7 бит, в 140 байтах умещается 160 символов — это и есть привычный лимит для одного сегмента.
Несколько распространённых символов (таких как { } [ ] ~ ^ | \ и знак евро) находятся в таблице расширения и стоят по два символа каждый. Легко незаметно превысить границу сегмента, если в тексте есть один из них.
В момент, когда сообщение содержит любой символ вне этого алфавита — арабский, кириллицу, китайский или эмодзи, — всё сообщение переключается на UCS-2, 16-битную кодировку Unicode. Теперь каждый символ занимает 2 байта, поэтому один сегмент вмещает только 70 символов.
Сегментация и конкатенация
Когда текст превышает один сегмент, он разбивается и заново собирается на телефоне. Для этого к каждой части добавляется небольшой заголовок User Data Header (UDH), который занимает часть полезной нагрузки. Именно поэтому конкатенированные сегменты вмещают меньше символов, чем отдельный сегмент.
В GSM 7-бит конкатенированные сегменты вмещают по 153 символа вместо 160; в UCS-2 — по 67 вместо 70. Сообщение на латинице длиной 300 символов — это три сегмента; то же по длине сообщение на арабском — пять. Оплата взимается за сегмент, поэтому кодировка напрямую определяет стоимость.
Частая и легко устранимая ошибка — сообщение, которое лишь немного превышает границу: 161 символ становится двумя сегментами и удваивает цену каждой отправки. Сокращение нескольких слов или удаление символа из таблицы расширения может вдвое снизить счёт в масштабе.
Отчёты о доставке и статусы
Отчёт о доставке (DLR) — это подтверждение сети о том, что произошло с сообщением. Он сообщает конечный статус, такой как «доставлено», «не доставлено», «истёк срок действия» или «отклонено», и часто код ошибки конкретного оператора, объясняющий причину.
DLR необходимы для сверки и оценки качества. Запрос DLR только там, где вы их действительно используете, сохраняет трафик чистым; статус «доставлено» подтверждает, что телефон получил сообщение, а статус «истёк срок действия» означает, что абонент так и не стал доступен в течение периода действия.
Поскольку коды ошибок операторов различаются между маршрутами, зрелые отправители нормализуют их в единую таксономию — абонент недоступен, неверный номер, заблокировано как спам, — чтобы можно было сравнивать качество между направлениями.
A2P против P2P
P2P (person-to-person) — это разговорная SMS, которую один человек отправляет другому. A2P (application-to-person) — это программный трафик от приложений: оповещения, OTP, уведомления и маркетинг. На телефоне они выглядят одинаково, но коммерчески и технически принципиально различны.
Операторы тарифицируют и маршрутизируют A2P иначе и ожидают, что он будет поступать по официальным, оплачиваемым каналам. A2P, доставляемый через маршруты P2P ради обхода сборов за терминацию, — это серый маршрут: он дешевле на первый взгляд, но подвержен фильтрации, плохой доставляемости и рискам несоответствия требованиям.
Понимание этого различия — основа всего, что последует дальше: качество маршрутизации, правила sender ID и файрволы существуют потому, что операторам необходимо отличать законный, оплаченный трафик A2P от обхода.
- Полезная нагрузка SMS составляет 140 байт; именно поэтому GSM 7-бит вмещает 160 символов, а UCS-2 — только 70.
- Любой символ вне алфавита GSM (арабский, эмодзи) переключает всё сообщение на UCS-2 и уменьшает лимит.
- Конкатенированные сегменты «съедают» место под заголовок (153 / 67 символов), и оплата взимается за сегмент.
- DLR замыкают цикл доставки; A2P и P2P выглядят одинаково, но маршрутизируются и тарифицируются по-разному.