Jeśli zauważyłeś, że Twoje rachunki za SMS-y gwałtownie rosną, ponieważ Twój system wysyła wielokrotne wiadomości z powodu kodowania Unicode, to jak temu zapobiec jest prawdopodobnie najpilniejszym pytaniem, które zaprząta Ci głowę. Pojedynczy przypadkowy cudzysłów drukarski lub emoji mogą natychmiast zamienić standardową, tanią wiadomość tekstową w trzy osobno płatne segmenty, drenując Twój budżet marketingowy i operacyjny.
Krok 1: Zrozum, dlaczego Unicode wymusza podział na wiele segmentów SMS
Aby powstrzymać bramkę SMS przed dzieleniem pojedynczych wiadomości na wiele płatnych segmentów, musisz najpierw zrozumieć mechanizmy techniczne leżące u podstaw kodowania SMS. Tradycyjne sieci telekomunikacyjne używają dwóch głównych standardów kodowania wiadomości tekstowych: GSM-7 oraz UCS-2 (Unicode).
W standardowym kodowaniu GSM-7 pojedynczy segment SMS może zawierać do 160 znaków. Ten zestaw znaków obejmuje standardowe litery łacińskie (A-Z, a-z), cyfry (0-9) oraz kilka popularnych znaków interpunkcyjnych. Jednak w momencie, gdy treść wiadomości zawiera choćby jeden znak spoza tego podstawowego zestawu — taki jak cudzysłów drukarski (’), litera ze znakiem diakrytycznym (á, é, ö) lub emoji — kodowanie całej wiadomości automatycznie przełącza się na UCS-2.
Gdy Twoja wiadomość przełącza się na kodowanie Unicode UCS-2, limit znaków na segment spada ze 160 do zaledwie 70 znaków. Jeśli Twoja wiadomość ma 140 znaków, bez problemu zmieści się w jednym segmencie GSM-7. Jednak w UCS-2 te same 140 znaków wymaga już dwóch osobnych segmentów. Tradycyjni dostawcy API, tacy jak Twilio, Vonage i MessageBird, rozliczają Cię za każdy segment, co oznacza, że koszt pojedynczej wiadomości natychmiast rośnie dwu- lub trzykrotnie.
| Standard kodowania | Maks. liczba znaków (1 segment) | Maks. liczba znaków (wielosegmentowe) | Popularne znaki wyzwalające |
|---|---|---|---|
| GSM-7 | 160 znaków | 153 znaki na segment | Standardowe litery angielskie, cyfry, podstawowa interpunkcja |
| UCS-2 (Unicode) | 70 znaków | 67 znaków na segment | Emoji, cudzysłowy drukarskie (“, ”), alfabety niełacińskie, akcenty (é, ñ) |
To zachowanie wyjaśnia, dlaczego Twoja aplikacja wysyła wielokrotne SMS-y z powodu Unicode. Aby rozwiązać ten problem, musisz albo rygorystycznie oczyszczać wprowadzane dane, albo przejść na tanie API SMS, które nie nakłada kar za wysyłanie dłuższych, nowoczesnych wiadomości tekstowych.
Krok 2: Usuń lub zastąp znaki Unicode w swoim kodzie
Najszybszym programistycznym sposobem na powstrzymanie podziałów Unicode jest oczyszczenie treści wiadomości przed wysłaniem jej do bramki SMS. Możesz napisać funkcję pomocniczą w swoim backendzie, aby usunąć znaki spoza standardu GSM-7 lub zastąpić je ich najbliższymi odpowiednikami GSM-7.
Oto jak możesz to zaimplementować w różnych językach programowania za pomocą prostych wyrażeń regularnych (regex) i reguł zamiany ciągów znaków.
Implementacja w Pythonie
W Pythonie możesz użyć modułu unicodedata do normalizacji ciągów znaków, usuwania akcentów i konwersji cudzysłowów drukarskich z powrotem na standardowe proste cudzysłowy:
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'[^
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! "
Implementacja w Node.js (JavaScript)
Dla programistów JavaScript, możesz użyć podobnego podejścia z wykorzystaniem wyrażeń regularnych, aby usunąć wszelkie znaki, które nie są zgodne ze standardem 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 = /[^
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! "
Krok 3: Konwertuj cudzysłowy drukarskie i akcenty na odpowiedniki GSM-7
Często znaki Unicode trafiają do Twoich wiadomości poprzez kopiowanie i wklejanie z procesorów tekstu, takich jak Microsoft Word lub Google Docs. Te programy automatycznie konwertują standardowe proste cudzysłowy (' i ") na zakrzywione cudzysłowy drukarskie (‘, ’, “, ”).
Aby zapobiec wysyłaniu przez system wielu SMS-ów z powodu tych drobnych zmian, możesz skonfigurować tabelę mapowania znaków. Pozwala to zachować czytelność tekstu bez wyzwalania limitu 70 znaków dla UCS-2.
- Konwertuj ‘ i ’ na standardowy apostrof '
- Konwertuj “ i ” na standardowy cudzysłów "
- Konwertuj półpauzy (—) i pauzy (―) na standardowe łączniki (-)
- Konwertuj litery z akcentami, takie jak é, á, í na ich odpowiedniki bez akcentów e, a, i
Dzięki precyzyjnemu mapowaniu tych znaków zachowujesz profesjonalny wygląd swoich wiadomości, jednocześnie rygorystycznie mieszcząc się w limicie jednego segmentu. Jest to szczególnie pomocne dla lokalnych firm usługowych, takich jak gabinety stomatologiczne, warsztaty naprawcze i szkoły językowe, które muszą utrzymywać niskie koszty operacyjne przy jednoczesnym wysyłaniu automatycznych powiadomień o wizytach.
Krok 4: Przejdź na bramkę SMS z ryczałtowym rozliczaniem segmentów
Choć usuwanie znaków Unicode jest funkcjonalnym obejściem problemu, zmusza Cię do kompromisów w kwestii wizerunku i tonu Twojej marki. W 2026 roku klienci oczekują naturalnej komunikacji, która często obejmuje emoji, lokalne akcenty i profesjonalne formatowanie. Ograniczanie komunikacji z klientami do podstawowych znaków ASCII tylko po to, by uniknąć wysokich rachunków telefonicznych, nie jest już konieczne.
Tradycyjni agregatorzy chmurowi, tacy jak Twilio, Plivo i MessageBird, wymuszają rygorystyczne rozliczanie za segment, ponieważ muszą płacić operatorom opłaty za każdy pakiet danych. Dodatkowo korzystanie z tych starszych platform wymaga przejścia przez skomplikowaną rejestrację A2P SMS, zatwierdzenia operatorów 10DLC oraz opłacania comiesięcznych opłat abonamentowych.
Coraz popularniejszą alternatywą jest korzystanie z bramki SMS opartej na systemie Android, takiej jak MySMSGate. MySMSGate zmienia Twoje własne telefony z systemem Android i karty SIM w pełni funkcjonalne urządzenia do wysyłania wiadomości SMS. Ponieważ Twoje wiadomości są wysyłane bezpośrednio przez kartę SIM Twojego telefonu (która zazwyczaj zawiera nielimitowane lub bardzo tanie pakiety lokalnych SMS-ów), całkowicie omijasz tradycyjne rozliczenia oparte na segmentach.
MySMSGate pobiera stałą opłatę w wysokości 0,02 USD za wysłany SMS, niezależnie od tego, czy wiadomość zawiera znaki Unicode, emoji, czy składa się z wielu segmentów. Nie ma tu miesięcznych subskrypcji, umów ani opóźnień związanych z rejestracją u operatorów. Jeśli wiadomość nie zostanie dostarczona, środki są automatycznie zwracane na Twoje saldo.
Jeśli szukasz najlepszych alternatyw API SMS pod kątem masowej wysyłki, niezawodności i dostarczalności, przejście na bramkę SMS z systemem Android pozwala ominąć cały problem z rozliczaniem Unicode u samego źródła.
Krok 5: Skonfiguruj zarządzanie wysyłaniem wiadomości tekstowych z wielu numerów telefonów
Dla lokalnych firm usługowych działających w wielu lokalizacjach, zarządzanie infrastrukturą wiadomości może szybko stać się skomplikowane. Jeśli zarządzasz wieloma oddziałami — na przykład pięcioma gabinetami stomatologicznymi lub trzema warsztatami samochodowymi — potrzebujesz systemu, który wspiera zarządzanie wiadomościami tekstowymi z wielu numerów telefonów z poziomu jednego, scentralizowanego interfejsu.
Dzięki MySMSGate możesz podłączyć nieograniczoną liczbę urządzeń z systemem Android do jednego panelu konta. Pozwala to na bezproblemowe zarządzanie wieloma numerami:
- Utwórz konto: Zarejestruj się na MySMSGate, aby pobrać swój klucz API.
- Zainstaluj aplikację na Androida: Pobierz aplikację towarzyszącą MySMSGate na swoje urządzenia z systemem Android.
- Połącz przez kod QR: Zeskanuj kod QR wyświetlony w panelu administracyjnym za pomocą aparatu w każdym telefonie. Spowoduje to natychmiastowe powiązanie urządzeń z Twoim kontem głównym, bez konieczności wpisywania skomplikowanych kluczy API.
- Zarządzaj Dual SIM: Jeśli Twoje telefony obsługują technologię Dual SIM, możesz wybrać, z którego gniazda karty SIM mają być wysyłane wiadomości, bezpośrednio w panelu lub za pomocą wywołania API.
Taka struktura obsługi wielu urządzeń pozwala kierować powiadomienia wychodzące przez lokalne numery, które Twoi klienci już znają, co znacznie poprawia wskaźniki otwarć i odpowiedzi. Wszystkie odpowiedzi przychodzące są automatycznie przekazywane z powrotem do Twojego panelu Web Conversations, umożliwiając dwukierunkowy czat w czasie rzeczywistym bezpośrednio z komputera.
Krok 6: Wyślij swój pierwszy bezpieczny pod kątem Unicode SMS przez REST API
Jeśli jesteś niezależnym programistą, freelancerem lub technicznym właścicielem firmy, integracja MySMSGate z Twoim oprogramowaniem jest niezwykle prosta. Platforma oferuje przejrzyste REST API z jednym punktem końcowym (endpointem), które pozwala na wyzwalanie powiadomień SMS przy minimalnej konfiguracji.
Oto przykład, jak wysłać żądanie POST w celu wysłania wiadomości SMS za pomocą cURL. Zwróć uwagę, że możesz dołączać emoji i specjalne znaki Unicode bez obaw o wzrost kosztów spowodowany podziałem na segmenty:
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
}'Aby uzyskać bardziej szczegółowe implementacje w różnych językach, zapoznaj się z oficjalną dokumentacją API MySMSGate, która zawiera gotowe do wdrożenia fragmenty kodu dla języków Python, Node.js, PHP, Go i Ruby, a także gotowe integracje dla platform automatyzacji, takich jak Zapier, Make.com i n8n.
Często zadawane pytania
Oto odpowiedzi na najczęściej zadawane pytania dotyczące dzielenia SMS-ów z kodowaniem Unicode, limitów znaków oraz struktur rozliczeniowych.
Dlaczego jedno emoji sprawia, że mój SMS jest wysyłany jako kilka wiadomości?
Standardowe wiadomości tekstowe używają kodowania GSM-7, co pozwala na zapisanie do 160 znaków w jednym segmencie. Emoji nie wchodzą w skład zestawu znaków GSM-7. Kiedy dodajesz emoji, operator musi przełączyć całą wiadomość na kodowanie UCS-2 (Unicode), co zmniejsza limit segmentu do 70 znaków. Jeśli Twoja wiadomość jest dłuższa niż 70 znaków, zostaje podzielona na wiele segmentów, a tradycyjne API naliczają opłatę za każdy z nich.
Jak mogę sprawdzić, czy mój tekst zawiera Unicode przed wysłaniem?
Możesz skorzystać z internetowych kalkulatorów długości SMS-ów lub uruchomić proste wyszukiwanie regex w swoim kodzie, aby wykryć znaki spoza GSM-7. Alternatywnie możesz napisać skrypty walidacyjne, które oznaczają lub usuwają znaki spoza GSM-7 z bazy danych przed przekazaniem ich do kolejki SMS-ów wychodzących.
Czy MySMSGate pobiera dodatkowe opłaty za Unicode lub wiadomości wielosegmentowe?
Nie. W przeciwieństwie do tradycyjnych API, takich jak Twilio czy Vonage, które rozliczają się za każdy segment o długości 160 lub 70 znaków, MySMSGate pobiera stałą opłatę w wysokości 0,02 USD za wysłaną wiadomość. Ponieważ wiadomość jest kierowana bezpośrednio przez kartę SIM Twojego telefonu z systemem Android, nie płacisz za segmenty, co pozwala na wysyłanie emoji i długich wiadomości bez obaw o ukryte opłaty.
Czy potrzebuję rejestracji u operatora lub 10DLC, aby korzystać z bramki SMS na Androida?
Nie. Ponieważ MySMSGate kieruje wiadomości przez Twój własny, fizyczny telefon z systemem Android i kartę SIM, Twoje wiadomości są wysyłane jako standardowy ruch typu person-to-person (P2P). Oznacza to, że nie musisz przechodzić skomplikowanej, kosztownej i czasochłonnej rejestracji A2P 10DLC ani czekać na zatwierdzenie przez operatorów.
Comments (0)
Be the first to comment!