Pokud jste si všimli, že vaše náklady na SMS prudce rostou, protože váš systém posílá zprávy rozdělené na více částí kvůli Unicode, pak je otázka, jak tomu zabránit, pravděpodobně tou nejnaléhavější, kterou právě řešíte. Jediná nechtěná „chytrá“ uvozovka nebo emoji může okamžitě proměnit standardní, levnou textovou zprávu ve tři samostatně účtované segmenty, což zbytečně odčerpává váš rozpočet na marketing a provoz.

Krok 1: Pochopte, proč Unicode vynucuje rozdělení SMS na více segmentů

Chcete-li zabránit své SMS bráně v rozdělování jednotlivých zpráv do více účtovaných segmentů, musíte nejprve pochopit technické principy kódování SMS. Tradiční telekomunikační sítě používají pro textové zprávy dva hlavní standardy kódování: GSM-7 a UCS-2 (Unicode).

Při standardním kódování GSM-7 může jeden SMS segment obsahovat až 160 znaků. Tato znaková sada zahrnuje standardní latinku (A-Z, a-z), číslice (0-9) a několik běžných interpunkčních znamének. Jakmile však text vaší zprávy obsahuje byť jen jediný znak mimo tuto základní sadu – například oblou uvozovku (’), písmeno s diakritikou (á, é, ö) nebo emoji – kódování celé zprávy se automaticky přepne na UCS-2.

Když se vaše zpráva přepne na kódování UCS-2 Unicode, limit znaků na jeden segment klesne ze 160 znaků na pouhých 70 znaků. Pokud má vaše zpráva délku 140 znaků, snadno se vejde do jednoho segmentu GSM-7. V kódování UCS-2 však stejných 140 znaků vyžaduje dva samostatné segmenty. Tradiční poskytovatelé API jako Twilio, Vonage a MessageBird vám účtují poplatky za segment, což znamená, že se vaše náklady na jedinou zprávu okamžitě zdvojnásobí nebo ztrojnásobí.

u003tr>
Standard kódováníMax. znaků (1 segment)Max. znaků (vícesegmentová zpráva)Běžné spouštěcí znaky
GSM-7160 znaků153 znaků na segmentStandardní anglická písmena, čísla, základní interpunkce
UCS-2 (Unicode)70 znaků67 znaků na segmentEmoji, chytré uvozovky (“, ”), nelatinské abecedy, diakritika (é, ñ)

Toto chování vysvětluje, proč vaše aplikace posílá více SMS kvůli Unicode. Chcete-li to vyřešit, musíte buď striktně ošetřit vstupní data, nebo přejít na levné SMS API, které vás nebude penalizovat za odesílání delších, moderních textových zpráv.

Krok 2: Odstraňte nebo nahraďte Unicode znaky ve svém kódu

Nejrychlejším programovým způsobem, jak zabránit rozdělování kvůli Unicode, je ošetřit text zprávy před jeho odesláním do SMS brány. V backendu můžete napsat pomocnou funkci, která odstraní znaky mimo GSM-7 nebo je nahradí jejich nejbližšími ekvivalenty z GSM-7.

Zde je návod, jak to můžete implementovat v různých programovacích jazycích pomocí jednoduchých regulárních výrazů a pravidel pro nahrazování řetězců.

Implementace v Pythonu

V Pythonu můžete použít modul unicodedata k normalizaci řetězců, odstranění diakritiky a převodu chytrých uvozovek zpět na standardní rovné uvozovky:

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'[^\n\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! "

Implementace v Node.js (JavaScriptu)

Pro vývojáře v JavaScriptu můžete použít podobný přístup s využitím regulárních výrazů k odstranění všech znaků, které neodpovídají standardu 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 = /[^\n\r 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: Převeďte chytré uvozovky a diakritiku na ekvivalenty v GSM-7

Unicode znaky se do vašich zpráv často dostanou kopírováním a vkládáním z textových procesorů, jako je Microsoft Word nebo Google Dokumenty. Tyto procesory automaticky převádějí standardní rovné uvozovky (' a ") na oblé „chytré“ uvozovky (, , , ).

Abyste zabránit tomu, že váš systém bude kvůli těmto drobným změnám posílat více SMS, můžete nastavit tabulku mapování znaků. To vám umožní zachovat čitelnost textu, aniž by došlo ke spuštění limitu 70 znaků pro UCS-2.

  • Převeďte a na standardní apostrof '
  • Převeďte a na standardní uvozovky "
  • Převeďte dlouhé pomlčky () a krátké pomlčky () na standardní spojovníky (-)
  • Převeďte znaky s diakritikou jako é, á, í na jejich varianty bez diakritiky e, a, i

Explicitním mapováním těchto znaků zachováte profesionální vzhled svých zpráv a zároveň striktně dodržíte limit pro jeden segment. To je obzvláště užitečné pro lokální poskytovatele služeb, jako jsou zubní kliniky, autoservisy a jazykové školy, které potřebují udržovat provozní náklady na nízké úrovni při odesílání automatických upozornění na schůzky.

Krok 4: Přejděte na SMS bránu s paušálním účtováním za segment

Ačkoli je odstraňování Unicode znaků funkčním řešením, nutí vás k ústupkům v tónu vaší značky. V roce 2026 zákazníci očekávají přirozenou komunikaci, která často zahrnuje emoji, lokální diakritiku a profesionální formátování. Omezovat komunikaci se zákazníky na základní ASCII znaky jen proto, abyste se vyhnuli vysokým účtům za telekomunikační služby, již není nutné.

Tradiční cloudoví agregátoři jako Twilio, Plivo a MessageBird uplatňují přísné účtování za segment, protože musí platit poplatky operátorům za každý datový balíček. Používání těchto starších platforem navíc vyžaduje složitou registraci A2P SMS, schvalování operátorů pro 10DLC a měsíční opakované poplatky.

Stále populárnější alternativou je použití SMS brány založené na systému Android, jako je MySMSGate. MySMSGate promění vaše vlastní telefony se systémem Android a SIM karty v plně funkční zařízení pro odesílání SMS. Vzhledem k tomu, že jsou vaše zprávy odesílány přímo přes SIM kartu vašeho telefonu (která obvykle obsahuje neomezené nebo výrazně zlevněné balíčky místních SMS), zcela se vyhnete tradičnímu účtování podle segmentů.

MySMSGate účtuje paušální sazbu 0,02 $ za odeslanou SMS, bez ohledu na to, zda vaše zpráva obsahuje Unicode znaky, emoji nebo se skládá z více segmentů. Neplatíte žádné měsíční předplatné, nevážou vás žádné smlouvy a nemusíte čekat na registraci u operátorů. Pokud se zprávu nepodaří doručit, váš zůstatek je automaticky vrácen.

Pokud hledáte nejlepší alternativy SMS API pro srovnání hromadných SMS, spolehlivost a míru doručení, přechod na Android SMS bránu obchází celý problém s účtováním Unicode přímo u zdroje.

Krok 5: Nastavte správu odesílání SMS z více telefonních čísel

Pro lokální poskytovatele služeb působící na více místech se správa komunikační infrastruktury může rychle zkomplikovat. Pokud spravujete více poboček – například pět zubních klinik nebo tři autoservisy – potřebujete systém, který podporuje správu odesílání SMS z více telefonních čísel z jednoho centralizovaného rozhraní.

S MySMSGate můžete k jednomu účtu připojit neomezený počet zařízení Android. To vám umožní bezproblémově spravovat více čísel:

  1. Vytvořte si účet: Zaregistrujte se na MySMSGate a získejte svůj API klíč.
  2. Nainstalujte si aplikaci pro Android: Stáhněte si doprovodnou aplikaci MySMSGate do svých zařízení Android.
  3. Připojte se pomocí QR kódu: Naskenujte QR kód zobrazený na webovém panelu pomocí fotoaparátu každého telefonu. Tím se zařízení okamžitě propojí s vaším hlavním účtem bez nutnosti zadávat složité API klíče.
  4. Spravujte Dual SIM: Pokud vaše telefony podporují Dual SIM, můžete si přímo v panelu nebo v API volání vybrat, ze kterého slotu SIM se mají zprávy odesílat.

Tato struktura s více zařízeními vám umožňuje směrovat odchozí oznámení přes lokální čísla, která vaši zákazníci již znají, což výrazně zvyšuje míru otevření a odpovědí. Všechny příchozí odpovědi jsou automaticky přeposílány zpět do vašeho webového rozhraní Web Conversations, což umožňuje obousměrný chat v reálném čase přímo z vašeho počítače.

Krok 6: Odešlete svou první SMS bezpečnou vůči Unicode přes REST API

Pokud jste nezávislý vývojář, na volné noze nebo technicky zaměřený majitel firmy, integrace MySMSGate do vašeho softwaru je neuvěřitelně jednoduchá. Platforma nabízí přehledné REST API s jedním koncovým bodem, které vám umožní spouštět SMS oznámení s minimálním nastavením.

Zde je příklad, jak provést POST požadavek na odeslání SMS pomocí cURL. Všimněte si, že můžete zahrnout emoji a speciální Unicode znaky, aniž byste se museli obávat navýšení nákladů 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
  }'

Podrobnější implementace pro jednotlivé jazyky naleznete v oficiální dokumentaci k API MySMSGate, která obsahuje ukázky kódu připravené pro produkční nasazení v Pythonu, Node.js, PHP, Go a Ruby, spolu s předpřipravenými integracemi pro automatizační platformy jako Zapier, Make.com a n8n.

Často kladené otázky

Zde jsou odpovědi na nejčastější dotazy týkající se rozdělování SMS kvůli Unicode, limitů znaků a struktur účtování.

Proč jedno emoji způsobí, že se moje SMS odešle jako více zpráv?

Standardní textové zprávy používají kódování GSM-7, které umožňuje až 160 znaků na segment. Emoji nejsou součástí znakové sady GSM-7. Když přidáte emoji, operátor musí přepnout celou zprávu do kódování UCS-2 (Unicode), čím se limit segmentu sníží na 70 znaků. Pokud je vaše zpráva delší než 70 znaků, rozdělí se do více segmentů a tradiční API vám účtují poplatek za každý segment.

Jak mohu před odesláním zkontrolovat, zda můj text obsahuje Unicode?

Mžete použít online kalkulačky délky SMS nebo ve svém kódu spustit jednoduché vyhledávání pomocí regulárních výrazů k detekci znaků mimo GSM-7. Případně můžete napsat validační skripty, které označí nebo odstraní znaky mimo GSM-7 z vaší databáze předtím, než je předáte do fronty odchozích SMS.

Účtuje si MySMSGate příplatky za Unicode nebo vícesegmentové zprávy?

Ne. Na rozdíl od tradičních API jako Twilio nebo Vonage, která účtují poplatky za segment o délce 160 nebo 70 znaků, si MySMSGate účtuje paušální poplatek 0,02 $ za odeslanou zprávu. Vzhledem k tomu, že je zpráva směrována přímo přes SIM kartu vašeho telefonu Android, neplatíte za segment, což vám umožňuje posílat emoji a dlouhé zprávy bez obav ze skrytých poplatků.

Potřebuji pro použití Android SMS brány registraci u operátora nebo registraci 10DLC?

Ne. Vzhledem k tomu, že MySMSGate směruje zprávy přes váš vlastní fyzický telefon Android a SIM kartu, odesílají se vaše zprávy jako standardní person-to-person (P2P) provoz. To znamená, že nemusíte procházet složitou, drahou a zdlouhavou registrací A2P 10DLC ani čekat na schválení operátory.