Concatenação e codificação
Ao enviar uma mensagem SMS, é preciso estar atento ao comprimento total da mensagem, pois isso determina se ela chegará inteira ou se será dividida em duas ou mais mensagens. O esquema de codificação utilizado pela SMS (text ou unicode) afeta o número máximo de caracteres que cabem em uma única mensagem. A Messages API detecta automaticamente se há caracteres Unicode na mensagem enviada e utiliza o tipo de codificação adequado de acordo com isso. Essa configuração pode ser substituída por meio de um encoding_type parâmetro no corpo da solicitação.
Este documento aborda os seguintes tópicos:
Concatenação
Se você enviar uma mensagem que contenha mais do que o número máximo de caracteres por mensagem, a Vonage enviará uma SMS concatenadas. Uma mensagem SMS concatenada contém várias partes de SMS que são conectadas por informações de segmentação no Cabeçalho de Dados do Usuário (UDH).
Essas informações de segmentação indicam ao aparelho celular o número de partes da mensagem que compõem o SMS concatenado e a posição de cada parte da mensagem dentro dele. Quando o aparelho celular recebe todas as partes da mensagem, ele as apresenta ao destinatário como um único texto.
Para mais informações, a Base de Conhecimento da Vonage contém informações detalhadas sobre SMS em várias partes.
Codificação
Existem dois tipos principais de codificação que a Messages API suporta para o envio de SMS: text e unicode. Por padrão, a Messages API detecta automaticamente se há caracteres Unicode no texto e envia a mensagem da forma adequada, seja como SMS de texto ou como SMS Unicode. Você pode substituir esse comportamento definindo explicitamente text ou unicode como o valor para o encoding_type propriedade do opcional sms objeto. A codificação que você deve usar depende dos caracteres que a mensagem contém:
- Defina o
typeparâmetro paratextpara mensagens que contenham apenas caracteres na Padrão GSM e conjuntos de caracteres estendidos. - Defina o
typeparâmetro paraunicodepara mensagens que contenham caracteres fora dos conjuntos de caracteres do GSM (como caracteres chineses, japoneses e coreanos).
Novas linhas
Para incluir uma nova linha na sua mensagem, você pode representar um avanço de linha (LF) usando o \n caractere no valor da sequência de caracteres para o text propriedade do corpo JSON. Isso será contabilizado como um único caractere na contagem de caracteres da mensagem. Por exemplo, o valor a seguir para text:
{
"text": "This is one line.\nThis is another line."
}
enviará uma mensagem SMS com o seguinte formato:
This is one line.
This is another line.
Observação: as orientações acima sobre novas linhas se aplicam ao uso direto da Messages API. Se estiver usando um cliente HTTP para interagir com a API, como o Vonage SDKs de servidor, utilize as convenções adequadas para essa ferramenta específica. No caso dos SDKs do Vonage Server, trata-se da sintaxe específica de quebra de linha da linguagem de programação utilizada por esse SDK.
Conjuntos de caracteres GSM
A Vonage suporta todos os caracteres padrão do GSM, bem como os caracteres da tabela estendida do GSM. Os caracteres da tabela padrão requerem 7 bits por caractere para serem codificados:
! " # $ % ' ( ) * + , - . / : ; < = > ? @ _ ¡ £ ¥ § ¿ & ¤
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
Ä Å Æ Ç É Ñ Ø ø Ü ß Ö à ä å æ è é ì ñ ò ö ù ü Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ
Personagens do tabela ampliada exigem dois caracteres para serem codificados: um ESC prefixo de caractere seguido do caractere necessário da tabela estendida:
| ^ € { } [ ] ~ \
Unicode
Idiomas como o árabe, o chinês, o coreano, o japonês ou aqueles que utilizam o alfabeto cirílico exigem caracteres Unicode que vão além do padrão GSM e das faixas estendidas. Esses caracteres requerem a codificação UCS-2 de 16 bits.
Quando você define o type parâmetro para unicode, todos Os caracteres contidos na mensagem são codificados usando UCS-2, mesmo que estejam presentes no conjunto de caracteres padrão do GSM.
Exemplos de codificação
| Mensagem | Tipo | Bytes por caractere | Total de bytes necessários | Conjunto de caracteres utilizado na mensagem |
|---|---|---|---|---|
Bonjour monde |
text |
1 | 13 | Padrão GSM |
This ^ That |
text |
1 (2 para ^ (já que está no conjunto de caracteres estendido) |
12 | Padrão GSM e GSM estendido |
こんにちは世界 |
unicode |
2 (UCS-2) | 14 | Unicode |
Número máximo de caracteres
O comprimento máximo de uma única mensagem SMS é de 140 bytes, o que equivale a 160 caracteres padrão GSM de 7 bits ou 70 caracteres UCS-2 de 16 bits. Uma mensagem com comprimento superior a esse valor é dividida em partes.
Nota: Os caracteres da tabela estendida do GSM exigem dois bytes por caractere para serem codificados.
Se você estiver enviando uma mensagem com um type valor de text nesse caso, aplicam-se os seguintes limites de caracteres:
| Peças | Número máximo de caracteres | Cálculo |
|---|---|---|
| 1 | 160 | Sem o UDH, há 160 caracteres disponíveis |
| 2 | 306 | (160 - 7) * 2 = 306 |
| 3 | 459 | (160 - 7) * 3 = 459 |
| 4 | 612 | (160 - 7) * 4 = 612 |
Se você estiver enviando uma mensagem com um type de unicode nesse caso, cada caractere da mensagem ocupa dois bytes.
A Vonage aceita SMS com até 3.200 caracteres, mas nem todas as operadoras fazem o mesmo. É recomendável garantir que a mensagem não exceda seis partes de SMS.
Observação: cada parte de uma mensagem SMS concatenada é cobrada separadamente.
Teste seus modelos de mensagem com esta ferramenta:
Observação: esta ferramenta tem como objetivo demonstrar como as mensagens são concatenadas pela API. Ela não se destina ao uso em produção. Se você estiver enviando um grande volume de mensagens com o mesmo conteúdo e desejar calcular antecipadamente os possíveis custos decorrentes da concatenação de mensagens, recomendamos enviar primeiro uma única mensagem para um número de teste, a fim de determinar com precisão o número de partes da mensagem. Para o SMS API isso será exibido no message-count propriedade na corpo da resposta. Para o Messages API isso será exibido no sms.count_total propriedade na Webhook de status de mensagem.
Experimente
Mensagem
Dados
Peças
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.