Resposta curta
Para conectar a um fornecedor de SMS via SMPP, solicite um bind, registre seus IPs de origem e abra uma conexão TLS no host e na porta informados. Envie bind_transceiver com seu system_id e senha, envie mensagens com submit_sm, confirme cada relatório deliver_sm e envie enquire_link regularmente para manter a sessão ativa.
O que o fornecedor entrega a você
O acesso SMPP normalmente é configurado pelo fornecedor, não em autoatendimento. Informe os países de destino, os IDs de remetente (Sender IDs), o volume de pico esperado e os IPs públicos de onde você vai se conectar.
| Item | O que é |
|---|---|
| Host e porta TLS | Onde o seu cliente se conecta |
| system_id e senha | Credenciais do bind; guarde como segredos |
| system_type | Em geral vazio, a menos que o fornecedor defina um valor |
| Binds e throughput | Quantas sessões você pode abrir e a taxa acordada por bind |
| Lista de IPs liberados | Só IPs de origem registrados conseguem fazer bind |
Abra e mantenha a sessão
Um bind transceiver envia e recebe na mesma sessão. Use binds transmitter e receiver separados só se o seu cliente exigir.
- Abra uma conexão TLS no host e na porta recebidos.
- Envie bind_transceiver com system_id e senha e aguarde bind_transceiver_resp com command_status 0.
- Envie cada mensagem com submit_sm e guarde o message_id do submit_sm_resp.
- Receba os relatórios de entrega como deliver_sm e responda a cada um com deliver_sm_resp.
- Envie enquire_link quando a sessão estiver ociosa e reconecte com backoff se as respostas pararem.
- Encerre com unbind e aguarde o unbind_resp.
Quais campos do submit_sm causam mais rejeições?
- source_addr_ton e source_addr_npi: 5 e 0 para ID de remetente alfanumérico, 1 e 1 para número internacional.
- destination_addr: código do país mais o número, sem sinal de mais nem zeros à esquerda.
- data_coding: 0 para o alfabeto padrão GSM-7, 8 para UCS-2 (árabe, emoji e outras escritas).
- registered_delivery: 1 para solicitar relatório de entrega.
- short_message comporta até 254 octetos; para conteúdo maior, use o TLV message_payload com sm_length 0, nunca os dois.
Erros comuns de bind e envio
A OmniChannels.ai configura binds SMPP 3.4 sobre TLS por conta, com IPs de origem liberados, e revendedores e parceiros de atacado podem ter binds dedicados.
| command_status | Causa provável | Solução |
|---|---|---|
| ESME_RBINDFAIL | system_id errado ou IP não liberado | Verifique as credenciais e o IP de origem |
| ESME_RINVPASWD | Senha errada | Verifique as credenciais |
| ESME_RINVSRCADR | ID de remetente ou seu TON/NPI inválido | Corrija o remetente e o TON/NPI |
| ESME_RTHROTTLED | Envio acima da taxa acordada | Reduza o ritmo e tente de novo com backoff |
