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 kodowaniaMaks. liczba znaków (1 segment)Maks. liczba znaków (wielosegmentowe)Popularne znaki wyzwalające
GSM-7160 znaków153 znaki na segmentStandardowe litery angielskie, cyfry, podstawowa interpunkcja
UCS-2 (Unicode)70 znaków67 znaków na segmentEmoji, 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:

  1. Utwórz konto: Zarejestruj się na MySMSGate, aby pobrać swój klucz API.
  2. Zainstaluj aplikację na Androida: Pobierz aplikację towarzyszącą MySMSGate na swoje urządzenia z systemem Android.
  3. 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.
  4. 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.