Quando si creano sistemi automatizzati o si inviano notifiche ai clienti, molti titolari di aziende e sviluppatori rimangono sorpresi nello scoprire che le bollette mensili degli SMS sono doppie rispetto al previsto. Questa guida completa fornisce una tabella con il numero di caratteri necessari per i caratteri speciali nell'invio di SMS, aiutandoti a capire come i passaggi di codifica nascosti possano gonfiare drasticamente i costi dei messaggi.
Perché i caratteri speciali modificano la lunghezza e il costo degli SMS
Negli standard delle telecomunicazioni, i messaggi di testo non vengono fatturati in base al numero effettivo di parole scritte, ma in base ai "segmenti". Un segmento SMS standard è codificato utilizzando il set di caratteri GSM-7, che consente fino a 160 caratteri per messaggio. Tuttavia, nel momento in cui si introduce un singolo carattere al di fuori di questo set standard, come un'emoji, una lettera cirillica o persino una virgoletta speciale ("smart quote") copiata da Microsoft Word, l'intera codifica del messaggio passa a UCS-2 (Unicode).
Sotto la codifica UCS-2, credere che i messaggi SMS siano limitati a 160 caratteri, anche quando includono caratteri speciali ed emoji è un malinteso comune. In realtà, una volta rilevato un singolo carattere non GSM, il limite massimo di caratteri per segmento scende istantaneamente da 160 a soli 70 caratteri. Se il tuo messaggio è lungo 71 caratteri e contiene un'emoji, verrà suddiviso e addebitato come due segmenti SMS separati dai fornitori di API tradizionali come Twilio o Plivo.
Capire quali caratteri speciali di lavoro influiscono sui messaggi è fondamentale per mantenere bassi i costi operativi, specialmente se gestisci un'attività di servizi locali come una clinica, un salone o un'officina di riparazioni che invia promemoria di appuntamenti ai clienti.
Spiegazione delle codifiche GSM-7 e UCS-2
Il GSM-7 è uno standard di codifica dei caratteri a 7 bit progettato specificamente per gli SMS. Contiene la maggior parte dei caratteri latini, dei numeri e della punteggiatura di base. L'UCS-2 è uno standard di codifica a 16 bit in grado di rappresentare quasi tutti i caratteri in qualsiasi lingua, comprese le emoji, ma richiede il doppio dei dati per carattere. Questo sovraccarico di dati è il motivo per cui le reti degli operatori riducono la capacità del segmento a 70 caratteri quando viene attivata la codifica UCS-2.
La tabella definitiva di mappatura dei caratteri speciali per SMS
Di seguito è riportata una tabella con il numero di caratteri di cui hanno bisogno i caratteri speciali per inviare SMS. Questa tabella illustra i caratteri GSM-7 standard, i caratteri GSM-7 estesi (che richiedono 2 spazi di carattere all'interno del limite di 160) e i caratteri UCS-2 che impongono il limite rigido di 70 caratteri.
| Categoria del carattere | Esempi di caratteri | Bit per carattere | Peso del carattere nell'SMS | Limite massimo del segmento |
|---|---|---|---|---|
| GSM-7 Base | A-Z, a-z, 0-9, spazi, punteggiatura semplice (., !, ?, @, $, ecc.) | 7 bit | 1 carattere | 160 caratteri |
| GSM-7 Esteso | ^, {, }, [, ], ~, |, \, € | 14 bit | 2 caratteri | 160 caratteri (ogni carattere esteso conta come 2) |
| UCS-2 (Unicode) | á, í, ó, ñ, ’ (virgoletta speciale), emoji (😀), cirillico, arabo | 16 bit | Forza l'intero messaggio in Unicode | 70 caratteri |
Come mostrato nella tabella, l'uso di un carattere GSM-7 esteso come una parentesi graffa "{" o un backslash "\" non forza l'uso di Unicode, ma conta come due caratteri rispetto al limite di 160 caratteri. Tuttavia, l'uso di un carattere non GSM come "á" (spesso utilizzato nelle configurazioni spagnole di sms y caracteres especiales) o un apostrofo curvo "’" ridurrà immediatamente il limite del segmento di messaggio a 70 caratteri.
Come i caratteri speciali influiscono sui costi degli SMS
Per capire los caracteres especiales que impacto tienen en el coste de los sms (l'impatto che i caratteri speciali hanno sul costo degli SMS), diamo un'occhiata a un esempio pratico. Immagina di gestire una clinica odontoiatrica e di inviare il seguente promemoria di appuntamento:
"Ciao John, il tuo appuntamento è programmato per domani alle 15:00. Rispondi per confermare o chiamaci se hai bisogno di riprogrammare! Él"
Questo messaggio è lungo 123 caratteri. Se utilizzi la "E" standard invece della "É" accentata, il messaggio viene inviato in GSM-7. Rientra comodamente nel limite di 160 caratteri, costandoti esattamente 1 segmento SMS.
Tuttavia, a causa della "É" accentata, il messaggio viene forzato in UCS-2. Il limite del segmento è ora di 70 caratteri. Il tuo messaggio di 123 caratteri viene diviso in due segmenti (il primo segmento è di 67 caratteri, il secondo è di 56 caratteri a causa degli header di segmentazione). I gateway API tradizionali ti addebiteranno 2 messaggi SMS invece di 1.
Se utilizzi provider tradizionali, questa segmentazione può raddoppiare o triplicare la tua fattura mensile. Questo è il motivo per cui molte aziende cercano un'alternativa a Twilio o consultano una guida alle API SMS più economiche per evitare costi aggiuntivi arbitrari basati sui segmenti.
Come posso evitare i caratteri speciali negli SMS?
Se desideri mantenere i tuoi messaggi entro il limite di 160 caratteri ed evitare costi imprevisti, devi igienizzare attivamente il testo dei tuoi SMS. Ecco alcune strategie pratiche su come evitare i caratteri speciali negli SMS:
- Igienizzare il testo copiato e incollato: Molti modelli CRM contengono punteggiatura "intelligente" (smart). Ad esempio, un apostrofo (’) o una virgola copiati da un editor di testo avanzato possono impedire una consegna pulita o attivare l'Unicode. Come esempio reale, alcuni sistemi aziendali interni emettono un breve avviso per i consulenti: "caratteri speciali sms in uscita: si prega di notare che qualsiasi sms in uscita inviato deve essere di 250 caratteri o meno. se il messaggio è stato copiato e incollato da un modello salvato e contiene una virgola (,) o un apostrofo ('), si prega di rimuovere il carattere speciale e poi reinserirlo prima dell'invio". Sostituire le virgolette intelligenti con virgolette dritte standard (') garantisce la conformità al GSM-7.
- Sostituire i caratteri non GSM in modo programmatico: Se il tuo sistema genera SMS in modo dinamico, implementa una funzione di traslitterazione per sostituire caratteri come "á" con "a", "é" con "e" e "“" con """.
- Gestire le limitazioni specifiche della piattaforma: Se sviluppi su piattaforme low-code aziendali, fai attenzione a come gestiscono la codifica, ad esempio nella gestione dei caratteri speciali nelle integrazioni GSM OutSystems, dove le variabili di testo potrebbero convertire automaticamente la punteggiatura standard in equivalenti Unicode durante la serializzazione JSON.
Snippet di codice Python per pulire il testo degli SMS
Ecco una semplice funzione Python per rimuovere i caratteri speciali che gli SMS non riconoscono o che forzerebbero la costosa codifica 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."
Eliminare l'ansia da codifica con MySMSGate
Per le attività di servizi locali, le scuole e le cliniche, preoccuparsi della codifica dei caratteri, dei limiti dei segmenti e di strutture di fatturazione complesse è un mal di testa inutile. È qui che la scelta tra un tradizionale SMS gateway e un'API SMS diventa fondamentale.
MySMSGate risolve completamente questo problema. Invece di instradare i tuoi messaggi attraverso costose reti di operatori con prezzi rigidi moltiplicati per segmento, MySMSGate trasforma il tuo telefono Android e la tua scheda SIM in un gateway SMS.
Ecco come MySMSGate cambia le carte in tavola per le aziende attente ai costi:
- Tariffa fissa: Addebitiamo una tariffa fissa di $0.02 per messaggio inviato, indipendentemente dalla lunghezza, dalla codifica dei caratteri o dai segmenti. Non devi preoccuparti se un'emoji o un carattere accentato raddoppierà la tua bolletta.
- Usa il tuo numero: I messaggi vengono inviati direttamente dalla scheda SIM del tuo telefono Android. I tuoi clienti vedranno un numero di cellulare locale e riconoscibile, aumentando i tassi di risposta e di apertura.
- Nessuna registrazione complessa: Evita le complesse registrazioni 10DLC, le approvazioni degli operatori e i costi mensili del brand associati alle API tradizionali come Twilio.
- Supporto Dual SIM e multi-dispositivo: Gestisci più telefoni e schede SIM da un'unica dashboard, scegliendo esattamente da quale linea inviare per ogni conversazione con i clienti.
Domande frequenti
Consulta queste domande comuni relative alla codifica dei caratteri SMS, ai caratteri speciali e ai limiti dei messaggi.
Quali caratteri speciali riducono il limite degli SMS a 70 caratteri?
Qualsiasi carattere non incluso nel set di caratteri GSM-7 standard forzerà la codifica UCS-2, riducendo il limite a 70 caratteri. Ciò include le emoji, gli alfabeti non latini (cirillico, arabo, greco, ebraico) e alcune lettere accentate o punteggiatura stilizzata (come le virgolette curve intelligenti).
Gli spazi contano come caratteri in un SMS?
Sì, ogni spazio conta come un singolo carattere sia negli standard di codifica GSM-7 che UCS-2.
Perché la mia piattaforma SMS mi addebita più messaggi quando ne ho inviato solo uno?
Se il tuo messaggio ha superato i 160 caratteri (in GSM-7) o i 70 caratteri (in UCS-2), l'operatore ha suddiviso il messaggio in più segmenti. Le API tradizionali fatturano per segmento, il che significa che un singolo messaggio lungo può facilmente costarti il doppio o il triplo della tariffa base.
Come posso verificare se il mio messaggio SMS contiene caratteri speciali?
Puoi utilizzare calcolatori di segmenti SMS online o eseguire un semplice script di pulizia nel tuo backend per rilevare se il tuo testo attiva la codifica Unicode UCS-2 prima di inviarlo al tuo fornitore di API.
Comments (0)
Be the first to comment!