IOSOR База знаний

Конкатенация UCS-2 тихо сжигает prepaid-сегменты SMS

Один эмодзи или символ Unicode переводит GSM-7 в UCS-2, дробит «одно сообщение» на тарифицируемые сегменты — финансы должны видеть segment count, а не счётчик composer.

Продукт отправил одно SMS. Prepaid-кошелёк списал три unit. Это не сбой ledger — это конкатенация после тихой смены encoding. GSM-7 держит скромный латинский набор; всё вне его (эмодзи, многие письменности, «умные» кавычки из документа) включает UCS-2, снижает бюджет на сегмент и режет тело. Финансы, которые по-прежнему отчитываются «сообщениями», кошелёк не сверят.

IOSOR ведёт white-label prepaid SMS на одном ledger. Каталог live — путь готов; in setup — заявка, не «дешёвая кодировка». Около USD 1 000+ месячного usage segment count и encoding — материал commercial review. Подписки «чтобы аккаунт жил» нет — пополняете prepaid и видите units.

Почему финансы считают сегменты, а не «сообщения»

Composer, который показывает «1 message», отвечает на продуктовый вопрос. Кошелёк отвечает на денежный: сколько тарифицируемых сегментов ушло со счёта. Цифры расходятся, как только меняется encoding или длина пересекает границу. Читайте вместе с учёт сегментов SMS — pricing объясняет unit, эта страница — тихий burn в живом трафике.

Если финансы не выгружают destination, encoding, длину, segment count и unit rate, строка — чек, не контроль. См. контроль prepaid-расходов, прежде чем обещать SMS-бюджет из «количества сообщений».

GSM-7 и UCS-2: тихая смена кодировки

GSM-7 эффективен и хрупок. UCS-2 честен и дороже. Переключение обычно невидимо в QA, если авторы тестируют только английскую латиницу:

  • Один эмодзи в конце перекодирует всё тело.
  • Неразрывный дефис, галочка или символ вне GSM-набора делают то же.
  • Переменные шаблона, «короткие» по-английски, в другой локали раздуваются и тянут encoding за собой.

Не называйте UCS-2 «надбавкой за международность» — это encoding, которым тело ушло. Показывайте его рядом с character count в composer и API-оценке, не только после debit.

Оверхед конкатенации, который прячет composer

Encoding Лимит одной части Лимит multipart Что забирает заголовок
GSM-7 160 символов 153 Заголовок конкатенации
UCS-2 70 символов 67 Тот же заголовок, меньший бюджет

Пересечение лимита не округляется вежливо. Тело режется; каждая часть несёт overhead; кошелёк тарифицирует каждую. UCS-2 на 71 символ — уже два сегмента. Если UI говорит «одно сообщение», продукт и финансы читают разные приборы.

Шаблоны и локали, которые пересекают границу

Burn сегментов прячется там, куда support смотрит последним:

  1. Переменная в три символа в языке автора и в тридцать — у получателя.
  2. Юридический футер из документа с фигурными кавычками.
  3. Fallback, который добавляет эмодзи «для тепла» на повтор после неуспешного DLR.
  4. Многоязычный шаблон, который QA прогнали только на клавиатуре автора.

Оценивайте до отправки теми же правилами, по которым спишет кошелёк. Предупреждайте, когда правка пересекает границу. Тестируйте локали получателя.

Красные флаги

  • Composer или API отдают «messages», а не сегменты
  • Encoding скрыт до конца месяца
  • Эмодзи в OTP-шаблонах без предупреждения о сегментах
  • Строки ledger без encoding + segment count
  • Массовые отправки как плоская оценка, сверка потом
  • Каталог in setup обещан так, будто математика encoding уже действует

Начните с IOSOR

Проверьте настройки шлюза IOSOR и включите строгий предварительный расчет сегментов перед отправкой пакетов. Настройте автоматический заслон в консоли, если динамические переменные переводят сообщение из GSM-7 в UCS-2 и превышают лимит сегментов. Отслеживайте реальную тарификацию каждого сообщения через вебхуки DLR, чтобы оперативно останавливать выгорание предоплаченного баланса.

Итог IOSOR

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

Был ли материал полезен?

Связанные гайды