Під час створення автоматизованих систем або надсилання сповіщень клієнтам багато власників бізнесу та розробників шоковані тим, що їхні щомісячні рахунки за SMS виявляються вдвічі вищими, ніж очікувалося. Цей детальний посібник містить таблицю з кількістю символів, яку займають спеціальні символи під час відправки SMS, що допоможе вам зрозуміти, як прихована зміна кодування може суттєво збільшити ваші витрати на розсилки.
Чому спеціальні символи змінюють довжину та вартість SMS
У стандартах телекомунікацій плата за текстові повідомлення стягується не за фактичну кількість слів, а за "сегменти." Стандартний сегмент SMS кодується за допомогою набору символів GSM-7, який дозволяє вмістити до 160 символів у повідомленні. Однак щойно ви додаєте хоча б один символ поза цим стандартним набором — наприклад, емодзі, кириличну літеру або навіть «розумні лапки», скопійовані з Microsoft Word, — кодування всього повідомлення змінюється на UCS-2 (Unicode).
Поширена помилка полягає в тому, що SMS-повідомлення обмежені 160 символами, навіть якщо вони містять спеціальні символи та емодзі в кодуванні UCS-2. Насправді, щойно виявляється хоча б один символ, який не входить до GSM, максимальний ліміт символів на сегмент миттєво знижується зі 160 до всього 70 символів. Якщо ваше повідомлення містить 71 символ і один емодзі, традиційні API-провайдери, такі як Twilio або Plivo, розділять його і тарифікуватимуть як два окремі сегменти SMS.
Розуміння того, які спеціальні символи зазвичай впливають на повідомлення, є вирішальним для збереження низьких операційних витрат, особливо якщо ви керуєте локальним сервісним бізнесом, як-от клінікою, салоном краси чи майстернею, та надсилаєте клієнтам нагадування про візити.
Різниця між кодуваннями GSM-7 та UCS-2
GSM-7 — це 7-бітний стандарт кодування символів, розроблений спеціально для SMS. Він містить більшість латинських символів, цифр та базових розділових знаків. UCS-2 — це 16-бітний стандарт кодування, який може представляти майже будь-який символ будь-якою мовою, включаючи емодзі, але він вимагає вдвічі більше даних на символ. Через це надлишкове навантаження мобільні оператори знижують місткість сегмента до 70 символів при переході на UCS-2.
Детальна таблиця відповідності спеціальних символів SMS
Нижче наведено таблицю з кількістю символів, яку займають спеціальні символи для відправки SMS. У цій таблиці описано стандартні символи GSM-7, розширені символи GSM-7 (які займають 2 символьних місця в межах ліміту 160) та символи UCS-2, які змушують систему застосовувати суворий ліміт у 70 символів.
| Категорія символів | Приклади символів | Біт на символ | Вага символу в SMS | Макс. ліміт сегмента |
|---|---|---|---|---|
| Базовий GSM-7 | A-Z, a-z, 0-9, пробіли, прості розділові знаки (., !, ?, @, $, тощо) | 7 біт | 1 символ | 160 символів |
| Розширений GSM-7 | ^, {, }, [, ], ~, |, \, € | 14 біт | 2 символи | 160 символів (кожен розширений символ рахується за 2) |
| UCS-2 (Unicode) | á, í, ó, ñ, ’ (розумні лапки), емодзі (😀), кирилиця, арабська | 16 біт | Переводить усе повідомлення в Unicode | 70 символів |
Як показано в таблиці, використання розширеного символу GSM-7, такого як фігурна дужка "{" або зворотний слеш "\", не переводить повідомлення в Unicode, але рахується як два символи у вашому ліміті з 160 символів. Проте використання символів поза GSM, таких як "á" (часто використовуються в іспанських конфігураціях sms y caracteres especiales) або фігурних лапок "’", негайно зменшить ліміт сегмента повідомлення до 70 символів.
Як спеціальні символи впливають на вартість ваших SMS
Щоб зрозуміти los caracteres especiales que impacto tienen en el coste de los sms (вплив спеціальних символів на вартість SMS), розглянемо практичний приклад. Уявіть, що ви керуєте стоматологічною клінікою та надсилаєте таке нагадування про візит:
«Привіт, Іване! Ваш візит заплановано на завтра о 15:00. Будь ласка, дайте відповідь для підтвердження або зателефонуйте нам, якщо потрібно перенести зустріч! Él»
Це повідомлення містить 123 символи. Якщо ви використовуєте стандартну літеру "E" замість акцентованої "É", повідомлення надсилається в GSM-7. Воно легко вкладається в ліміт 160 символів і коштує рівно як 1 сегмент SMS.
Однак через акцентовану літеру "É" повідомлення примусово переводиться в UCS-2. Ліміт сегмента тепер становить 70 символів. Ваше повідомлення з 123 символів ділиться на два сегменти (перший сегмент містить 67 символів, другий — 56 символів через заголовки сегментації). Традиційні API-шлюзи виставлять вам рахунок за 2 SMS-повідомлення замість 1.
Якщо ви використовуєте традиційних провайдерів, така сегментація може подвоїти або потроїти ваш щомісячний рахунок. Саме тому багато компаній шукають альтернативу Twilio або звертаються до посібника з найдешевших SMS API, щоб уникнути додаткових нарахувань за сегменти.
Як уникнути спеціальних символів у SMS?
Якщо ви хочете, щоб ваші повідомлення залишалися в межах ліміту 160 символів і не виникало непередбачених витрат, ви повинні активно очищати тексти своїх SMS. Ось дієві стратегії щодо того, як уникнути спеціальних символів у SMS:
- Очищайте скопійований текст: Багато шаблонів CRM містять «розумні» розділові знаки. Наприклад, скопійований апостроф (’) або кома з текстового редактора можуть завадити коректній доставці або активувати Unicode. Як реальний приклад, деякі внутрішні корпоративні системи видають коротке попередження для консультантів: "outbound sms special characters please be aware that any outbound sms sent must be 250 characters or fewer. if your message has been copied & pasted from a saved template and contains a comma (,) or apostrophe ('), please remove the special character and then re-enter it before sending". Заміна розумних лапок на стандартні прямі лапки (') гарантує відповідність стандарту GSM-7.
- Замінюйте символи поза GSM програмно: Якщо ваша система динамічно генерує SMS, впровадьте функцію транслітерації для заміни таких символів, як "á" на "a", "é" на "e", та "“" на """.
- Враховуйте обмеження конкретних платформ: Якщо ви розробляєте на корпоративних low-code платформах, звертайте увагу на те, як вони обробляють кодування. Наприклад, під час роботи зі special characters in gsm outsystems інтеграціями текстові змінні можуть автоматично перетворювати стандартні розділові знаки на еквіваленти Unicode під час серіалізації JSON.
Фрагмент коду Python для очищення тексту SMS
Ось проста функція на Python для видалення спеціальних символів, які не розпізнаються в SMS або які можуть призвести до використання дорогого кодування UCS-2:
import unicodedata
def sanitize_for_gsm7(text):
# Map common smart punctuation to GSM-7 equivalents
replacements = {
'\u2018': "'", '\u2019': "'", # Smart single quotes
'\u201c': '"', '\u201d': '"', # Smart double quotes
'\u2013': '-', '\u2014': '-', # En and em dashes
'\u20ac': 'EUR' # Replace Euro sign if needed
}
for unicode_char, gsm_char in replacements.items():
text = text.replace(unicode_char, gsm_char)
# Normalize accents (e.g., é to e)
normalized = unicodedata.normalize(342200230NFD342200231, text)
gsm7_text = "".join([c for c in normalized if not unicodedata.combining(c)])
return gsm7_text
message = "Hello! Your appointment is confirmed for tomorrow é."
print(sanitize_for_gsm7(message))
# Output: "Hello! Your appointment is confirmed for tomorrow e."
Позбудьтеся тривоги щодо кодування з MySMSGate
Для локальних сервісних компаній, шкіл та клінік турботи про кодування символів, ліміти сегментів та складні структури тарифікації є зайвим головним болем. Саме в таких випадках вибір між традиційним SMS-шлюзом та SMS API стає критично важливим.
MySMSGate повністю вирішує цю проблему. Замість того, щоб маршрутизувати ваші повідомлення через дорогі мережі операторів з суворою тарифікацією за кожен сегмент, MySMSGate перетворює ваш власний Android-телефон та SIM-карту на SMS-шлюз.
Ось як MySMSGate змінює правила гри для бізнесів, які прагнуть оптимізувати витрати:
- Фіксована ціна: Ми стягуємо фіксовану плату $0.02 за кожне надіслане повідомлення, незалежно від його довжини, кодування чи кількості сегментів. Вам більше не доведеться хвилюватися, чи подвоїть емодзі або акцентований символ ваш рахунок.
- Використання власного номера: Повідомлення надсилаються безпосередньо з SIM-карти вашого Android-телефону. Ваші клієнти бачать знайомий місцевий мобільний номер, що підвищує показники відкриваності та відповідей.
- Без складних реєстрацій: Уникніть складних процедур реєстрації 10DLC, погоджень з операторами та щомісячних бренд-зборів, пов'язаних із традиційними API, такими як Twilio.
- Підтримка Dual SIM та кількох пристроїв: Керуйте кількома телефонами та SIM-картами з єдиної панелі керування, вибираючи саме ту лінію, з якої потрібно надіслати повідомлення для конкретного діалогу з клієнтом.
Часті запитання
Ознайомтеся з відповідями на поширені запитання щодо кодування символів SMS, спеціальних символів та лімітів повідомлень.
Які спеціальні символи зменшують ліміт SMS до 70 символів?
Будь-який символ, не включений до стандартного набору GSM-7, примусово переводить повідомлення в кодування UCS-2, зменшуючи ліміт до 70 символів. Сюди належать емодзі, нелатинські алфавіти (кирилиця, арабська, грецька, іврит), а також деякі акцентовані літери або стилізовані розділові знаки (наприклад, фігурні «розумні» лапки).
Чи рахуються пробіли як символи в SMS?
Так, кожен пробіл рахується як один символ як у стандартах кодування GSM-7, так і в UCS-2.
Чому моя SMS-платформа стягує плату за кілька повідомлень, хоча я надіслав лише одне?
Якщо ваше повідомлення перевищило 160 символів (у GSM-7) або 70 символів (у UCS-2), оператор розділив його на кілька сегментів. Традиційні API тарифікують кожен сегмент окремо, тобто одне довге повідомлення може легко коштувати вдвічі або втричі дорожче за базовий тариф.
Як перевірити, чи містить моє SMS-повідомлення спеціальні символи?
Ви можете скористатися онлайн-калькуляторами сегментів SMS або запустити простий скрипт очищення на вашому бекенді, щоб визначити, чи активує ваш текст кодування UCS-2 Unicode перед його надсиланням провайдеру API.
Comments (0)
Be the first to comment!