Při budování automatizovaných systémů nebo odesílání zákaznických upozornění je mnoho majitelů firem a vývojářů šokováno, když zjistí, že jejich měsíční účty za SMS jsou dvakrát vyšší, než očekávali. Tento komplexní průvodce přináší tabulku s počtem znaků, které speciální znaky v SMS vyžadují, a pomůže vám pochopit, jak může skrytá změna kódování drasticky zvýšit vaše náklady na zprávy.
Proč speciální znaky mění délku a cenu SMS
V telekomunikačních standardech se textové zprávy neúčtují podle hrubého počtu slov, která napíšete, ale podle "segmentů." Standardní segment SMS je kódován pomocí znakové sady GSM-7, která umožňuje až 160 znaků na zprávu. Jakmile však vložíte byť jediný znak mimo tuto standardní sadu – například emoji, azbuku nebo dokonce „chytré uvozovky“ zkopírované z Microsoft Wordu – kódování celé zprávy se přepne na UCS-2 (Unicode).
To, že jsou SMS zprávy omezeny na 160 znaků, i když obsahují speciální znaky a emoji, je při kódování UCS-2 běžný omyl. Ve skutečnosti platí, že jakmile je detekován jediný znak mimo GSM, maximální limit znaků na segment okamžitě klesne ze 160 znaků na pouhých 70 znaků. Pokud má vaše zpráva 71 znaků a obsahuje jedno emoji, tradiční poskytovatelé API jako Twilio nebo Plivo ji rozdělí a naúčtují jako dva samostatné SMS segmenty.
Pochopení toho, které speciální znaky obvykle ovlivňují zprávy, je zásadní pro udržení nízkých provozních nákladů – zvláště pokud provozujete místní firmu, jako je klinika, salon nebo servis, a posíláte svým zákazníkům připomenutí schůzek.
Vysvětlení kódování GSM-7 vs. UCS-2
GSM-7 je 7bitový standard kódování znaků navržený speciálně pro SMS. Obsahuje většinu latinských znaků, číslic a základní interpunkce. UCS-2 je 16bitový standard kódování, který dokáže reprezentovat téměř jakýkoli znak v jakémkoli jazyce, včetně emoji, ale vyžaduje dvojnásobné množství dat na znak. Tato datová režie je důvodem, proč mobilní operátoři při aktivaci UCS-2 snižují kapacitu segmentu na 70 znaků.
Přehledná tabulka speciálních znaků pro SMS
Níže naleznete tabulku s počtem znaků, které speciální znaky v SMS vyžadují. Tato tabulka popisuje standardní znaky GSM-7, rozšířené znaky GSM-7 (které v rámci limitu 160 znaků zabírají 2 místa) a znaky UCS-2, které vynucují přísný limit 70 znaků.
| Kategorie znaků | Příklady znaků | Bitů na znak | Váha znaku v SMS | Max. limit segmentu |
|---|---|---|---|---|
| Základní GSM-7 | A-Z, a-z, 0-9, mezery, jednoduchá interpunkce (., !, ?, @, $, atd.) | 7 bitů | 1 znak | 160 znaků |
| Rozšířené GSM-7 | ^, {, }, [, ], ~, |, \, € | 14 bitů | 2 znaky | 160 znaků (každý rozšířený znak se počítá za 2) |
| UCS-2 (Unicode) | á, í, ó, ñ, ’ (chytré uvozovky), emoji (😀), azbuka, arabština | 16 bitů | Vynutí Unicode pro celou zprávu | 70 znaků |
Jak ukazuje tabulka, použití rozšířeného znaku GSM-7, jako je složená závorka „{“ nebo zpětné lomítko „\“, nevynucuje Unicode, ale počítá se jako dva znaky v rámci vašeho limitu 160 znaků. Použití znaku mimo GSM, jako je „á“ (často používané ve španělských konfiguracích sms y caracteres especiales) nebo typografický apostrof „’“, však okamžitě sníží limit segmentu vaší zprávy na 70 znaků.
Jak speciální znaky ovlivňují cenu SMS
Abychom pochopili, jaký vliv mají speciální znaky na cenu SMS (v originále los caracteres especiales que impacto tienen en el coste de los sms>m>), podívejme se na praktický příklad. Představte si, že provozujete zubní kliniku a posíláte následující připomenutí schůzky:
„Ahoj Jane, tvoje schůzka je naplánována na zítra v 15:00. Odpověz pro potvrzení, nebo nám zavolej, pokud potřebuješ termín změnit! Él“
Tato zpráva má 123 znaků. Pokud použijete standardní „E“ místo „É“ s čárkou, zpráva se odešle v kódování GSM-7. Pohodlně se vejde do limitu 160 znaků a bude vás stát přesně 1 SMS segment.
Kvůli písmenu „É“ s čárkou je však zpráva nuceně odeslána v UCS-2. Limit segmentu je nyní 70 znaků. Vaše zpráva o délce 123 znaků se rozdělí do dvou segmentů (první segment má 67 znaků, druhý 56 znaků kvůli segmentačním hlavičkám). Tradiční API brány vám tak naúčtují 2 SMS místo 1.
Pokud používáte tradiční poskytovatele, může toto segmentování zdvojnásobit nebo ztrojnásobit vaši měsíční fakturu. Proto mnoho firem hledá alternativu k Twilio nebo čte průvodce nejlevnějšími SMS API, aby se vyhnuly zbytečným příplatkům za segmenty.
Jak se vyhnout speciálním znakům v SMS?
Pokud chcete udržet své zprávy v limitu 160 znaků a vyhnout se nečekaným nákladům, musíte texty svých SMS aktivně čistit. Zde jsou praktické strategie, jak se vyhnout speciálním znakům v SMS:
- Čistěte zkopírovaný text: Mnoho šablon v CRM obsahuje „chytré“ interpunkční znaménka. Například zkopírovaný apostrof (’) nebo čárka z editoru formátovaného textu mohou zabránit správnému doručení nebo aktivovat Unicode. Jako reálný příklad lze uvést, že některé interní podnikové systémy vydávají poradcům krátké varování: „speciální znaky v odchozích SMS: vezměte prosím na vědomí, že každá odeslaná odchozí SMS musí mít maximálně 250 znaků. Pokud byla vaše zpráva zkopírována a vložena z uložené šablony a obsahuje čárku (,) nebo apostrof ('), odstraňte prosím tento speciální znak a před odesláním jej zadejte znovu ručně“>m>. Nahrazení chytrých uvozovek standardními rovnými uvozovkami (') zajistí kompatibilitu s GSM-7.
- Nahrazujte ne-GSM znaky programově: Pokud váš systém generuje SMS dynamicky, implementujte transliterační funkci, která nahradí znaky jako „á“ za „a“, „é“ za „e“ a „““ za „"“.
- Řešte omezení specifická pro jednotlivé platformy: Pokud vyvíjíte na podnikových low-code platformách, dávejte pozor na to, jak zacházejí s kódováním – například při správě speciálních znaků v integracích OutSystems GSM, kde mohou textové proměnné během serializace JSON automaticky převádět standardní interpunkci na ekvivalenty v Unicode.
Ukázka kódu v Pythonu pro vyčištění textu SMS
Zde je jednoduchá funkce v Pythonu pro odstranění speciálních znaků, které SMS nerozpozná nebo které by vyvolaly drahé kódování UCS-2:
import unicodedata
def sanitize_for_gsm7(text):
# Map common smart punctuation to GSM-7 equivalents
replacements = {
'\u2018': "'", '\u2019': "'", # Smart single quotes
'\u201c': '"', '\u201d': '"', # Smart double quotes
'\u2013': '-', '\u2014': '-', # En and em dashes
'\u20ac': 'EUR' # Replace Euro sign if needed
}
for unicode_char, gsm_char in replacements.items():
text = text.replace(unicode_char, gsm_char)
# Normalize accents (e.g., é to e)
normalized = unicodedata.normalize('NFD', text)
gsm7_text = "".join([c for c in normalized if not unicodedata.combining(c)])
return gsm7_text
message = "Hello! Your appointment is confirmed for tomorrow é."
print(sanitize_for_gsm7(message))
# Output: "Hello! Your appointment is confirmed for tomorrow e."
Zbavte se obav z kódování s MySMSGate
Pro místní služby, školy a kliniky je starat se o kódování znaků, limity segmentů a složité účtování zbytečnou starostí. Zde se stává zásadním rozhodnutí mezi tradiční SMS bránou a SMS API.
MySMSGate tento problém zcela řeší. Místo směrování zpráv přes drahé sítě operátorů se složitým účtováním podle počtu segmentů promění MySMSGate váš vlastní telefon s Androidem a SIM kartu v SMS bránu.
Zde je návod, jak MySMSGate mění pravidla hry pro firmy, které chtějí ušetřit:
- Paušální ceny: Účtujeme fixní poplatek 0,02 $ za odeslanou zprávu bez ohledu na délku, kódování znaků nebo segmenty. Nemusíte se bát, že by emoji nebo znak s diakritikou zdvojnásobil váš účet.
- Používejte vlastní číslo: Zprávy se odesílají přímo ze SIM karty vašeho telefonu s Androidem. Vaši zákazníci uvidí místní, známé mobilní číslo, což zvyšuje míru otevření a odpovědí.
- Žádné složité registrace: Vyhněte se složitým registracím 10DLC, schvalování operátory a měsíčním poplatkům za značku, které jsou spojené s tradičními API jako Twilio.
- Podpora Dual SIM a více zařízení: Spravujte více telefonů a SIM karet z jednoho přehledného panelu a pro každou konverzaci se zákazníkem si zvolte přesně tu linku, ze které chcete zprávu odeslat.
Často kladené otázky
Přečtěte si tyto časté dotazy týkající se kódování znaků SMS, speciálních znaků a limitů zpráv.
Které speciální znaky snižují limit SMS na 70 znaků?
Jakýkoli znak, který není zahrnut ve standardní znakové sadě GSM-7, vynutí kódování UCS-2, což sníží limit na 70 znaků. Patří sem emoji, nelatinská písma (azbuka, arabština, řečtina, hebrejština) a některé znaky s diakritikou nebo stylizovaná interpunkce (například typografické uvozovky).
Počítají se mezery do SMS jako znaky?
Ano, každá mezera se počítá jako jeden znak v kódování GSM-7 i UCS-2.
Proč mi moje SMS platforma účtuje více zpráv, když jsem odeslal pouze jednu?
Pokud vaše zpráva překročila 160 znaků (v GSM-7) nebo 70 znaků (v UCS-2), operátor ji rozdělil do několika segmentů. Tradiční API vám účtují poplatky za segment, což znamená, že jedna dlouhá zpráva vás může snadno stát dvoj- až trojnásobek základní sazby.
Jak mohu otestovat, zda moje SMS obsahuje speciální znaky?
Můžete použít online kalkulačky SMS segmentů nebo spustit jednoduchý čisticí skript na svém backendu a zjistit, zda váš text aktivuje kódování UCS-2 Unicode před jeho odesláním poskytovateli API.
Comments (0)
Be the first to comment!