Как рассчитать стоимость SMS через SMPP в 2026 году

Как рассчитать стоимость SMS через SMPP в 2026 году

Стоимость SMS через SMPP зависит от числа сегментов, кодировки текста и тарифа маршрута. Короткое сообщение на латинице часто занимает один сегмент, а кириллица и длинный текст быстро увеличивают расчётный объём. В статье разберём, как определить кодировку, посчитать сегменты, учесть конкатенацию и заложить результат в бюджет бизнеса в Беларуси. После этого разработчик сможет сверить расчёт с биллингом SMPP и заранее увидеть переплату.

Из чего складывается стоимость SMS через SMPP?

Провайдер обычно считает отправленные сегменты, а не количество вызовов команды submit_sm. Если приложение отправило одно длинное сообщение, в биллинге оно может превратиться в несколько SMS-частей. Поэтому формула выглядит так:

Стоимость отправки = количество получателей × количество сегментов × цена одного сегмента.

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

Для малого бизнеса в Беларуси удобно разделить расчёт на две части. Сначала программа определяет длину сообщения и кодировку. Затем биллинг умножает число сегментов на цену маршрута. Если эти этапы смешать, ошибка обнаружится уже после отправки счёта.

Как кодировка влияет на число SMS-сегментов?

Латинский текст может передаваться в GSM-7, если все символы входят в допустимый набор этой кодировки. Один такой сегмент вмещает до 160 знаков. При конкатенации часть места уходит на служебный заголовок, поэтому длинное сообщение обычно вмещает до 153 знаков в каждом сегменте.

Кириллица, большинство эмодзи и ряд специальных символов переводят сообщение в UCS-2. В одном коротком UCS-2-сегменте помещается до 70 знаков. Для составного сообщения лимит снижается до 67 знаков на сегмент.

ВариантЛимит одного сегментаЛимит составного сообщенияЧто проверить
GSM-7До 160 знаковДо 153 знаков на частьВсе ли символы входят в GSM-7
UCS-2До 70 знаковДо 67 знаков на частьКириллицу, эмодзи и специальные знаки

Например, фраза на русском языке длиной 120 знаков не считается одним SMS: она попадёт в два UCS-2-сегмента. Сообщение на латинице той же длины может занять один GSM-7-сегмент, если в нём нет символов, которые меняют кодировку.

Символ иногда меняет расчёт неожиданно. Кавычки, длинное тире, буквы с диакритикой или эмодзи могут перевести весь текст в UCS-2. Поэтому проверять нужно не только язык сообщения, но и фактический набор знаков. Подробнее о передаче кириллицы рассказано в материале как отправлять кириллицу в SMPP и учитывать длину SMS.

Как считать конкатенацию в SMPP?

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

При отправке через SMPP разработчик обычно задаёт текст, кодировку и параметры длинного сообщения. Провайдер или клиентская библиотека может сама разбить текст на части. Это удобно для интеграции, но не отменяет проверки: приложение должно получить корректный статус для каждой части, а система должна сохранять связь между ними.

Расчёт можно сделать вручную:

  • сообщение до 160 знаков в GSM-7 — один сегмент;
  • сообщение от 161 до 306 знаков в GSM-7 — два сегмента при лимите 153 знака на часть;
  • сообщение до 70 знаков в UCS-2 — один сегмент;
  • сообщение от 71 до 134 знаков в UCS-2 — два сегмента при лимите 67 знаков на часть;
  • для более длинного текста число частей округляют вверх от длины сообщения, делённой на лимит составного сегмента.

Учитывайте и служебные данные SMPP. Для длинных сообщений применяются параметры User Data Header или механизм, который использует конкретная библиотека. Если приложение формирует части вручную и неправильно указывает номера сегментов, получатель увидит обрывки текста, а отчёты о доставке будет трудно сопоставить.

Как заложить сегменты в бюджет бизнеса?

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

Тип сообщенияЧто влияет на расчётПрактическое решение
Код подтвержденияКороткий текст, язык, имя отправителяОграничить шаблон одной частью
Статус заказаДлина текста, номер заказа, ссылкаПроверить длину после подстановки переменных
Напоминание клиентуКириллица и дополнительные сведенияСократить шаблон или заложить несколько сегментов
Техническое уведомлениеПовторная отправка и DLRРазделять стоимость попытки и сегмента

Для планирования в BYN используйте фактическую цену сегмента из выбранного тарифа. Если за месяц система отправляет 12 000 сообщений, а среднее сообщение занимает 1,4 сегмента, расчётный объём составит 16 800 сегментов. Это уже тот показатель, который нужно умножать на цену, указанную для маршрута.

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

Какие ошибки увеличивают счёт за SMPP?

  • Подсчёт сообщений вместо сегментов. Одно длинное SMS в биллинге может стать двумя или несколькими частями.
  • Проверка длины до подстановки переменных. Итоговый текст часто длиннее шаблона.
  • Случайный переход в UCS-2. Эмодзи или один специальный символ меняют доступный лимит.
  • Ориентация на лимит короткого сообщения. Для конкатенации действуют другие пределы: 153 знака в GSM-7 и 67 в UCS-2.
  • Отсутствие разбивки по статусам DLR. Без неё сложно отличить доставленные сегменты от повторных попыток отправки.
  • Ручная сборка частей без теста. Ошибка в служебных параметрах нарушает порядок и склейку сообщения.

Техническую проверку удобно проводить на тестовой группе номеров: отправить каждый шаблон с пограничной длиной, проверить отображение на телефоне и сравнить число сегментов в отчёте SMPP с данными биллинга. После такой сверки шаблоны можно подключать к рабочему потоку через SMPP, а расчёт стоимости вести по сегментам, кодировке и фактическим попыткам отправки.