Al crear sistemas automatizados o enviar notificaciones a clientes, muchos propietarios de negocios y desarrolladores se sorprenden al descubrir que sus facturas mensuales de SMS son el doble de lo esperado. Esta guía completa incluye una tabla con la cantidad de caracteres que requieren los caracteres especiales al enviar SMS, lo que te ayudará a entender cómo los cambios de codificación ocultos pueden inflar drásticamente tus costos de mensajería.
Por qué los caracteres especiales cambian la longitud y el costo de los SMS
En los estándares de telecomunicaciones, los mensajes de texto no se facturan por el número bruto de palabras que escribes, sino por "segmentos". Un segmento de SMS estándar se codifica utilizando el conjunto de caracteres GSM-7, que permite hasta 160 caracteres por mensaje. Sin embargo, en el momento en que introduces un solo carácter fuera de este conjunto estándar (como un emoji, una letra cirílica o incluso una "comilla inteligente" copiada de Microsoft Word), la codificación de todo el mensaje cambia a UCS-2 (Unicode).
Bajo la codificación UCS-2, creer que los mensajes de SMS están limitados a 160 caracteres, incluso cuando incluyen caracteres especiales y emojis es un error común. En realidad, una vez que se detecta un solo carácter que no pertenece a GSM, el límite máximo de caracteres por segmento cae instantáneamente de 160 a solo 70 caracteres. Si tu mensaje tiene 71 caracteres y contiene un emoji, los proveedores de API tradicionales como Twilio o Plivo lo dividirán y lo facturarán como dos segmentos de SMS independientes.
Entender qué caracteres especiales suelen afectar a los mensajes es crucial para mantener bajos tus costos operativos, especialmente si diriges un negocio de servicios locales como una clínica, salón de belleza o taller de reparación que envía recordatorios de citas a sus clientes.
Explicación de la codificación GSM-7 vs. UCS-2
GSM-7 es un estándar de codificación de caracteres de 7 bits diseñado específicamente para SMS. Contiene la mayoría de los caracteres latinos, números y puntuación básica. UCS-2 es un estándar de codificación de 16 bits que puede representar casi cualquier carácter en cualquier idioma, incluidos los emojis, pero requiere el doble de datos por carácter. Esta sobrecarga de datos es la razón por la que las redes de los operadores reducen la capacidad del segmento a 70 caracteres cuando se activa UCS-2.
La tabla definitiva de mapeo de caracteres especiales de SMS
A continuación, se muestra una tabla con la cantidad de caracteres que requieren los caracteres especiales para enviar SMS. Esta tabla detalla los caracteres GSM-7 estándar, los caracteres GSM-7 extendidos (que requieren el espacio de 2 caracteres dentro del límite de 160) y los caracteres UCS-2 que fuerzan el límite estricto de 70 caracteres.
| Categoría de carácter | Ejemplos de caracteres | Bits por carácter | Peso del carácter en el SMS | Límite máximo del segmento |
|---|---|---|---|---|
| GSM-7 Básico | A-Z, a-z, 0-9, espacios, puntuación simple (., !, ?, @, $, etc.) | 7 bits | 1 carácter | 160 caracteres |
| GSM-7 Extendido | ^, {, }, [, ], ~, |, \, € | 14 bits | 2 caracteres | 160 caracteres (cada carácter extendido cuenta como 2) |
| UCS-2 (Unicode) | á, í, ó, ñ, ’ (comilla inteligente), emojis (😀), cirílico, árabe | 16 bits | Fuerza a que todo el mensaje sea Unicode | 70 caracteres |
Como se muestra en la tabla, el uso de un carácter GSM-7 extendido como una llave "{" o una barra invertida "\" no fuerza el uso de Unicode, pero cuenta como dos caracteres para tu límite de 160 caracteres. Sin embargo, el uso de un carácter que no sea GSM como "á" (frecuentemente utilizado en configuraciones de sms y caracteres especiales en español) o un apóstrofe curvo "’" reducirá de inmediato el límite de segmento de tu mensaje a 70 caracteres.
Cómo afectan los caracteres especiales a tus costos de SMS
Para entender los caracteres especiales qué impacto tienen en el coste de los sms, veamos un ejemplo práctico. Imagina que diriges una clínica dental y envías el siguiente recordatorio de cita:
"Hola Juan, tu cita está programada para mañana a las 3:00 PM. ¡Por favor responde para confirmar o llámanos si necesitas reprogramar! Él"
Este mensaje tiene 123 caracteres. Si usas la "E" estándar en lugar de la "É" con acento, el mensaje se envía en GSM-7. Cabe perfectamente dentro del límite de 160 caracteres, costándote exactamente 1 segmento de SMS.
Sin embargo, debido a la "É" acentuada, el mensaje se ve obligado a usar UCS-2. El límite del segmento ahora es de 70 caracteres. Tu mensaje de 123 caracteres se divide en dos segmentos (el primer segmento de 67 caracteres y el segundo de 56 debido a los encabezados de segmentación). Las pasarelas de API tradicionales te facturarán 2 mensajes SMS en lugar de 1.
Si utilizas proveedores tradicionales, esta segmentación puede duplicar o triplicar tu factura mensual. Es por eso que muchas empresas buscan una alternativa a Twilio o consultan una guía de las API de SMS más baratas para evitar cargos adicionales arbitrarios basados en segmentos.
¿Cómo evito los caracteres especiales en los SMS?
Si deseas mantener tus mensajes dentro del límite de 160 caracteres y evitar costos inesperados, debes limpiar de forma activa el contenido de tus SMS. Aquí tienes algunas estrategias prácticas sobre cómo evitar caracteres especiales en los SMS:
- Limpia el texto copiado y pegado: Muchas plantillas de CRM contienen puntuación "inteligente". Por ejemplo, un apóstrofe curvo (’) o una coma copiados de un editor de texto enriquecido pueden impedir una entrega limpia o activar Unicode. Como ejemplo del mundo real, algunos sistemas empresariales internos emiten una breve advertencia a los asesores: "caracteres especiales en sms salientes: por favor, ten en cuenta que cualquier sms saliente enviado debe tener 250 caracteres o menos. si tu mensaje ha sido copiado y pegado de una plantilla guardada y contiene una coma (,) o un apóstrofe ('), por favor elimina el carácter especial y luego vuelve a escribirlo antes de enviar". Reemplazar las comillas inteligentes por comillas rectas estándar (') garantiza la compatibilidad con GSM-7.
- Reemplaza los caracteres que no sean GSM mediante programación: Si tu sistema genera SMS de forma dinámica, implementa una función de transliteración para cambiar caracteres como "á" por "a", "é" por "e" y "“" por """.
- Maneja las limitaciones específicas de cada plataforma: Si estás desarrollando en plataformas empresariales de código bajo (low-code), ten en cuenta cómo manejan la codificación, como la gestión de caracteres especiales en integraciones de GSM OutSystems, donde las variables de texto pueden convertir automáticamente la puntuación estándar en equivalentes Unicode durante la serialización JSON.
Fragmento de código Python para limpiar texto de SMS
Aquí tienes una función simple de Python para eliminar los caracteres especiales que el SMS no reconoce o que obligarían a usar la costosa codificació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."
Elimina la ansiedad por la codificación con MySMSGate
Para los negocios de servicios locales, escuelas y clínicas, preocuparse por la codificación de caracteres, los límites de segmentos y las complejas estructuras de facturación es un dolor de cabeza innecesario. Aquí es donde la elección entre una pasarela de SMS gateway vs SMS API tradicional se vuelve crítica.
MySMSGate resuelve este problema por completo. En lugar de enrutar tus mensajes a través de costosas redes de operadores con tarifas estrictas multiplicadas por segmentos, MySMSGate convierte tu propio teléfono Android y tarjeta SIM en una pasarela de SMS.
Así es como MySMSGate cambia las reglas del juego para las empresas que cuidan sus costos:
- Tarifa plana: Cobramos una tarifa plana de $0.02 por mensaje enviado, sin importar la longitud, la codificación de caracteres o los segmentos. No tienes que preocuparte de si un emoji o un carácter acentuado duplicará tu factura.
- Usa tu propio número: Los mensajes se envían directamente desde la tarjeta SIM de tu teléfono Android. Tus clientes verán un número móvil local reconocible, lo que aumenta las tasas de respuesta y de apertura.
- Sin registros complejos: Evita los complejos registros 10DLC, las aprobaciones de los operadores y las tarifas de marca mensuales asociadas con las API tradicionales como Twilio.
- Soporte para doble SIM y multidispositivo: Administra múltiples teléfonos y tarjetas SIM desde un único panel de control, eligiendo exactamente desde qué línea enviar para cada conversación con el cliente.
Preguntas frecuentes
Revisa estas preguntas comunes sobre la codificación de caracteres de SMS, los caracteres especiales y los límites de mensajería.
¿Qué caracteres especiales reducen el límite de SMS a 70 caracteres?
Cualquier carácter que no esté incluido en el conjunto de caracteres estándar GSM-7 forzará la codificación UCS-2, reduciendo el límite a 70 caracteres. Esto incluye emojis, alfabetos no latinos (cirílico, árabe, griego, hebreo) y ciertas letras acentuadas o puntuación estilizada (como las comillas inteligentes curvas).
¿Los espacios cuentan como caracteres en un SMS?
Sí, cada espacio cuenta como un solo carácter tanto en el estándar de codificación GSM-7 como en el UCS-2.
¿Por qué mi plataforma de SMS me cobra por múltiples mensajes cuando solo envié uno?
Si tu mensaje superó los 160 caracteres (en GSM-7) o los 70 caracteres (en UCS-2), el operador dividió el mensaje en múltiples segmentos. Las API tradicionales te facturan por segmento, lo que significa que un solo mensaje largo puede costarte fácilmente el doble o el triple de la tarifa base.
¿Cómo puedo probar si mi mensaje de SMS contiene caracteres especiales?
Puedes usar calculadoras de segmentos de SMS en línea o ejecutar un script de limpieza simple en tu backend para detectar si tu texto activa la codificación Unicode UCS-2 antes de enviarlo a tu proveedor de API.
Comments (0)
Be the first to comment!