SMS

O que é a codificação GSM-7 vs UCS-2?

GSM-7 comporta mais texto por segmento usando um alfabeto limitado; UCS-2 suporta mais caracteres, mas deixa menos espaço por segmento.

Um apóstrofo curvo pode mudar o preço de um texto que, fora isso, contém letras latinas comuns. O telefone exibe praticamente a mesma frase. Bird precisa de mais segmentos de rede para enviá-la.

Quais são as duas codificações?

GSM-7 usa um alfabeto compacto, enquanto UCS-2 representa caracteres fora desse alfabeto.

Letras latinas comuns, dígitos, pontuação comum e algumas letras acentuadas cabem em GSM-7. A especificação do alfabeto SMS define esse conjunto.

UCS-2 transporta caracteres fora desse conjunto, incluindo aspas curvas e emoji. Alguns emoji contam em dobro no seu limite de caracteres.

Textos em chinês, japonês, coreano, cirílico, árabe, tailandês e hindi exigem caracteres fora do alfabeto GSM-7 do Bird.

Como Bird escolhe a codificação?

Bird testa todo o corpo contra GSM-7 e usa UCS-2 se qualquer caractere falhar nesse teste.

A codificação se aplica ao corpo inteiro. Um apóstrofo curvo não recebe uma codificação separada das palavras ao redor. Sua presença muda a codificação dessas palavras também.

Você pode verificar o resultado em segments.encoding, cujos valores são GSM_7BIT e UCS2.

Como a codificação altera a contagem de segmentos?

A codificação mais ampla deixa menos espaço para texto em cada segmento faturável.

Bird usa estes limites:

CodificaçãoSegmento únicoCada parte quando dividido
GSM-7160 caracteres153 caracteres
UCS-270 caracteres67 caracteres

Esses limites contam certos caracteres em dobro, conforme listado abaixo. Cada parte dividida reserva espaço de cabeçalho para que o telefone possa juntar as partes. SMS concatenado explica o cabeçalho.

Um corpo com 155 letras latinas comuns ocupa um segmento GSM-7. Adicione um apóstrofo curvo e o corpo de 156 caracteres muda para UCS-2. Ele excede 70, então o limite multipartes se aplica: 156 dividido por 67 arredonda para três segmentos.

Bird cobra cada segmento separadamente. Segmentos SMS explica como a contagem se torna a quantidade faturável.

Quais caracteres exigem atenção especial?

Pontuação curva, emoji e letras fora do alfabeto GSM-7 podem alterar a codificação de toda a mensagem.

  • Apóstrofos retos cabem em GSM-7; apóstrofos curvos não.
  • Um hífen simples cabe; travessões tipográficos curtos e longos não.
  • Três pontos cabem; o caractere único de reticências não.
  • é e ü cabem; á, í e ú não.

GSM-7 conta estes caracteres em dobro: ^, {, }, \, [, ], ~, | e . Form feed, um caractere de controle que solicita quebra de página, também conta em dobro. Oitenta sinais de euro, portanto, preenchem um segmento.

Em UCS-2, um emoji como 😀 conta em dobro. Trinta e cinco preenchem um segmento. Adicionar mais um excede sua capacidade.1

A codificação inteligente pode evitar a troca?

A codificação inteligente pode substituir pontuação suportada quando todos os caracteres resultantes cabem em GSM-7.

Você a ativa por envio com options.smart_encoding, um booleano que aceita true ou false, com false como padrão. Um apóstrofo curvo pode se tornar um apóstrofo reto. Uma reticência pode se tornar três pontos.

Bird mantém o corpo original inalterado se qualquer caractere não suportado permanecer. Texto em árabe ou japonês, portanto, mantém os limites de capacidade Unicode. Alterar a configuração não faz esses alfabetos caberem em GSM-7.

Codificação inteligente descreve as regras de substituição, e a calculadora de segmentos verifica o texto antes do envio.

Footnotes

  1. Para calculadoras personalizadas, Bird mede GSM-7 em septetos e UCS2 em code units UTF-16. Caracteres de extensão GSM-7 usam dois septetos. UTF-16 usa duas code units para caracteres fora do primeiro bloco do Unicode, incluindo 😀.

Em resumo

  1. O corpo da mensagem determina a codificação.

    Bird usa GSM-7 quando todos os caracteres cabem no seu alfabeto e UCS-2 quando qualquer caractere está fora dele.

  2. Alguns caracteres contam em dobro.

    Texto em latim simples comporta 160 caracteres por segmento. O alfabeto mais amplo comporta 70, com alguns emoji contando em dobro.

  3. A divisão reduz a capacidade de cada parte.

    Mensagens multipartes reservam espaço para o cabeçalho. Texto em latim simples então comporta 153 caracteres por parte. O alfabeto mais amplo comporta 67, contando alguns caracteres em dobro.

  4. A codificação inteligente exige uma escolha explícita.

    Bird substitui caracteres suportados somente quando você ativa a opção e o resultado inteiro cabe em GSM-7.

Construa na mesma rede.

Uma chave de API de teste é sua imediatamente. A produção é desbloqueada quando adicionar um método de pagamento e verificar um remetente.

Sua próxima ideia.
Pronta para conectar.