Uma notificação de entrega longa pode parecer um único texto no telefone. Mesmo assim, ela pode gerar várias unidades faturáveis. Cada parte carrega tanto texto quanto informações que identificam sua posição na mensagem completa.
Como o telefone sabe quais partes juntar?
Cada parte carrega uma referência compartilhada, uma contagem total de partes e sua posição na sequência.
Esses valores ficam em um cabeçalho junto com o texto. A especificação 23.040 do 3rd Generation Partnership Project define esse mecanismo. O telefone também verifica se as partes compartilham o mesmo remetente e centro de mensagens.
O cabeçalho ocupa parte da capacidade de cada parte. Bird portanto usa uma capacidade de texto menor para cada parte de uma mensagem concatenada.
Por que um caractere a mais cria outro segmento?
Ultrapassar o limite de segmento único faz Bird dividir todo o corpo usando a capacidade menor de multiparte.
Texto latino simples cabe em 160 caracteres em um segmento. Cada parte de uma mensagem mais longa comporta 153.
Um corpo de 160 letras latinas comuns cabe em um segmento. Adicione outra letra e o corpo de 161 letras precisa de duas partes, com 153 e oito letras. Ambas as partes reservam espaço para o cabeçalho, incluindo a primeira.
Caracteres como aspas curvas mudam toda a mensagem para uma capacidade menor: 70 caracteres, ou 67 por parte. Um texto contendo 70 letras latinas e uma aspa curva portanto precisa de duas partes.
Alguns caracteres contam em dobro para esses limites. GSM-7 vs UCS-2 explica por que a contagem visível de caracteres pode subestimar o espaço necessário.
O que acontece se uma parte for perdida?
O telefone não consegue reconstruir o texto completo até ter todas as partes.
A rede trata as partes como mensagens separadas. A entrega delas pode ser concluída de forma independente. A entrega bem-sucedida de uma parte não garante a entrega do texto inteiro.
Uma mensagem incompleta pode, portanto, ser um problema de entrega mesmo quando sua aplicação enviou o corpo completo. Mantenha um código de verificação de uso único dentro de um segmento sempre que possível. O destinatário não precisa de várias partes para lê-lo.
Quantas partes Bird aceita?
Você pode enviar até doze segmentos em uma solicitação. Bird rejeita um corpo mais longo.
Isso comporta 1.836 caracteres latinos simples: doze partes de 153. O alfabeto mais amplo comporta 804: doze partes de 67. Caracteres que contam em dobro, incluindo alguns emoji, reduzem quanto texto cabe.
O campo text da solicitação aceita uma string não vazia sujeita ao limite de doze segmentos. Excedê-lo retorna HTTP 422, significando que a solicitação é rejeitada por conteúdo inválido. Bird não encurta o texto silenciosamente.
Como verifico o resultado calculado?
Você lê o objeto segments na resposta da mensagem para ver o que Bird calculou.
counté um inteiro de no mínimo 1. Mensagens de saída não podem exceder 12. Cada parte contribui uma unidade faturável.encodingéGSM_7BITouUCS2, identificando qual capacidade se aplica.charactersconta caracteres antes de aplicar as regras de contagem dupla. Usecountpara verificar os segmentos faturáveis.
Para um template longo, verifique o corpo final após inserir nomes ou outro texto variável. Segmentos SMS explica o cálculo de cobrança, e o guia de limites de caracteres documenta a resposta.
Em resumo
Você envia uma mensagem.
Bird divide um corpo que excede o limite em partes que o telefone receptor pode juntar.
Toda parte precisa de um cabeçalho.
As informações de remontagem reduzem a capacidade de texto de cada segmento, incluindo o primeiro.
Uma parte ausente impede a remontagem completa.
O telefone precisa de todas as partes para exibir o texto completo.
Bird limita mensagens de saída a doze segmentos.
Um corpo mais longo é rejeitado com uma resposta HTTP 422 em vez de ser truncado.