Czy zdarzyło Ci się kiedyś wysłać proste przypomnienie o wizycie do swoich klientów i zauważyć, że rachunek za SMS-y podwoił się bez wyraźnego powodu? Zjawisko to jest bezpośrednio powiązane z **kodowaniem wiadomości SMS**, często ignorowanym aspektem technicznym, który może jednak mocno obciążyć Twój budżet komunikacyjny.
Co to jest kodowanie wiadomości SMS?
Aby uzyskać jasną definicję kodowania SMS, należy zrozumieć, że sieci komórkowe nie odczytują wszystkich znaków w ten sam sposób. Kodowanie to proces techniczny, który konwertuje litery, cyfry i symbole w wiadomości na dane binarne (zera i jedynki) przesyłane przez operatorów telekomunikacyjnych.
Historycznie sieć komórkowa została zaprojektowana do przesyłania bardzo lekkich wiadomości. Obecnie wysyłaniem SMS-ów rządzą dwa główne standardy:
- GSM-7: Standardowe kodowanie wykorzystujące 7 bitów na znak. Pozwala na zapisanie do 160 znaków w jednym SMS-ie.
- UCS-2 (Unicode): Bogatsze kodowanie wykorzystujące 16 bitów na znak, niezbędne dla alfabetów nielacińskich, złożonych znaków specjalnych i emotikonów. Ogranicza ono rozmiar pojedynczego SMS-a do zaledwie 70 znaków.
GSM-7 vs UCS-2: Pułapka znaków specjalnych i emotikonów
To właśnie tutaj zaczynają się komplikacje dla właścicieli małych firm (salonów fryzjerskich, gabinetów lekarskich, szkół jazdy). Jeden prosty znak spoza tabeli GSM-7 zmusza cały system do przełączenia wiadomości na Unicode.
Użycie znaków specjalnych i diakrytycznych w SMS, takich jak polskie ogonki i kreski (ą, ć, ę, ł, ń, ó, ś, ź, ż), jak również wysyłanie emotikonów w kodowaniu UCS-2, natychmiast zmniejsza limit znaków ze 160 do 70 na wiadomość. Wpływ emotikonów na kodowanie SMS jest więc natychmiastowy: Twoja wiadomość zostaje podzielona na kilka części (segmentów), co wielokrotnie zwiększa koszt wysyłki u większości tradycyjnych dostawców.
Oto tabela porównawcza, która pozwala lepiej zobrazować tę różnicę:
| Standard kodowania | Limit znaków (1 SMS) | Dozwolone znaki | Wpływ na klasyczne rozliczenia | |
|---|---|---|---|---|
| GSM-7 | 160 znaków | Podstawowy alfabet łaciński, cyfry, spacje i niektóre popularne znaki diakrytyczne | Standardowa stawka (1 kredyt) | |
| UCS-2 (Unicode) | 70 znaków | Wszystkie alfabety (arabski, cyrylica, chiński), emotikony, złożone znaki diakrytyczne (np. polskie znaki, ą, ć, ę itp.) | Podwojona lub potrojona stawka (wiele segmentów) |
Wpływ kodowania Unicode na cenę SMS-a
Wpływ kodowania Unicode na cenę SMS to pułapka finansowa numer jeden w przypadku klasycznych bramek SMS, takich jak Twilio czy Plivo. Platformy te rozliczają się za „segment” SMS. Jeden segment odpowiada 160 znakom w GSM-7, ale spada do 70 znaków, gdy tylko zostanie wykryty choćby jeden znak Unicode.
Wyobraźmy sobie, że prowadzisz warsztat samochodowy i wysyłasz takie przypomnienie o wizycie:
"Dzien dobry! Twoj pojazd jest gotowy. Odbierz go przed 18:00 w warsztacie. Do zobaczenia!"
Ta wiadomość zawiera 92 znaki. Jeśli wyślesz ją w takiej formie (bez polskich znaków), użyje ona standardowego kodowania GSM-7. Kosztuje to 1 segment SMS.
Jeśli jednak napiszesz poprawnie po polsku: "Dzień dobry! Twój pojazd jest gotowy. Odbierz go przed 18:00 w warsztacie. Do zobaczenia!" lub dodasz na końcu prosty emotikon samochodu, wiadomość przełączy się na UCS-2. Twoje znaki natychmiast przekroczą rygorystyczny limit 70 znaków dla Unicode. Wiadomość zostanie podzielona na 2 segmenty. U klasycznego operatora zapłacisz za tę wiadomość podwójnie – tylko z powodu polskich znaków lub jednego emotikona.
Aby uniknąć tego typu przykrych niespodzianek, wiele firm szuka alternatyw. Dzięki MySMSGate możesz podłączyć własny smartfon z systemem Android, aby wysyłać wiadomości. Pobieramy stałą, jednolitą opłatę w wysokości 0,02 $ za wysłany SMS, bez względu na jego długość czy kodowanie. Nie ma tu ukrytych opłat za segmenty. Aby dowiedzieć się więcej o ekonomicznych rozwiązaniach, przeczytaj nasz poradnik o najtańszej bramce SMS dla małych firm.
Programiści: Jakie kodowanie wybrać do wysyłania SMS-ów przez API?
Si vous intégrez des notifications SMS dans votre propre application ou logiciel de gestion, la question technique se pose : jakie kodowanie wybrać do wysyłania SMS przez API ?
Prawie wszystkie nowoczesne interfejsy API, w tym MySMSGate, akceptują żądania w formacie JSON kodowane w UTF-8. Jednak bramka SMS musi następnie przekonwertować ten strumień UTF-8 na format sieci komórkowej. Aby zapewnić maksymalną kompatybilność i uniknąć uszkodzonych znaków (słynnych znaków zapytania lub czarnych kwadratów), kluczowe jest prawidłowe skonfigurowanie kodowania UTF-8 w bramce SMS.
Oto prosty przykład w języku Python pokazujący, jak wysłać poprawnie zakodowaną wiadomość przez API MySMSGate, nie martwiąc się o skomplikowane dzielenie tekstu:
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())Nasze API obsługuje konwersję w sposób całkowicie przezroczysty. Ponadto nasz system zawiera mechanizm automatycznego zwrotu kosztów w przypadku niepowodzenia dostarczenia, dzięki czemu płacisz tylko za to, co faktycznie działa. Aby uzyskać pełną integrację na własnym serwerze, przeczytaj nasz poradnik o tym, jak wysyłać SMS-y z telefonu z systemem Android przez API.
Jak uniknąć podwójnego kodowania SMS?
Aby dowiedzieć się, jak uniknąć podwójnego kodowania SMS, upewnij się, że Twój kod nie nakłada funkcji kodującej (takiej jak urlencode lub utf8_encode) na ciąg znaków, który jest już przetwarzany przez Twoją bibliotekę HTTP. Wysyłanie podwójnie zakodowanych danych skutkuje otrzymywaniem przez klientów nieczytelnych wiadomości zawierających ciągi dziwnych symboli.
Szczególny przypadek: profil kodowania wideo SMS/MMS (preset)
W dziedzinie telekomunikacji mobilnej można czasem spotkać się z pojęciem profilu kodowania wideo SMS/MMS. W przeciwieństwie do kodowania tekstu (GSM-7 lub UCS-2), ten profil (preset) dotyczy kompresji i formatowania plików multimedialnych (filmów, animacji) wysyłanych jako MMS.
Sieci komórkowe narzucają bardzo rygorystyczne limity rozmiaru dla wiadomości MMS (często poniżej 300 KB lub 600 KB w zależności od operatora). Profil kodowania wideo pozwala drastycznie zmniejszyć rozdzielczość i przepływność (bitrate) wideo, aby mogło ono zostać przesłane przez bramkę operatora bez odrzucenia. Jeśli Twoim jedynym celem jest wysyłanie powiadomień tekstowych lub przypomnień operacyjnych, nie musisz martwić się tymi skomplikowanymi ustawieniami.
Najczęściej zadawane pytania dotyczące kodowania SMS
Oto odpowiedzi na najczęściej zadawane pytania dotyczące zarządzania kodowaniem i znakami specjalnymi podczas wysyłania biznesowych wiadomości SMS.
Dlaczego jeden polski znak diakrytyczny może podwoić cenę mojego SMS-a?
Znaki takie jak „ą”, „ę”, „ł”, „ś” czy „ż” nie wchodzą w skład standardowego alfabetu GSM-7. Gdy tylko użyjesz jednego z tych znaków, Twoje oprogramowanie do wysyłki przełącza całą wiadomość w tryb Unicode (UCS-2). Limit na jeden SMS spada wtedy ze 160 do 70 znaków. Jeśli Twój tekst przekracza 70 znaków, zostaje on podzielony na dwa segmenty, co podwaja koszt wysyłki u tradycyjnych operatorów.
Jak mogę przetestować kodowanie moich SMS-ów przed ich wysłaniem?
W sieci dostępne są narzędzia do testowania segmentów SMS (często nazywane „SMS Length Calculator”). Pozwalają one wkleić tekst i natychmiast sprawdzić, czy niewidoczny znak lub emotikon wymusza przełączenie na Unicode, a także pokazują dokładną liczbę segmentów, za które naliczy opłatę Twój dostawca.
W jaki sposób MySMSGate pozwala uniknąć dodatkowych kosztów związanych z Unicode?
W przeciwieństwie do klasycznych interfejsów API (Twilio, Plivo), które naliczają opłaty za każdy segment osobno, MySMSGate stosuje jedną, stałą stawkę 0,02 $ za wysłaną wiadomość, niezależnie od jej długości, użycia znaków specjalnych czy emotikonów. Twoje wiadomości przechodzą bezpośrednio przez Twój własny smartfon z systemem Android połączony z naszą platformą, co eliminuje zawyżone opłaty za segmentację.
Comments (0)
Be the first to comment!