Чи траплялося вам колись відправити клієнтам просте нагадування про зустріч і виявити, що ваш рахунок за SMS подвоївся без видимої причини? Це явище безпосередньо пов'язане з **кодуванням sms-повідомлень** — технічним аспектом, який часто ігнорують, але який може суттєво вплинути на ваш бюджет на зв'язок.
Що таке кодування SMS-повідомлення?
Щоб отримати чітке визначення кодування sms, потрібно розуміти, що мобільні мережі читають не всі символи однаково. Кодування — це технічний процес, який перетворює літери, цифри та символи вашого повідомлення у двійкові дані (0 і 1), що передаються телеком-операторами.
Історично склалося так, що стільникові мережі створювалися для передачі дуже легких повідомлень. Сьогодні відправкою SMS керують два основні стандарти:
- GSM-7: стандартне кодування, яке використовує 7 біт на символ. Воно дозволяє вмістити до 160 символів в одному SMS.
- UCS-2 (Unicode): складніше кодування, що використовує 16 біт на символ. Воно необхідне для нелатинських алфавітів, складних спеціальних символів та емодзі. Воно обмежує розмір одного SMS лише 70 символами.
GSM-7 проти UCS-2: пастка спеціальних символів та емодзі
Саме тут починаються труднощі для власників малого бізнесу (перукарень, медичних клінік, автошкіл). Один-єдиний символ поза таблицею GSM-7 змушує все ваше повідомлення переключитися на Unicode.
Кодування спецсимволів та діакритичних знаків у sms, таких як «ç», «ê» або «ë» (які є звичними для французької мови), а також відправка емодзі через sms у кодуванні ucs2 миттєво знижують ліміт символів зі 160 до 70 на повідомлення. Вплив емодзі на кодування sms є миттєвим: ваше повідомлення розбивається на кілька частин (сегментів), що множить вартість відправки у більшості традиційних провайдерів.
Ось порівняльна таблиця для кращої візуалізації цієї різниці:
| Стандарт кодування | Ліміт символів (1 SMS) | Дозволені символи | Вплив на класичну тарифікацію | |
|---|---|---|---|---|
| GSM-7 | 160 символів | Базовий латинський алфавіт, цифри, пробіли та деякі поширені діакритичні знаки (é, à, è, ù) | Стандартна тарифікація (1 кредит) | |
| UCS-2 (Unicode) | 70 символів | Усі алфавіти (арабська, кирилиця, китайська), емодзі, складні діакритичні знаки (ç, ê, ï) | Подвійна або потрійна тарифікація (кілька сегментів) |
Вплив кодування Unicode на вартість SMS
Вплив кодування unicode на вартість sms — це фінансова пастка номер один у класичних SMS-шлюзах, таких як Twilio або Plivo. Ці платформи тарифікують за «сегмент» SMS. Один сегмент відповідає 160 символам у GSM-7, але скорочується до 70 символів, як тільки виявляється хоча б один символ Unicode.
Уявімо, що ви керуєте автомайстернею і надсилаєте таке нагадування про візит:
"Bonjour ! Votre véhicule est prêt. Merci de passer le récupérer avant 18h au garage. À bientôt !"
Це повідомлення містить 107 символів. Якщо ви надішлете його в такому вигляді, воно використовуватиме стандартне кодування GSM-7 (велика літера «À» з діакритичним знаком іноді може викликати проблеми залежно від шлюзу, але решта символів є стандартними). Це коштуватиме вам як 1 сегмент SMS.
Якщо ви додасте в кінці звичайний емодзі автомобіля, щоб зробити повідомлення більш привітним, воно переключиться на UCS-2. Ваші 108 символів тепер перевищують суворий ліміт у 70 символів для Unicode. Тож ваше повідомлення буде розділено на 2 сегменти. У класичного оператора ви заплатите вдвічі більше за це повідомлення лише через один емодзі.
Саме для того, щоб уникнути подібних неприємних сюрпризів, багато компаній шукають альтернативи. З MySMSGate ви підключаєте власний Android-смартфон для відправки повідомлень. Ми стягуємо єдиний фіксований тариф у розмірі 0,02 $ за кожне надіслане SMS, незалежно від його довжини чи кодування. Тут немає прихованої тарифікації за сегменти. Щоб дізнатися більше про економні варіанти, ознайомтеся з нашим посібником про найдешевший SMS-шлюз для малого бізнесу.
Розробникам: яке кодування обрати для відправки SMS через API?
Якщо ви інтегруєте SMS-сповіщення у свій додаток або систему керування, виникає технічне питання: яке кодування обрати для відправки sms через api?
Майже всі сучасні API, зокрема й API MySMSGate, приймають запити у форматі JSON у кодуванні UTF-8. Однак після цього SMS-шлюз має конвертувати цей потік UTF-8 для мобільної мережі. Щоб гарантувати максимальну сумісність і уникнути пошкоджених символів (знаменитих знаків питання або чорних квадратів), важливо правильно налаштувати кодування utf8 sms gateway.
Ось простий приклад на Python для відправки правильно закодованого повідомлення через API MySMSGate, не турбуючись про складне розділення:
import requests
url = "https://mysmsgate.net/api/v1/send"
headers = {
"Authorization": "Bearer VOTRE_CLE_API",
"Content-Type": "application/json"
}
payload = {
"to": "+33612345678",
"message": "Votre rendez-vous est confirmé pour demain à 14h ! ",
"sim_slot": 1
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())Наш API виконує конвертацію абсолютно непомітно для вас. Крім того, наша система має механізм автоматичного повернення коштів у разі помилки доставки, гарантуючи, що ви платите лише за те, що дійсно працює. Для повної інтеграції на власному сервері прочитайте нашу інструкцію про те, як відправляти SMS з телефону Android через API.
Як уникнути подвійного кодування SMS?
Щоб дізнатися, як уникнути подвійного кодування sms, переконайтеся, що ваш код не застосовує функцію кодування (наприклад, urlencode або utf8_encode) до рядка символів, який уже обробляється вашою HTTP-бібліотекою. Надсилання двічі закодованих даних призводить до того, що ваші клієнти отримують нечитабельні повідомлення з набором дивних символів.
Особливий випадок: пресет кодування відео для sms/mms
У сфері мобільного зв'язку ви іноді можете натрапити на термін preset encodage sms/mms video (пресет кодування відео для sms/mms). На відміну від кодування тексту (GSM-7 або UCS-2), цей пресет стосується стиснення та форматування мультимедійних файлів (відео, анімованих зображень), що надсилаються через MMS.
Мобільні мережі встановлюють дуже суворі обмеження на розмір MMS (часто менше 300 КБ або 600 КБ залежно від оператора). Пресет кодування відео дозволяє кардинально знизити роздільну здатність та бітрейт відео, щоб воно могло бути доставлене без відхилення шлюзом оператора. Якщо ваша мета — лише надсилання текстових сповіщень або робочих нагадувань, вам не доведеться турбуватися про ці складні налаштування.
Часті запитання про кодування SMS
Ось відповіді на найпоширеніші запитання щодо керування кодуванням та спеціальними символами під час відправки комерційних SMS.
Чому звичайний французький діакритичний знак може подвоїти вартість мого SMS?
Деякі символи, такі як «ç» (c-седіль), «ê» (e-циркумфлекс) або «à» (a-гравіс), не входять до стандартного алфавіту GSM-7. Як тільки ви використовуєте один із цих символів, ваше програмне забезпечення для відправки переводить усе повідомлення в режим Unicode (UCS-2). Тоді ліміт на одне SMS знижується зі 160 до 70 символів. Якщо ваш текст перевищує 70 символів, він ділиться на два сегменти, що подвоює вартість відправки у традиційних операторів.
Як я можу протестувати кодування своїх SMS перед відправкою?
В інтернеті є інструменти для тестування сегментів SMS (їх часто називають «SMS Length Calculator»). Вони дозволяють вставити ваш текст і миттєво побачити, чи невидимий символ або емодзі змушує повідомлення переключитися в Unicode, а також точну кількість сегментів, за які ваш провайдер виставить рахунок.
Як MySMSGate дозволяє уникнути додаткових витрат, пов'язаних з Unicode?
На відміну від класичних API (Twilio, Plivo), які тарифікують кожен сегмент окремо, MySMSGate застосовує єдиний фіксований тариф у розмірі 0,02 $ за надіслане повідомлення, незалежно від його довжини, використання спеціальних символів чи емодзі. Ваші повідомлення надсилаються безпосередньо через ваш власний Android-смартфон, підключений до нашої платформи, що усуває зайві витрати на сегментацію.
Comments (0)
Be the first to comment!