Um bind SMPP é uma sessão autenticada entre a sua plataforma e o fornecedor de SMS, e TPS (transações ou mensagens por segundo) é quantas mensagens você pode enviar por segundo nela. Os fornecedores definem um limite de TPS por bind ou por conta e um número máximo de binds; ultrapassá-lo gera erros de throttling, então dimensione sua conexão para o seu pico de tráfego, contando cada segmento.
Tipos de bind
O SMPP 3.4 define três formas de fazer bind em um SMSC, cada uma aberta com seu próprio comando e com system_id e senha:
| Bind | Comando | Sentido |
|---|---|---|
| Transmitter (TX) | bind_transmitter | Você envia mensagens (submit_sm) |
| Receiver (RX) | bind_receiver | Você recebe relatórios de entrega e mensagens de entrada (deliver_sm) |
| Transceiver (TRX) | bind_transceiver | Os dois em uma única sessão |
A maioria das conexões A2P hoje usa binds transceiver. Com binds TX e RX separados, garanta que pelo menos um receiver esteja sempre conectado, ou os relatórios de entrega ficam acumulados no fornecedor. O básico do SMPP está em SMPP vs HTTP API para SMS A2P.
O que significa TPS
TPS é o número de operações submit_sm permitidas por segundo. Alguns pontos que costumam confundir:
- Os segmentos contam: um SMS longo de 3 partes usa 3 transações.
- Por bind ou por conta: um limite de 50 TPS pode valer para cada bind ou para todos os binds juntos. Pergunte qual.
- Pico vs sustentado: alguns fornecedores permitem rajadas curtas acima do limite, outros o aplicam rigorosamente a cada segundo.
- Limites por destino: o upstream do próprio fornecedor pode ter limites menores para alguns países ou redes, então o TPS da sua conta nem sempre está disponível em todo lugar.
Os valores típicos vão de 10 a 100 TPS por bind em contas A2P normais, com mais para grandes remetentes. Uma campanha de 360 mil mensagens a 100 TPS leva uma hora; a 20 TPS leva cinco.
Windowing
O SMPP é assíncrono: você pode enviar vários submit_sm antes de receber as respostas. O tamanho da janela é quantas requisições podem ficar pendentes ao mesmo tempo. Uma janela pequena demais limita o throughput quando a latência é alta (com 200 ms de ida e volta e janela de 1, você não passa de 5 TPS). Uma janela grande demais pode sobrecarregar o fornecedor. Valores em torno de 10 a 50 são comuns; combine-os com o fornecedor.
O que acontece quando você ultrapassa os limites
- ESME_RTHROTTLED (0x58): mensagens demais por segundo. Diminua o ritmo e tente de novo mais tarde.
- ESME_RMSGQFUL (0x14): a fila do fornecedor está cheia. Tente de novo depois de uma pausa.
- ESME_RALYBND (0x05) ou ESME_RBINDFAIL (0x0D): muitas vezes devolvidos quando você abre mais binds do que o permitido ou usa credenciais erradas.
Sua plataforma deve recuar (back-off) diante de erros de throttling em vez de tentar de novo na hora, o que só piora a situação. A lista completa está em códigos de erro SMPP comuns.
Mantendo os binds saudáveis
- Envie enquire_link a cada 30 a 60 segundos (combine o intervalo) e reconecte automaticamente quando falhar.
- Distribua o tráfego entre os binds com um round-robin simples e não abra mais binds do que o permitido.
- Use whitelist de IP e, quando oferecido, TLS ou VPN, porque o SMPP 3.4 envia as credenciais em texto puro.
- Monitore a latência do submit_sm_resp: um aumento muitas vezes vem antes de throttling ou de problemas de entrega. Veja taxa de entrega e latência de SMS.
- Para tráfego dos EUA, lembre que os limites de throughput das operadoras por marca e campanha podem ser menores que o seu TPS SMPP. Veja 10DLC e SMS toll-free.
Dimensionando o pedido
Calcule o seu pico por segundo, não o volume mensal: o tráfego de OTP às 9:00 de uma segunda-feira ou o lançamento de uma campanha pode ser dez vezes a média. Ao solicitar rotas SMS A2P pelo VoIPMatcher, informe o TPS e o número de binds de que você precisa. Solicite uma rota SMPP.
Perguntas frequentes
Por que meu bind SMPP falha?
As causas mais comuns são system_id ou senha errados, um endereço IP que não está na whitelist do fornecedor ou mais binds abertos do que a conta permite. O fornecedor então responde com erros como ESME_RBINDFAIL (0x0D), ESME_RINVPASWD (0x0E) ou ESME_RALYBND (0x05). Verifique credenciais e IPs liberados, feche sessões antigas e confirme o limite de binds.
Quantos binds SMPP eu preciso?
Divida o seu pico de mensagens por segundo pelo TPS permitido por bind e acrescente um bind para redundância. Se o fornecedor define o limite por conta e não por bind, binds extras aumentam a resiliência, mas não o throughput. A maioria das conexões A2P usa binds transceiver, então uma única sessão leva tanto os envios quanto os relatórios de entrega.
Qual é um bom TPS para SMS?
Contas A2P normais costumam ter entre 10 e 100 TPS por bind, com mais para grandes remetentes. O número certo depende do seu pico, não do volume mensal: 360 mil mensagens levam uma hora a 100 TPS e cinco horas a 20 TPS. Lembre que cada segmento de uma mensagem longa conta como uma transação.
O que é enquire_link no SMPP?
Enquire_link é um comando de keep-alive que qualquer um dos lados envia para verificar se a sessão SMPP ainda está funcionando. A maioria das configurações o envia a cada 30 a 60 segundos, com o intervalo combinado com o fornecedor. Se nenhuma resposta chega, o cliente deve fechar o bind e reconectar automaticamente, para que mensagens e relatórios de entrega não fiquem acumulados.
Precisa de uma rota?
Envie o destino, o tipo de rota e a tarifa alvo. Respondemos com o que podemos entregar.