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

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

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

Почему длина SMS зависит от символов, а не от строк на экране?

Телефон показывает сообщение как обычный текст, а система отправки передаёт его в определённой кодировке. Латинские буквы и часть знаков входят в набор GSM-7. Для кириллицы обычно нужна Unicode-кодировка, при которой в одну часть помещается меньше текста. Поэтому два сообщения одинаковой видимой длины могут дать разное число частей.

Есть и менее заметная причина: отдельные знаки в наборе GSM-7 занимают больше места, чем обычная буква. Например, замена простых скобок на фигурные меняет расчёт длины. А символ, которого нет в этом наборе, может перевести весь текст в Unicode. Часто его приносят из документа вместе с шаблоном: это бывают необычные кавычки, неразрывный пробел или значок валюты.

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

Как проверить шаблон до отправки?

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

Проверку удобно проводить в таком порядке:

  1. Скопируйте полный текст из системы отправки, включая подпись, ссылку и переносы строк.
  2. Подставьте длинные значения в переменные шаблона. Проверьте отдельно вариант с кириллицей.
  3. Посмотрите в интерфейсе сервиса или через API кодировку и число частей для готового текста.
  4. Отправьте тестовое сообщение и сравните расчёт с детализацией отправки у своего поставщика.

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

Что менять в тексте, чтобы частей стало меньше?

Сначала найдите причину лишней части, а уже потом сокращайте текст. Если сообщение целиком на русском, замена одного знака на латинский сама по себе не вернёт кодировку GSM-7. Здесь помогает убрать повтор смысла, длинное приветствие или часть ссылки. Если же текст латинский и Unicode включился из-за одного необычного символа, достаточно заменить именно его.

СитуацияЧто проверитьЧто попробовать
Текст на латинице, но сервис выбрал UnicodeКавычки, пробелы и символы, которые вставили из документаЗаменить необычные знаки обычными и пересчитать части
Уведомление на русском занимает несколько частейПовторы, длинную подпись и текст ссылкиСократить фразу без потери даты, действия и номера заказа
Черновик помещается, а готовое SMS — нетЗначения переменных после подстановкиПроверять шаблон на длинных именах и названиях
Расчёт в редакторе расходится с отправкойСпособ разделения длинного сообщения у поставщикаСверить предварительный расчёт с детализацией тестовой отправки

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

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

Какие ошибки чаще всего портят расчёт?

  • Проверяют текст без подставленных данных. Исправление: считать части после заполнения всех переменных.
  • Смотрят только на число видимых знаков. Исправление: проверять кодировку и сегменты в сервисе отправки.
  • Редактируют шаблон после проверки и сразу запускают рассылку. Исправление: пересчитывать итоговый текст после каждой правки.
  • Считают принятие сообщения шлюзом подтверждением доставки. Исправление: отдельно смотреть статус доставки; порядок проверки описан в материале о доставке SMS через SMPP.
  • Повторяют запрос после тайм-аута и принимают лишнюю отправку за лишнюю часть SMS. Исправление: сверять идентификатор операции и настроить защиту SMS API от дублей.

Расходы полезно разбирать по двум показателям: сколько частей получилось в одном сообщении и сколько раз система его отправила. Первый связан с текстом и кодировкой. Второй — с работой интеграции и повторами запросов. Аналитика трафика помогает увидеть оба случая по шаблонам, прежде чем менять текст или настройки шлюза.

Откройте самый частый шаблон SMS, подставьте в него длинное значение вместо переменной и проверьте число частей в сервисе отправки.