¿Qué es un segmento?

March 02, 2017
Redactado por

Looking for information on Twilio Segment, acquired by Twilio in 2020?

- Acquisition Announcement

- Why Twilio acquired Segment

Creaste el mensaje de texto perfecto. El impacto de un SMS que contiene toda una novela, digno de un poeta. Tu campaña se lleva a cabo sin ningún problema. Luego, cuando revisas tus costos te das cuenta de que son cuatro veces más de lo que esperabas.  Lo que te lleva a pensar: ¿Qué es un segmento y por qué me están cobrando por tantos?

Vamos a desvelar las normas SMS para que obtengas una respuesta. Aquí es donde cubriremos los siguientes puntos:

Recordando el teléfono Nokia 3310 para entender los segmentos de mensajes

Piensa en cuando empezaste a enviar mensajes de texto con tu indestructible Nokia. Mientras escribías mensajes en un teclado T9, es posible que hayas visto un contador que baja de 160 al lado de un 1. Cuando ese contador llegaba a 0, veías que el 1 que estaba al lado del 160 se elevaba a un 2.
Esto significaba que se agregarían dos mensajes a tu factura. Este primer número contaba cuántos caracteres te quedaban por segmento y el segundo contaba cuántos segmentos habías utilizado.

¿Qué cambió en los segmentos desde entonces?

Los estándares de SMS apenas han cambiado desde los días del Nokia 3310. Los mensajes aún se envían en fragmentos de 140 bytes conocidos como segmentos de mensajes.

Cuando Twilio se comunica con los operadores móviles para enviar mensajes SMS, les enviamos un segmento a la vez. Para comprender cuántos caracteres permitidos hay, tendremos que hacer un poco de matemáticas.

Un poco de matemáticas: una visión mucho más clara de los segmentos

La codificación de los SMS estándar utiliza el conjunto de caracteres GSM 03.38 que toma 7 bits para codificar un carácter. 140 bytes x 8 bits en un byte dividido por 7 bits nos da como resultado un segmento de mensajes de 160 caracteres.

Los segmentos de mensajes son la forma en que Twilio (y la industria de los SMS en general) cuentan los mensajes.

Esto significa que, además de tus costos, también debes pensar en términos de segmentos cuando analices el rendimiento de los SMS. El rendimiento varía según el número de envío que se utilice, pero en todos los casos se cuenta en términos de segmentos de mensajes por segundo y no de mensajes totales.

Si recibir tu mensaje en una ventana determinada te parece importante, asegúrate de saber cuántos segmentos estás enviando.

¿Cómo se comporta el mensaje perfecto?

Piensas en el mensaje de texto perfecto, cuentas los caracteres y sigue habiendo algo extraño. Solo has utilizado 210 caracteres, pero parece que cada uno de estos mensajes tiene más de dos segmentos.

Cuatro segmentos debido a la codificación UCS-2

Parte de la respuesta está en la codificación. Ten en cuenta que este mensaje tiene UCS-2 como codificación en lugar de GSM. Para dar lugar a un mensaje con tanta información como este, Twilio tiene que utilizar un conjunto de caracteres diferente. Es posible que hayas notado que, si hiciste clic en el enlace GSM anterior, este no contenía ningún "?". Cuando envías mensajes con caracteres que no son GSM, como emojis, debemos utilizar un tipo diferente de codificación conocido como UCS-2. El UCS-2 utiliza 16 bits para codificar cada carácter, por lo que, si volvemos a la operación matemática que hicimos antes, ahora tenemos un límite de 70 caracteres (140 bytes * 8 bits en un byte/16 bits). Además de los emojis, también debes tener cuidado con los caracteres acentuados. El GSM 03.38 incluye algunos caracteres acentuados como ñ, à y ö, pero no incluye otros como á, í o ú.

¿Qué hace exactamente un encabezado de datos?

Aun así, parece que, con este límite de 70 caracteres, este mensaje debería ser solo de tres segmentos, no de cuatro. La última pieza del rompecabezas radica en la concatenación. Cuando envías varios segmentos, los mensajes de Twilio utilizan encabezados de datos de usuario para indicar al destino cómo volver a ensamblarlo. Esto requiere hasta 6 bytes por mensaje, lo que deja solo 67 caracteres para mensajes codificados con UCS-2 o 153 para mensajes codificados con GSM.

Quizás, los emojis de fuego no valen la pena después de todo. Sin embargo, cuando recortas el mismo mensaje y lo reenvías, aún no parece funcionar bien:

Tres segmentos de SMS debido a la codificación

Este mensaje contiene dos de las "trampas" que comúnmente causan problemas de codificación: comillas inteligentes y espacios que no son GSM. Observa este mensaje que parece casi idéntico:

1 segmento codificado con GSM-7

Solo hay tres caracteres que se han cambiado: los espacios entre las oraciones se cambiaron de ‘ ’ a ‘ ’ (U + 2002 a U + 0020) y la "comilla inteligente" después de Shakespeare se ha sustituido por un apóstrofo estándar ‘ en su lugar ‘ (U + 2019 a U + 0027). Las comillas inteligentes suelen aparecer como resultado de que los editores de texto se entrometan demasiado. Los espacios que no son GSM suelen suceder como resultado de copiar y pegar. Ten mucho cuidado con aquellos que a menudo se convierten en espacios convencionales para la pantalla. La consola twilio.com es uno de esos, lo que significa que los cuerpos de mensajes que contienen espacios que no son GSM en la API se formatearán como espacios U + 0020 regulares para su visualización.

UPDATE: Twilio's Copilot service now includes a Smart Encoding feature which will automatically translate Unicode characters into GSM7/ASCII characters for you if there are GSM7/ASCII alternatives and no characters that can’t be converted in the message, e.g. emoji or language based characters. For more details see these pages:

Siempre es importante ser consciente del conjunto de caracteres antes de enviar mensajes. También puedes usar esta app para revisar mensajes específicos con anticipación: https://twiliodeved.github.io/message-segment-calculator/.

Después de leer esta entrada del blog podrás decidir si los emojis merecen la pena, eliminar las comillas inteligentes y los espacios no GSM antes de enviar los mensajes y contar con precisión los segmentos antes de realizar una campaña en lugar de después.