Aprovecha al máximo tu dinero mediante SMS automatizados

April 21, 2026
Redactado por
Revisado por

Aprovecha al máximo tu dinero mediante SMS automatizados

Imagina que tu empresa está comenzando una nueva campaña de SMS para dirigirse a tus usuarios. Haces un envío masivo de marketing, por ejemplo, 150 caracteres a una base de usuarios de 100 000 usuarios. Lo que esperabas era pagar 100 000 segmentos. Pero cuando recibes tu factura, te das cuenta de que te cobraron tres veces más de lo esperado. ¿Por qué? Porque quien redactó tu texto de marketing utilizó emojis, comillas tipográficas u otros caracteres especiales se generan a un precio elevado.

Los mensajes de texto enriquecidos y los servicios de comunicación enriquecida pueden ayudar a que tus mensajes de marketing se destaquen. Sin embargo, si eres una pequeña empresa con un presupuesto de marketing pequeño, no querrás llevarte un susto con la factura tus envíos masivos de SMS automatizados. E incluso en las grandes empresas, cada dólar cuenta. Entonces, ¿qué sucedió y cómo puedes evitarlo? Sigue leyendo para ver el culpable y algunas soluciones potenciales.

Qué causa cargos sorpresa por SMS

Esta es la razón técnica por la que tu SMS cuesta más en el momento en que tu mensaje incluye un emoji o carácter tipográfico.

Los mensajes de texto se envían en codificación GSM-7. Cuando las redes móviles se desarrollaron por primera vez para poder enviar caracteres alfanuméricos en mensajes de texto, se asignaron originalmente 128 caracteres a valores numéricos para la transmisión mediante red. Esta asignación de caracteres a valores numéricos se denomina codificación de caracteres.

Pero hay una trampa. Tan pronto como utilices un personaje fuera de la biblioteca GSM-7 (emojis, alfabetos no latinos o “comillas tipográficas”), todo el mensaje cambia a codificación de 16 bits en su lugar. Este tipo de codificación de texto se denomina codificación de caracteres UCS-2. Si no lo utilizas intencionalmente, es posible que te estés preparando para un problema.

El cambio de la codificación GSM-7 a UCS-2 da como resultado que cada mensaje ocupe más espacio de memoria en el paquete de datos enviado. Twilio envía mensajes SMS en segmentos (¡no se debe confundir con Twilio Segment!). Cada segmento puede contener hasta 160 caracteres en GSM-7 o bien solo 70 caracteres en UCS-2. Además, Twilio antepone un encabezado de datos de usuario de 6 bytes (esto indica al dispositivo receptor cómo ensamblar mensajes), lo que deja 153 caracteres GSM-7 o 67 caracteres UCS-2 para tu mensaje. Si tus mensajes superan estos límites, es posible que veas un cargo en tu factura que no esperabas.

Personajes a los que debes estar atento

Los emojis son una posible causa de este problema. Si envías un emoji a través de texto, cambias automáticamente a la codificación UCS-2, porque un emoji no forma parte del conjunto de caracteres estándar GSM-7. Pero eso puede parecer obvio y es bastante fácil de detectar. Hay otros culpables posiblemente ocultos que podrían estar alterando la codificación de tus SMS, como:

Comillas tipográficas y apóstrofos: la acción de copiar y pegar desde Google Docs puede llevar a este error, donde una comilla tipográfica que se inclina hacia tu texto cuenta como un carácter no estándar. Lo mismo sucede con los apóstrofos tipográficos. Puedes eliminarlos de tus comunicaciones y tus clientes no lo notarán, pero verás una diferencia en la facturación si olvidas hacerlo.

Rayas: la temida raya (—), una nueva herramienta favorita de las comunicaciones redactadas por IA, puede convertirse en un problema en tu texto si no se elimina. Este es un error que se comete con frecuencia si utilizas herramientas modernas, ya que a los sistemas de IA ya la corrección automática les encanta usarla. Pero usa un guion en lugar de la raya y te estás ahorrando caracteres en tu texto.

Acentos: los acentos pueden ser una mezcla variada. Si estás haciendo comunicaciones en idiomas distintos del inglés, serán más comunes. Aunque algunos acentos (como é) están en GSM-7, otros (como â) pueden activar el cambio a UCS-2. ¿No estás seguro de si tu carácter especial cumple con las normas? Consulta el mapa de caracteres del GSM-7 en la documentación de Twilio para estar seguro.

Uso de las herramientas de Twilio para resolver el problema

Ahora que entendiste el problema, ¿cómo lo evitas en el futuro?

Hay algunas maneras de probar tus comunicaciones para asegurarte de que cumplan con GSM-7 y de que mantengas tus presupuestos bajos.

Esta es la forma más simple: prueba tu mensaje tú mismo con la Calculadora de segmentos de mensajería de Twilio antes de enviarlo. Prueba tu texto antes de presionar Enviar y ve cuántos segmentos requiere realmente tu mensaje.

Este es un ejemplo básico que muestra SMS con solo texto y otro ejemplo que muestra cómo agregar algunos emojis cambia la estructura de codificación de tu mensaje:

Message Segment Calculator showing an SMS message in GSM-7.
Message Segment Calculator showing an SMS message in GSM-7.
Message Segment Calculator showing an SMS message in Unicode.
Message Segment Calculator showing an SMS message in Unicode.

Twilio tiene una función de codificación inteligente que es un interruptor para tu SMS.

Esta función reemplaza automáticamente las comillas tipográficas y otros caracteres posiblemente problemáticos con equivalentes en GSM-7. Está disponible cada vez que envías un mensaje de texto mediante las funciones de SMS automatizadas de Twilio. Puedes ver el interruptor Codificación inteligente en las capturas de pantalla de la calculadora de mensajería.

La función no eliminará emojis, pero eliminará cosas que, de otro modo, podrían ser un problema. Así es como funciona el interruptor en la práctica con uno de esos personajes terribles.

Sin codificación inteligente:

Unfortunately this SMS includes an EM dash and no smart encoding, so it's swapped to Unicode.
Unfortunately this SMS includes an EM dash and no smart encoding, so it's swapped to Unicode.

El mismo mensaje, pero con la codificación inteligente activada:

With smart encoding, this is a GSM-7 message. Screenshot of that.
With smart encoding, this is a GSM-7 message. Screenshot of that.

El resultado es el mismo, pero la longitud del segmento es totalmente diferente.

Si deseas activar la codificación inteligente para tu servicio de mensajería de Twilio, búscala en el panel de control de Twilio. Para llegar a esta pestaña, primero crea un Servicio de mensajería. Luego busca Configuración de contenido como se muestra en la captura de pantalla a continuación. Asegúrate de que el interruptor Codificación inteligente esté colocado en Activado.

Dashboard showing content settings
Dashboard showing content settings

Un enfoque programático

Es posible que desees encargarte de eliminar caracteres en tu programa en lugar de depender completamente de tu servicio de mensajería. Existen dos buenas posibilidades para manejar la corrección de caracteres problemáticos en tu SMS automatizado: el reemplazo (cambiar de caracteres “tipográficos” por caracteres económicos) y el cálculo (advertir al usuario sobre el costo).

El método de saneamiento GSM-7

Crear un método de “saneamiento” es un movimiento clásico de programación defensiva. Si estás trabajando en .NET 10, puedes utilizar funciones de C# 14 como ReadOnlySpan<char> y creadores de cadenas de alto rendimiento para mantener tus métodos funcionando rápido. Si utilizas algún otro lenguaje de codificación, considera estos principios y enfoques básicos para averiguar cómo podrían encajar en tu propio proyecto.

Este es un ejemplo de método que podrías utilizar en tus programas. Este método busca caracteres comunes “que arruinan el presupuesto” y los reemplaza por sus equivalentes en GSM-7.

using System;
using System.Text;
using System.Text.RegularExpressions;

public static class SmsSanitizer
{
   // Basic GSM-7 character set (simplified example)
   private const string GsmBasic = "@£$¥èéùìòÇ\nØø\rÅåΔ_ΦΓΛΩΠΨΣΘΞ ÆæßÉ !\"#¤%&'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà";
   public static string Sanitize(ReadOnlySpan<char> input)
   {
       // Use Span<char> for the buffer to avoid multiple allocations
       Span<char> output = stackalloc char[input.Length];
       int outputIdx = 0;
       foreach (char c in input)
       {
           char replacement = c;
           // Handle special characters with their GSM-7 safe equivalents
           if (c == '\u201C' || c == '\u201D') // Left and right double quotes
               replacement = '"';
           else if (c == '\'' || c == '\u2018' || c == '\u2019') // Single quotes and apostrophes
               replacement = '\'';
           else if (c == '\u2014' || c == '\u2013') // Em dash and en dash
               replacement = '-';
           // Add the character if it's in GSM-7 basic set, otherwise add the replacement or '?'
           if (GsmBasic.Contains(replacement))
           {
               output[outputIdx++] = replacement;
           }
           else
           {
               // If replacement isn't in GSM-7 either, use '?'
               output[outputIdx++] = '?';
           }
       }
       return new string(output[..outputIdx]);
   }
}

Puedes integrar esto directamente en tu Webhook o controlador de campaña.

app.MapPost("/api/validate-sms", (string messageBody) => {
    var sanitized = SmsSanitizer.Sanitize(messageBody);
    var stats = GetMessageStats(sanitized);
    return Results.Ok(new {
        Original = messageBody,
        Sanitized = sanitized,
        EstimatedSegments = stats.Segments,
        EncodingUsed = stats.Encoding,
        PotentialSavings = "If this contained smart quotes, we just saved you money!"
    });
});

Lógica del contador de segmentos

Si deseas advertir a tus usuarios antes de que hagan envíos, debes saber si el mensaje cambia a UCS-2. Esto implica crear una calculadora para tu uso similar a la que ofrece Twilio. Esto utilizará expresiones regulares para comprobar si hay caracteres especiales.

Recuerda estos límites:

  • GSM-7: 160 caracteres para 1 segmento, 153 para 2 o más (se utilizan 7 caracteres para los “encabezados de segmento”).
  • UCS-2: 70 caracteres para 1 segmento, 67 para 2 o más (se utilizan 3 caracteres para los encabezados).
public static (int Segments, string Encoding) GetMessageStats(string text)
{
    // Regex for characters NOT in the GSM-7 basic or extended sets
    // (Simplified for this example)
    bool isUcs2 = Regex.IsMatch(text, @"[^a-zA-Z0-9\s!""#\$%&'()\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^_\{\|\}\~¡£¥§¿äöñüàèéìòùò]");
    int limit = isUcs2 ? 70 : 160;
    int multiLimit = isUcs2 ? 67 : 153;
    if (text.Length <= limit) return (1, isUcs2 ? "UCS-2" : "GSM-7");
    int segments = (int)Math.Ceiling((double)text.Length / multiLimit);
    return (segments, isUcs2 ? "UCS-2" : "GSM-7");
}

El método anterior utiliza una expresión regular negada, lo que significa que buscará todos los caracteres que no estén dentro de la ventana segura marcada. Luego, te dirá si estás saliendo del conjunto de caracteres seguros. En caso de duda, verifica dos veces antes de hacer clic en Enviar. Esto podría ahorrarte sorpresas en la factura.

Estos métodos también son solo ejemplos, por lo que deberás integrarlos en tu infraestructura. Estos métodos funcionan en una app de consola .NET, una API web o un back-end del plugin de Flex. Aunque las herramientas internas de Twilio pueden funcionar bien para la mayoría de las aplicaciones, tener un enfoque programático también te permitirá tener más control sobre el resultado si lo deseas.

Conclusión

Un buen texto es conciso. El texto económico también es compatible con GSM-7. Con conocimientos sobre cómo contar caracteres, deberías poder ahorrar dinero en tus mensajes de texto sabiendo cuántos segmentos envías, lo que te dará tranquilidad cuando esa campaña se ponga en marcha.

Si deseas más ayuda con SMS automatizados o deseas obtener más información sobre el marketing por SMS, consulta algunos otros recursos en el blog de Twilio:

¡Creemos juntos algo maravilloso!

Amanda Lange es ingeniera de contenido técnico de .NET. Está aquí para enseñar cómo crear grandes cosas con la programación C# y .NET. Puedes comunicarte con ella en amlange [arroba] twilio.com.

Resumen generado por IA
  • El uso de caracteres especiales en SMS puede aumentar los costos debido a un cambio de codificación GSM-7 a UCS-2.
  • Las dificultades comunes incluyen emojis, comillas tipográficas, guiones largos y ciertos caracteres acentuados.
  • Las herramientas de Twilio, como la Calculadora de segmentos de mensajería y la Codificación inteligente, pueden ayudar a optimizar los SMS para la rentabilidad.

Este resumen fue generado por IA.