Concatenación y codificación
Cuando envías o recibes un mensaje SMS tienes que tener en cuenta la longitud total del mensaje porque determina si el mensaje llega entero o se divide en dos o más mensajes. El esquema de codificación que utiliza el SMS (text o unicode) afecta al número máximo de caracteres que caben en un solo mensaje.
Este documento abarca los siguientes temas:
Concatenación
Si envías un mensaje que contiene más del número máximo de caracteres por mensaje, Vonage envía un SMS concatenados. Un SMS concatenado contiene múltiples partes de SMS que están conectadas por información de segmentación en el Cabecera de datos de usuario (UDH).
Esta información de segmentación indica al terminal el número de partes de mensaje que componen el SMS concatenado y la posición de cada parte de mensaje dentro de él. Cuando el terminal ha recibido todas las partes del mensaje, las presenta al destinatario como un texto único.
Para obtener más información, la base de conocimientos de Vonage contiene información detallada sobre SMS multiparte.
Codificación
Existen dos tipos principales de codificación compatibles con SMS API de Vonage: text y unicode.
Especifique la codificación mediante la opción type en la solicitud. La codificación que debes utilizar depende de los caracteres que contenga el mensaje:
- Fije el
typeatextpara mensajes que sólo contengan caracteres en el Juegos de caracteres estándar y ampliados GSM. - Fije el
typeaunicodepara los mensajes que contienen caracteres fuera de los juegos de caracteres GSM (como los caracteres chinos, japoneses y coreanos).
Nuevas líneas
Para incluir una nueva línea en su mensaje, puede representar un salto de línea (LF) utilizando la codificación UTF-8, que es la siguiente %0Aen el valor del text de los parámetros de la solicitud. Esto contará como un único carácter con respecto al recuento de caracteres del mensaje. Por ejemplo, el siguiente valor para text:
&text=This is one line.%0AThis is another line.
enviará un mensaje SMS con el siguiente aspecto:
This is one line.
This is another line.
Nota: la guía anterior sobre líneas nuevas se aplica cuando se utiliza la SMS API directamente. Si utilizas un cliente HTTP para interactuar con la API, como el cliente Vonage SDK de servidorutiliza las convenciones apropiadas para esa herramienta en particular. Para los SDK del servidor de Vonage, esta será la sintaxis de nueva línea específica para el lenguaje de programación utilizado por ese SDK.
Juegos de caracteres GSM
Vonage admite todos los caracteres GSM estándar, así como los caracteres de la tabla GSM ampliada. La codificación de los caracteres de la tabla estándar requiere 7 bits por carácter:
! " # $ % ' ( ) * + , - . / : ; < = > ? @ _ ¡ £ ¥ § ¿ & ¤
0 1 2 3 4 5 6 7 8 9
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
Ä Å Æ Ç É Ñ Ø ø Ü ß Ö à ä å æ è é ì ñ ò ö ù ü Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ
Personajes de la mesa extendida requieren la codificación de dos caracteres: un ESC seguido del carácter requerido de la tabla extendida:
| ^ € { } [ ] ~ \
Unicode
Lenguas como el árabe, el chino, el coreano, el japonés o el alfabeto cirílico requieren caracteres Unicode más allá del estándar GSM y rangos extendidos. Estos caracteres requieren una codificación UCS-2 de 16 bits.
Cuando ajuste el type a unicode, todos los caracteres del mensaje se codifican utilizando UCS-2, aunque estén presentes en el conjunto de caracteres estándar GSM.
Ejemplos de codificación
| Mensaje | Tipo | Bytes por carácter | Total de bytes necesarios | Juego de caracteres utilizado en el mensaje |
|---|---|---|---|---|
Bonjour monde | text | 1 | 13 | Norma GSM |
This ^ That | text | 1 (2 para ^ ya que está en el juego de caracteres ampliado) | 12 | GSM estándar y GSM ampliado |
こんにちは世界 | unicode | 2 (UCS-2) | 14 | Unicode |
Número máximo de caracteres
La longitud máxima de un mensaje SMS es de 140 bytes, lo que equivale a 160 caracteres estándar GSM de 7 bits o 70 caracteres UCS-2 de 16 bits. Un mensaje más largo se divide en partes.
Nota: Los caracteres de la tabla ampliada GSM requieren dos bytes por carácter para codificarse.
Si envía un mensaje con un type valor de text se aplicarán los siguientes límites de caracteres:
| Piezas | Máximo de caracteres | Cálculo |
|---|---|---|
| 1 | 160 | Sin UDH se dispone de 160 caracteres |
| 2 | 306 | (160 - 7) * 2 = 306 |
| 3 | 459 | (160 - 7) * 3 = 459 |
| 4 | 612 | (160 - 7) * 4 = 612 |
Si envía un mensaje con un type de unicode entonces cada carácter del mensaje requiere dos bytes.
Vonage acepta SMS de hasta 3200 caracteres, pero no todas las compañías lo hacen. La mejor práctica es asegurarse de que el mensaje no supere las seis partes de SMS.
Nota: Se le cobrará por cada parte de SMS en un SMS concatenado.
Pruebe sus plantillas de mensajes con esta herramienta:
Nota: esta herramienta está pensada para demostrar cómo la API concatena los mensajes. No está pensada para su uso en producción. Si va a enviar un gran volumen de mensajes con el mismo contenido y desea precalcular los posibles costes debidos a la concatenación de mensajes, le recomendamos que envíe primero un único mensaje a un número de prueba para determinar con precisión el número de partes del mensaje. Para el SMS API se mostrará en el message-count en la propiedad cuerpo de la respuesta. Para el Messages API se mostrará en el sms.count_total en la propiedad Webhook de estado de mensajes.
Pruébalo
Mensaje
Datos
Piezas
It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.Mensajes entrantes
Los mensajes entrantes cumplen la especificación SMS. Si un SMS enviado a su número virtual es más largo que la especificación número máximo de caracteres permitido para un único SMS, recibirá el mensaje concatenado en partes.
Sin embargo, sólo puedes recibir SMS concatenados entrantes si el operador a través del cual los envía tu usuario los admite. Si el operador no admite la concatenación, una solución útil es tratar como concatenados todos los SMS procedentes del mismo número dentro de un breve intervalo de tiempo. Consulta la concatenación de SMS entrantes para obtener más información.
Véase el SMS entrantes para obtener más información sobre la concatenación de SMS entrantes.