Почему короткое SMS тарифицируется как несколько сообщений?

Короткий на вид текст может занять несколько тарифицируемых частей: на длину SMS влияют кодировка, служебные символы и данные, которые система подставляет перед отправкой. Кириллица, необычный пробел или длинная ссылка меняют расчёт, даже если в редакторе шаблон выглядит компактно. Ниже разберём, как проверить готовое сообщение, найти лишние части и сократить расходы без потери смысла. Начать можно с одного шаблона, который бизнес отправляет чаще всего.
Почему длина SMS зависит от символов, а не от строк на экране?
Телефон показывает сообщение как обычный текст, а система отправки передаёт его в определённой кодировке. Латинские буквы и часть знаков входят в набор GSM-7. Для кириллицы обычно нужна Unicode-кодировка, при которой в одну часть помещается меньше текста. Поэтому два сообщения одинаковой видимой длины могут дать разное число частей.
Есть и менее заметная причина: отдельные знаки в наборе GSM-7 занимают больше места, чем обычная буква. Например, замена простых скобок на фигурные меняет расчёт длины. А символ, которого нет в этом наборе, может перевести весь текст в Unicode. Часто его приносят из документа вместе с шаблоном: это бывают необычные кавычки, неразрывный пробел или значок валюты.
Когда сообщение не помещается в одну часть, сервис делит его и добавляет служебные данные для сборки на телефоне. Эти данные тоже занимают место. Из-за этого граница между одной частью и несколькими зависит не только от текста, но и от способа отправки длинных SMS. Стоимость лучше считать по числу частей в готовом сообщении и условиям своего тарифа, а не по длине строки в редакторе.
Как проверить шаблон до отправки?
Возьмите сообщение в том виде, в каком его получит клиент. Если шаблон содержит имя, номер заказа, ссылку или сумму, подставьте реальные по форме примеры. Пустой шаблон показывает заниженную длину: короткое имя помещается, а длинное название товара уже сдвигает текст за границу части.
Проверку удобно проводить в таком порядке:
- Скопируйте полный текст из системы отправки, включая подпись, ссылку и переносы строк.
- Подставьте длинные значения в переменные шаблона. Проверьте отдельно вариант с кириллицей.
- Посмотрите в интерфейсе сервиса или через API кодировку и число частей для готового текста.
- Отправьте тестовое сообщение и сравните расчёт с детализацией отправки у своего поставщика.
Счётчик символов в текстовом редакторе годится для черновика, но не подтверждает число оплачиваемых частей. Если сервис показывает только общую длину, запросите у поставщика способ проверить кодировку и сегментацию до отправки. Для автоматической рассылки такую проверку можно встроить в API-интеграцию: система подставит данные, рассчитает части и покажет результат ещё до постановки сообщения в очередь.
Что менять в тексте, чтобы частей стало меньше?
Сначала найдите причину лишней части, а уже потом сокращайте текст. Если сообщение целиком на русском, замена одного знака на латинский сама по себе не вернёт кодировку GSM-7. Здесь помогает убрать повтор смысла, длинное приветствие или часть ссылки. Если же текст латинский и Unicode включился из-за одного необычного символа, достаточно заменить именно его.
| Ситуация | Что проверить | Что попробовать |
|---|---|---|
| Текст на латинице, но сервис выбрал Unicode | Кавычки, пробелы и символы, которые вставили из документа | Заменить необычные знаки обычными и пересчитать части |
| Уведомление на русском занимает несколько частей | Повторы, длинную подпись и текст ссылки | Сократить фразу без потери даты, действия и номера заказа |
| Черновик помещается, а готовое SMS — нет | Значения переменных после подстановки | Проверять шаблон на длинных именах и названиях |
| Расчёт в редакторе расходится с отправкой | Способ разделения длинного сообщения у поставщика | Сверить предварительный расчёт с детализацией тестовой отправки |
Для магазина это может выглядеть так: вместо длинного текста о статусе заказа оставить сам статус, номер заказа и действие для покупателя. Для записи на услугу сохранить время и способ перенести визит. Сокращение имеет смысл, пока клиенту понятно, зачем пришло сообщение и что делать дальше.
Транслитерацию тоже можно проверить, но не стоит включать её автоматически ради числа частей. Русский текст латинскими буквами иногда получается длиннее и читается хуже. Сравните оба варианта в том же сервисе отправки, затем выберите тот, где клиент без усилий поймёт главное.
Какие ошибки чаще всего портят расчёт?
- Проверяют текст без подставленных данных. Исправление: считать части после заполнения всех переменных.
- Смотрят только на число видимых знаков. Исправление: проверять кодировку и сегменты в сервисе отправки.
- Редактируют шаблон после проверки и сразу запускают рассылку. Исправление: пересчитывать итоговый текст после каждой правки.
- Считают принятие сообщения шлюзом подтверждением доставки. Исправление: отдельно смотреть статус доставки; порядок проверки описан в материале о доставке SMS через SMPP.
- Повторяют запрос после тайм-аута и принимают лишнюю отправку за лишнюю часть SMS. Исправление: сверять идентификатор операции и настроить защиту SMS API от дублей.
Расходы полезно разбирать по двум показателям: сколько частей получилось в одном сообщении и сколько раз система его отправила. Первый связан с текстом и кодировкой. Второй — с работой интеграции и повторами запросов. Аналитика трафика помогает увидеть оба случая по шаблонам, прежде чем менять текст или настройки шлюза.
Откройте самый частый шаблон SMS, подставьте в него длинное значение вместо переменной и проверьте число частей в сервисе отправки.


