Como maximizar seus resultados com SMS automatizados

April 21, 2026
Escrito por
Revisado por

Resumo gerado por IA
  • O uso de caracteres especiais em um SMS pode aumentar os custos devido a uma mudança da codificação GSM-7 para a UCS-2.
  • Armadilhas comuns incluem emojis, aspas curvas, travessões e determinados caracteres acentuados.
  • As ferramentas da Twilio, como a Messaging Segment Calculator e a Smart Encoding, podem ajudar a otimizar os SMS e reduzir custos.

Este resumo foi gerado por IA.

Como maximizar seus resultados com SMS automatizados

Imagine que sua empresa esteja iniciando uma nova campanha de SMS para segmentar seus usuários. Você envia uma campanha de marketing em massa, por exemplo, com 150 caracteres, para uma base de 100.000 usuários. Você esperava pagar por 100.000 segmentos. Mas ao receber sua conta, percebe que foi cobrado três vezes mais do que o esperado. Por quê? Porque o autor do texto da sua campanha de marketing usou emojis, aspas curvas ou outros caracteres especiais que elevaram os custos.

Rich text e RCS (Rich Communications Services) podem ajudar a dar destaque às suas mensagens de marketing. Mas, se você tem uma pequena empresa e um orçamento de marketing limitado, não vai querer levar um susto com o valor da fatura ao receber a cobrança pelas campanhas de marketing com SMS automatizados. E mesmo em grandes empresas, cada centavo conta. Então, o que aconteceu e como você pode evitar isso? Continue lendo para ver o problema e algumas soluções em potencial.

O que causa cobranças inesperadas por SMS?

Aqui está o motivo técnico pelo qual seu SMS custa mais no momento em que sua mensagem inclui um emoji ou caractere inteligente.

Mensagens de texto são enviadas na codificação GSM-7. Quando as redes móveis foram desenvolvidas para permitir o envio de caracteres alfanuméricos por mensagens de texto, foram inicialmente atribuídos valores numéricos a 128 caracteres para a transmissão pela rede. Essa atribuição de caracteres a valores numéricos é chamada de codificação de caracteres.

Mas há um detalhe importante: assim que você utiliza um caractere que não faz parte do conjunto GSM-7 (como emojis, caracteres de alfabetos não latinos ou "aspas curvas"), toda a mensagem mudará para codificação de 16 bits. Esse tipo de codificação de texto é chamado de codificação de caracteres UCS-2. Se você não estiver utilizando essa codificação intencionalmente, poderá acabar enfrentando problemas.

A mudança da codificação GSM-7 para UCS-2 faz com que cada mensagem ocupe mais espaço de memória no pacote de dados enviado. A Twilio envia mensagens SMS em segmentos (não confundir com a Twilio Segment!). Cada segmento pode conter até 160 caracteres na codificação GSM-7 ou apenas 70 caracteres na codificação UCS-2. Além disso, a Twilio prefixa um cabeçalho de dados do usuário de 6 bytes (isso instrui o dispositivo receptor sobre como montar mensagens), deixando 153 caracteres GSM-7 ou 67 caracteres UCS-2 para sua mensagem. Se suas mensagens ultrapassarem esses limites, você poderá ver uma cobrança em sua conta que não estava esperando.

Caracteres a serem observados

Os emojis são uma das possíveis causas desse problema. Se você enviar um emoji por mensagem de texto, a codificação será automaticamente alterada para UCS-2, pois os emojis não fazem parte do conjunto padrão de caracteres GSM-7. Mas isso pode parecer óbvio e é bastante fácil de identificar. Existem outros fatores, possivelmente ocultos, que podem alterar a codificação dos seus SMS, como:

Aspas e apóstrofes curvas: Copiar e colar textos do Google Docs pode causar esse erro, pois as aspas curvas, que se voltam para dentro do texto, são consideradas caracteres não padronizados. O mesmo vale para apóstrofes curvas. Você pode remover esses caracteres das suas mensagens sem que seus clientes percebam a diferença. No entanto, se você se esquecer de removê-los, perceberá a diferença na fatura.

Travessões: O temido travessão (—), um recurso muito utilizado em comunicações geradas por IA, pode se tornar um problema em seu texto se não for removido. Esse é um erro comum ao utilizar ferramentas modernas, já que tanto os sistemas de IA quanto os corretores automáticos adoram usar esse tipo de caractere. Mas, ao substituir o travessão por um hífen, você economiza caracteres na sua mensagem de texto.

Acentos: Os caracteres acentuados podem ser um caso à parte. Em comunicações que não sejam em inglês, eles são mais comuns. Embora alguns caracteres acentuados (como é) façam parte do conjunto GSM-7, outros (como â) podem provocar a mudança para a codificação UCS-2. Não tem certeza se o seu caractere especial é compatível? Visualize o mapa de caracteres GSM-7 na documentação da Twilio para ter certeza.

Como usar as ferramentas da Twilio para resolver o problema

Agora que você entendeu o problema: como evitá-lo no futuro?

Existem algumas maneiras de testar suas mensagens para garantir que sejam compatíveis com a codificação GSM-7 e manter os custos sob controle.

Aqui está a maneira mais simples: teste sua mensagem antes de enviá-la usando a Twilio Messaging Segment Calculator. Teste o texto da sua mensagem antes de clicar em Enviar e veja quantos segmentos ela realmente exige.

Veja um exemplo básico de SMS contendo apenas texto e outro que mostra como a adição de alguns emojis altera a estrutura de codificação da mensagem:

Message Segment Calculator showing an SMS message in GSM-7.
Message Segment Calculator showing an SMS message in GSM-7.
Message Segment Calculator showing an SMS message in Unicode.
Message Segment Calculator showing an SMS message in Unicode.

A Twilio tem um recurso chamado Smart Encoding, que pode ser ativado ou desativado para suas mensagens SMS.

Esse recurso substitui automaticamente as aspas curvas e outros caracteres potencialmente problemáticos por caracteres equivalentes compatíveis com o padrão GSM-7. Ele está disponível sempre que você envia uma mensagem de texto usando os recursos de SMS automatizados da Twilio. Você pode ver a opção de ativar ou desativar o Smart Encoding nas capturas de tela da calculadora de mensagens.

O recurso não removerá emojis, mas removerá caracteres que poderiam ser um problema. Veja como sua ativação funciona na prática usando um desses caracteres que podem passar despercebidos.

Sem Smart Encoding:

Unfortunately this SMS includes an EM dash and no smart encoding, so it's swapped to Unicode.
Unfortunately this SMS includes an EM dash and no smart encoding, so it's swapped to Unicode.

Mesma mensagem, mas com o Smart Encoding ativado:

With smart encoding, this is a GSM-7 message. Screenshot of that.
With smart encoding, this is a GSM-7 message. Screenshot of that.

O resultado é o mesmo, mas o comprimento do segmento é totalmente diferente.

Se quiser ativar o Smart Encoding para seu serviço de mensagens da Twilio, pesquise no dashboard da Twilio. Para acessar essa guia, primeiro crie um Messaging Service (Serviço de mensagens). Em seguida, procure Content Settings (Configurações de conteúdo), conforme mostrado na captura de tela abaixo. Certifique-se de que a opção Smart Encoding esteja definida como On (ativada).

Dashboard showing content settings
Dashboard showing content settings

Uma abordagem programática

É possível que prefira tratar da remoção de caracteres diretamente no seu programa, em vez de depender exclusivamente do seu serviço de mensagens. Existem duas boas formas de lidar com caracteres problemáticos nas suas mensagens SMS automatizadas: a substituição (troca de caracteres especiais por caracteres mais simples) e o cálculo (aviso ao usuário sobre o custo).

O método de limpeza GSM-7

Criar um método de limpeza é uma prática clássica de programação defensiva. Se você estiver trabalhando no .NET 10, poderá usar recursos do C# 14, como ReadOnlySpan<char> e criadores de string de alto desempenho, para manter seus métodos funcionando rapidamente. Se você usar alguma outra linguagem de programação, considere essas abordagens e princípios básicos para determinar como se adequam ao seu projeto.

Este é um exemplo de método que você pode usar em seus programas. Este método procura caracteres comuns que podem aumentar significativamente os custos e os substitui por seus equivalentes no GSM-7.

using System;
using System.Text;
using System.Text.RegularExpressions;

public static class SmsSanitizer
{
   // Basic GSM-7 character set (simplified example)
   private const string GsmBasic = "@£$¥èéùìòÇ\nØø\rÅåΔ_ΦΓΛΩΠΨΣΘΞ ÆæßÉ !\"#¤%&'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà";
   public static string Sanitize(ReadOnlySpan<char> input)
   {
       // Use Span<char> for the buffer to avoid multiple allocations
       Span<char> output = stackalloc char[input.Length];
       int outputIdx = 0;
       foreach (char c in input)
       {
           char replacement = c;
           // Handle special characters with their GSM-7 safe equivalents
           if (c == '\u201C' || c == '\u201D') // Left and right double quotes
               replacement = '"';
           else if (c == '\'' || c == '\u2018' || c == '\u2019') // Single quotes and apostrophes
               replacement = '\'';
           else if (c == '\u2014' || c == '\u2013') // Em dash and en dash
               replacement = '-';
           // Add the character if it's in GSM-7 basic set, otherwise add the replacement or '?'
           if (GsmBasic.Contains(replacement))
           {
               output[outputIdx++] = replacement;
           }
           else
           {
               // If replacement isn't in GSM-7 either, use '?'
               output[outputIdx++] = '?';
           }
       }
       return new string(output[..outputIdx]);
   }
}

Você pode integrar isso diretamente ao seu Webhook ou controlador de campanha.

app.MapPost("/api/validate-sms", (string messageBody) => {
    var sanitized = SmsSanitizer.Sanitize(messageBody);
    var stats = GetMessageStats(sanitized);
    return Results.Ok(new {
        Original = messageBody,
        Sanitized = sanitized,
        EstimatedSegments = stats.Segments,
        EncodingUsed = stats.Encoding,
        PotentialSavings = "If this contained smart quotes, we just saved you money!"
    });
});

Lógica do contador de segmentos

Se você quiser avisar os usuários antes do envio, precisa saber se a mensagem muda para a codificação UCS-2. Isso envolve a criação de uma calculadora para uso próprio, semelhante à oferecida pela Twilio. O Regex será usado para verificar caracteres especiais.

Lembre-se destes limites:

  • GSM-7: 160 caracteres para 1 segmento, 153 para 2+ (7 caracteres usados para "cabeçalhos de segmento").
  • UCS-2: 70 caracteres para 1 segmento, 67 para 2+ (3 caracteres usados para cabeçalhos).
public static (int Segments, string Encoding) GetMessageStats(string text)
{
    // Regex for characters NOT in the GSM-7 basic or extended sets
    // (Simplified for this example)
    bool isUcs2 = Regex.IsMatch(text, @"[^a-zA-Z0-9\s!""#\$%&'()\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^_\{\|\}\~¡£¥§¿äöñüàèéìòùò]");
    int limit = isUcs2 ? 70 : 160;
    int multiLimit = isUcs2 ? 67 : 153;
    if (text.Length <= limit) return (1, isUcs2 ? "UCS-2" : "GSM-7");
    int segments = (int)Math.Ceiling((double)text.Length / multiLimit);
    return (segments, isUcs2 ? "UCS-2" : "GSM-7");
}

O método acima utiliza uma expressão regular (regex) negada, ou seja, identifica todos os caracteres que estão fora do intervalo seguro definido. Em seguida, ele informará se você está usando caracteres fora do conjunto de caracteres permitidos. Em caso de dúvida, verifique duas vezes antes de clicar em Enviar! Isso pode evitar uma cobrança inesperada.

Esses métodos são apenas exemplos, portanto, você precisará integrá-los à sua própria infraestrutura de tecnologia. Eles funcionam em um aplicativo de console .NET, uma API da Web ou um back-end do plugin do Flex. Embora as ferramentas internas da Twilio possam funcionar bem com a maioria dos aplicativos, ter uma abordagem programática também permitirá que você tenha mais controle sobre o resultado, se quiser.

Conclusão

Um bom texto é conciso. Um texto econômico também é compatível com o GSM-7. Munido de conhecimento sobre como contar caracteres, você poderá economizar em suas mensagens de texto sabendo quantos segmentos está enviando, o que lhe dará tranquilidade quando a campanha entrar em operação.

Se quiser saber mais sobre o envio de SMS automatizados ou aprender mais sobre marketing por SMS, confira outros conteúdos no blog da Twilio:

Vamos criar algo incrível juntos!

Amanda Lange é engenheira .NET de conteúdo técnico. Ela se dedica a ensinar como desenvolver projetos incríveis com C# e .NET. Você pode entrar em contato com ela em amlange [arroba] twilio.com.