Если вы заметили, что ваши расходы на SMS резко выросли из-за того, что система отправляет несколько сообщений вместо одного из-за Unicode, вопрос о том, как это остановить, наверняка является для вас самым актуальным. Одна случайная «умная» кавычка или эмодзи могут мгновенно превратить стандартное недорогое текстовое сообщение в три отдельных сегмента, за которые придется платить, опустошая ваш маркетинговый и операционный бюджет.

Шаг 1. Поймите, почему Unicode заставляет систему делить SMS на несколько сегментов

Чтобы ваш SMS-шлюз перестал делить одиночные сообщения на несколько оплачиваемых сегментов, необходимо сначала понять технические особенности кодирования SMS. Традиционные телекоммуникационные сети используют два основных стандарта кодирования текстовых сообщений: GSM-7 и UCS-2 (Unicode).

При стандартной кодировке GSM-7 один сегмент SMS может содержать до 160 символов. Этот набор включает стандартные латинские буквы (A-Z, a-z), цифры (0-9) и несколько распространенных знаков препинания. Однако, как только в тексте сообщения появляется хотя бы один символ за пределами этого базового набора — например, фигурная кавычка (’), буква с диакритическим знаком (á, é, ö) или эмодзи — кодировка всего сообщения автоматически переключается на UCS-2.

Когда сообщение переключается на кодировку UCS-2 Unicode, лимит символов на сегмент падает со 160 всего до 70 символов. Если длина вашего сообщения составляет 140 символов, оно легко помещается в один сегмент GSM-7. Но в UCS-2 те же самые 140 символов потребуют уже двух отдельных сегментов. Традиционные API-провайдеры, такие как Twilio, Vonage и MessageBird, выставляют счета за каждый сегмент, а это значит, что стоимость одного сообщения мгновенно удваивается или утраивается.

Стандарт кодированияМакс. символов (1 сегмент)Макс. символов (мультисегмент)Распространенные триггерные символы
GSM-7160 символов153 символа на сегментСтандартные английские буквы, цифры, базовая пунктуация
UCS-2 (Unicode)70 символов67 символов на сегментЭмодзи, «умные» кавычки (“, ”), нелатинские алфавиты, буквы с диакритическими знаками (é, ñ)

Это поведение объясняет, почему ваше приложение отправляет несколько SMS из-за Unicode. Чтобы решить эту проблему, вам нужно либо строго очищать входящие данные, либо перейти на недорогой SMS API, который не штрафует вас за отправку более длинных современных текстовых сообщений.

Шаг 2. Удалите или замените символы Unicode в вашем кодеСамый быстрый программный способ предотвратить разделение сообщений из-за Unicode — это очистка текста перед его отправкой на SMS-шлюз. Вы можете написать вспомогательную функцию на бэкенде, которая будет удалять символы, не входящие в GSM-7, или заменять их наиболее близкими эквивалентами из GSM-7.

Вот как вы можете реализовать это на различных языках программирования, используя простые регулярные выражения и правила замены строк.

Реализация на PythonВ Python вы можете использовать модуль unicodedata для нормализации строк, удаления диакритических знаков и преобразования «умных» кавычек обратно в стандартные прямые кавычки:

import unicodedata
import re

def clean_for_gsm7(text):
    # Replace common smart quotes and dashes
    replacements = {
        u'\u201c': '"', u'\u201d': '"',
        u'\u2018': "'", u'\u2019': "'",
        u'\u2013': '-', u'\u2014': '-'
    }
    for unicode_char, gsm_char in replacements.items():
        text = text.replace(unicode_char, gsm_char)
    
    # Normalize and strip accents
    normalized = unicodedata.normalize('NFKD', text)
    ascii_text = normalized.encode('ascii', 'ignore').decode('utf-8')
    
    # Remove any remaining non-GSM-7 characters
    gsm7_regex = re.compile(r'[^\n\r a-zA-Z0-9^{}\\\[~\]|€$@!"#%&\'()*+,-./:;<=>?_]')
    cleaned_text = gsm7_regex.sub('', ascii_text)
    
    return cleaned_text

message = "Hello! Your appointment is scheduled for tomorrow at 3 PM. See you there! 😊"
print(clean_for_gsm7(message))
# Output: "Hello! Your appointment is scheduled for tomorrow at 3 PM. See you there! "

Реализация на Node.js (JavaScript)

Для JavaScript-разработчиков подойдет аналогичный подход с использованием регулярных выражений для удаления любых символов, не соответствующих стандарту GSM-7:

function sanitizeToGSM7(text) {
    const smartReplacements = {
        '[\u201c\u201d]': '"',
        '[\u2018\u2019]': "'",
        '\u2013': '-',
        '\u2014': '-'
    };

    let cleaned = text;
    for (const [pattern, replacement] of Object.entries(smartReplacements)) {
        cleaned = cleaned.replace(new RegExp(pattern, 'g'), replacement);
    }

    // Remove accents
    cleaned = cleaned.normalize('NFD').replace(/[\u0300-\u036f]/g, '');

    // Keep only GSM-7 compatible characters
    const gsm7Pattern = /[^\n\r a-zA-Z0-9^{}\\\[~\]|€$@!"#%&\'()*+,-.\/:;<=>?_]/g;
    return cleaned.replace(gsm7Pattern, '');
}

const rawMessage = "Your order is ready for pickup! 🚗";
console.log(sanitizeToGSM7(rawMessage)); 
// Output: "Your order is ready for pickup! "

Шаг 3. Преобразуйте «умные» кавычки и диакритические знаки в эквиваленты GSM-7

Часто символы Unicode попадают в ваши сообщения при копировании и вставке из текстовых процессоров, таких как Microsoft Word или Google Docs. Эти программы автоматически преобразуют стандартные прямые кавычки (' и ") в фигурные «умные» кавычки (, , , ).

Чтобы предотвратить отправку вашей системой нескольких SMS из-за таких незначительных изменений, вы можете настроить таблицу сопоставления символов. Это позволит сохранить читаемость текста без превышения лимита в 70 символов для UCS-2.

  • Преобразуйте и в стандартный апостроф '
  • Преобразуйте и в стандартные кавычки "
  • Преобразуйте длинные тире () и средние тире () в стандартные дефисы (-)
  • Преобразуйте символы с диакритическими знаками, такие как é, á, í, в их аналоги без знаков: e, a, i

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

Шаг 4. Перейдите на SMS-шлюз с фиксированной оплатой за сообщение

Хотя удаление символов Unicode является рабочим решением, оно заставляет вас идти на компромисс с уникальным стилем вашего бренда (brand voice). В 2026 году клиенты ожидают естественного общения, которое часто включает в себя эмодзи, локальные особенности произношения (акценты) и профессиональное форматирование. Ограничивать коммуникацию с клиентами базовыми символами ASCII только ради того, чтобы избежать огромных телефонных счетов, больше нет необходимости.

Традиционные облачные агрегаторы, такие как Twilio, Plivo и MessageBird, применяют строгое посигментное выставление счетов, поскольку они обязаны платить операторам связи за каждый пакет данных. Кроме того, использование этих устаревших платформ требует прохождения сложной регистрации A2P SMS, получения одобрений операторов 10DLC и оплаты ежемесячных регулярных сборов.

Все более популярной альтернативой становится использование SMS-шлюзов на базе Android, таких как MySMSGate. MySMSGate превращает ваши собственные Android-телефоны и SIM-карты в полноценные устройства для отправки SMS. Поскольку ваши сообщения отправляются напрямую через SIM-карту вашего телефона (которая обычно включает безлимитные или очень дешевые пакеты местных SMS), вы полностью обходите традиционную посегментную тарификацию.

MySMSGate взимает фиксированную плату в размере 0,02 $ за отправленное SMS, независимо от того, содержит ли ваше сообщение символы Unicode, эмодзи или состоит из нескольких сегментов. Никаких ежемесячных подписок, контрактов и задержек с регистрацией у операторов. Если сообщение не будет доставлено, баланс автоматически вернется на ваш счет.

Если вы ищете лучшие альтернативы SMS API для сравнения массовых рассылок, надежности и показателей доставки, переход на Android SMS-шлюз решает проблему тарификации Unicode в самом ее зародыше.

Шаг 5. Настройте управление отправкой SMS с нескольких номеров

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

С MySMSGate вы можете подключить неограниченное количество Android-устройств к единой панели управления аккаунтом. Это позволяет беспрепятственно управлять несколькими номерами:

  1. Создайте учетную запись: зарегистрируйтесь на MySMSGate, чтобы получить свой API-ключ.
  2. Установите приложение для Android: скачайте приложение-компаньон MySMSGate на свои Android-устройства.
  3. Подключитесь через QR-код: отсканируйте QR-код, отображаемый в веб-панели, с помощью камеры каждого телефона. Это мгновенно свяжет устройства с вашим центральным аккаунтом без необходимости вручную вводить сложные API-ключи.
  4. Управляйте Dual SIM: если ваши телефоны поддерживают две SIM-карты, вы можете выбрать, с какого именно слота SIM-карты отправлять сообщения, прямо в панели управления или через API-запрос.

Такая мультиустройственная структура позволяет направлять исходящие уведомления через локальные номера, которые ваши клиенты уже знают, что значительно повышает показатели открываемости и ответов. Все входящие ответы автоматически пересылаются обратно в вашу веб-панель диалогов (Web Conversations), позволяя вести двусторонний чат в реальном времени прямо с компьютера.

Шаг 6. Отправьте свое первое безопасное для Unicode SMS через REST APIЕсли вы инди-разработчик, фрилансер или технический владелец бизнеса, интеграция MySMSGate в ваше программное обеспечение будет невероятно простой. Платформа предлагает чистый REST API с одной конечной точкой (endpoint), позволяющий запускать SMS-уведомления с минимальными настройками.

Вот пример того, как сделать POST-запрос для отправки SMS с помощью cURL. Обратите внимание, что вы можете добавлять эмодзи и специальные символы Unicode, не беспокоясь о росте стоимости из-за деления на сегменты:

curl -X POST https://mysmsgate.net/api/v1/send \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+1234567890",
    "message": "Your vehicle is ready for pickup! 🚗 Please reply to this message if you have any questions.",
    "device_id": "your_device_id",
    "sim_slot": 1
  }'

Для более подробной реализации на других языках вы можете изучить официальную документацию MySMSGate API, которая содержит готовые к использованию примеры кода для Python, Node.js, PHP, Go и Ruby, а также готовые коннекторы для платформ автоматизации, таких как Zapier, Make.com и n8n.

Часто задаваемые вопросы

Вот ответы на самые распространенные вопросы, касающиеся разделения SMS из-за Unicode, лимитов символов и тарифных планов.

Почему из-за одного эмодзи SMS отправляется как несколько сообщений?

Стандартные текстовые сообщения используют кодировку GSM-7, которая позволяет вмещать до 160 символов в одном сегменте. Эмодзи не входят в набор символов GSM-7. Когда вы добавляете эмодзи, оператор связи вынужден переключить все сообщение в кодировку UCS-2 (Unicode), из-за чего лимит сегмента снижается до 70 символов. Если ваше сообщение длиннее 70 символов, оно делится на несколько сегментов, и традиционные API взимают плату за каждый сегмент.

Как проверить, содержит ли мой текст Unicode перед отправкой?

Вы можете использовать онлайн-калькуляторы длины SMS или запустить простой поиск по регулярным выражениям в своем коде для обнаружения символов, не входящих в GSM-7. Кроме того, можно написать скрипты валидации, которые будут помечать или удалять символы не из GSM-7 из вашей базы данных перед передачей их в очередь исходящих SMS.

Взимает ли MySMSGate дополнительную плату за Unicode или многосегментные сообщения?

Нет. В отличие от традиционных API, таких как Twilio или Vonage, которые выставляют счета за каждый сегмент из 160 или 70 символов, MySMSGate взимает фиксированную плату в размере 0,02 $ за отправленное сообщение. Поскольку сообщение направляется напрямую через SIM-карту вашего Android-телефона, вы не платите за сегменты, что позволяет отправлять эмодзи и длинные сообщения, не беспокоясь о скрытых комиссиях.

Нужна ли мне регистрация у оператора или 10DLC для использования Android SMS-шлюза?

Нет. Поскольку MySMSGate направляет сообщения через ваш собственный физический Android-телефон и SIM-карту, ваши сообщения отправляются как стандартный трафик от человека к человеку (P2P). Это означает, что вам не нужно проходить сложную, дорогую и трудоемкую регистрацию A2P 10DLC или ждать одобрения операторов связи.