Tudo o que vale a pena saber, nada do que não vale.
Como funciona o SMPP, passo a passo
O ESME abre uma conexão TCP (idealmente TLS) e envia um comando `bind_transceiver` com um `system_id` e uma palavra-passe. Uma vez estabelecida a conexão, ele submete cada mensagem como uma PDU `submit_sm`; o SMSC confirma a receção com um `submit_sm_resp` contendo um `message_id`. Os relatórios de entrega chegam de forma assíncrona como PDUs `deliver_sm` no mesmo socket, correspondentes ao `message_id`. Um sinal de pulsação `enquire_link` a cada 30 segundos mantém a sessão ativa, e o comando `unbind` a encerra corretamente. Veja /answers/what-is-smpp e /answers/what-is-esme.
Tipos e versões de vinculação
Um ESME pode se vincular como Transmissor (somente envio), Recetor (somente receção) ou Transceptor (ambos numa única conexão). Transceptor sobre SMPP 3.4 é o padrão moderno. O SMPP 5.0 adicionou cabeçalhos Unicode-clean e suporte a broadcast de célula, mas quase ninguém o implementou — a base instalada é esmagadoramente 3.4. BroadNet aceita conexões SMPP 3.4; o host, a porta e as credenciais são fornecidos com o seu acesso de teste. Veja /answers/smpp-3-4-vs-5-0.
Vantagens em relação a uma API REST
Uma conexão persistente não custa nada por mensagem depois de estabelecida, portanto, em volumes sustentados, o SMPP usa aproximadamente um décimo da CPU e um quarto da largura de banda por requisição do HTTPS. É a única maneira de atingir latência p99 abaixo de 100 ms para um SMSC — não há handshake HTTP no caminho crítico — e transmite DLRs de volta em tempo real. Veja /compare/sms-api-vs-smpp.
Limitações e armadilhas
SMPP é um protocolo binário que você precisa operar: gestão de binds, reconexão com backoff exponencial, rastreio de números de sequência e correspondência de DLR por message_id (devolvido em hexadecimal em alguns SMSCs, decimal em outros) são todos da sua responsabilidade. O tratamento de erros é conciso — uma submissão com falha devolve um command_status numérico que você precisa decodificar. Use a consulta /tools/smpp-error-codes para transformar esses códigos numa ação. Um cliente SMPP de nível de produção possui um código-fonte com milhares de linhas; compre um em vez de desenvolver um.
Quando deve escolher SMPP em vez de REST?
Escolha SMPP quando sustenta várias centenas de mensagens por segundo ou precisa de binds persistentes (a capacidade por bind é acordada com a sua equipa de conta), executa OTP com latência crítica onde cada milissegundo conta, ou se integra num ecossistema de operadora/agregador que já utiliza SMPP em todo o lado. Caso contrário, uma API REST SMS (sem limites de taxa fixos por conta na BroadNet) é mais simples de operar e entrega pelas mesmas rotas. Consulte /developers/smpp e /products/sms-api.
Qual porta o SMPP utiliza e ela ainda será usada em 2026?
SMPP não possui uma porta reservada específica; a porta 2775 é o padrão histórico para texto simples e os operadores geralmente expõem o TLS numa porta dedicada (BroadNet fornece a sua porta TLS com a sua conta). E sim, o SMPP está totalmente atualizado: é o protocolo principal em praticamente todos os contratos de interconexão A2P, e a BroadNet opera com mais de 1.000 binds ativos por trás de 1.000+ conexões diretas com operadoras, transportando mais de 300 milhões de mensagens por dia com 99,99% de disponibilidade desde 2003.