BroadNet
SMPPSessão

Operações de bind SMPP e estados de sessão

Atualizado em 3 min de leituraBaseado em padrões
Resposta direta

Um bind autentica e abre uma sessão SMPP. O bind_transmitter permite apenas enviar, o bind_receiver apenas receber e o bind_transceiver ambos numa só ligação. O ESME fornece system_id, password e system_type; o SMSC responde com um bind_resp. Um bind bem-sucedido move a sessão para um estado bound até ao unbind ou à desligação.

DiagramaUma sessão SMPP entre a sua plataforma e BroadNet
A sua plataforma (ESME)
BroadNet SMSC
Uma conexão TCP/TLS persistente
  1. bind_transceiverAbrir e autenticar a sessão
  2. bind_transceiver_respSessão aceita
  3. submit_smEnviar uma mensagem
  4. submit_sm_respAceito, ID da mensagem devolvida
  5. deliver_smRelatório de entrega ou mensagem recebida
  6. deliver_sm_respConfirmado
  7. enquire_linkKeepalive em modo ocioso
§01

Os três tipos de bind

O tipo de bind fixa a direção do tráfego para a sessão. Escolha transmitter para apenas saída (submit MT), receiver para apenas entrada (MO e relatórios de entrega) ou transceiver para transportar ambas as direções numa única ligação — a escolha habitual na v3.4, pois reduz para metade o número de ligações que tem de manter.

Operações de bind
Operaçãocommand_idA sessão pode
bind_transmitter0x00000002Somente enviar mensagens (MT)
bind_receiver0x00000001Somente receber mensagens / relatórios de entrega (MO + DLR)
bind_transceiver0x00000009Enviar e receber numa única conexão
§02

Campos do pedido de bind

O corpo do bind transporta as credenciais e as capacidades declaradas do ESME. O system_id e a password autenticam a conta; o system_type categoriza opcionalmente o ESME; o interface_version declara a versão SMPP; addr_ton, addr_npi e address_range permitem ao SMSC encaminhar tráfego originado no terminal para este bind. Um address_range incorreto bloqueia silenciosamente o encaminhamento de MO/DLR num bind receiver ou transceiver — um erro de integração comum.

Corpo de bind_transmitter/receiver/transceiver
CampoTipoMáx.Notas
system_idC-Octet String16Identificador de conta/login
passwordC-Octet String9Palavra-passe da conta
system_typeC-Octet String13Categoria ESME opcional (geralmente vazia)
interface_versionInteger10x34 = v3.4, 0x50 = v5.0
addr_tonInteger1Tipo de número para encaminhar MO para este ESME
addr_npiInteger1Indicador do plano de numeração
address_rangeC-Octet String41Endereço/regex que o SMSC encaminha para este bind
§03

Resposta de bind

O SMSC responde com o bind_resp correspondente (por exemplo bind_transceiver_resp, 0x80000009). O command_status é ESME_ROK em caso de sucesso ou um erro como ESME_RINVPASWD (password inválida), ESME_RINVSYSID (ID de sistema inválido) ou ESME_RBINDFAIL. O corpo devolve o system_id do SMSC e, na v3.4+, um TLV opcional sc_interface_version que indica ao ESME qual a versão que o SMSC realmente suporta.

Troca de bind transceiver bem-sucedidatext
ESME → SMSC   bind_transceiver   seq=1  system_id=acme  password=****
SMSC → ESME   bind_transceiver_resp seq=1  status=ESME_ROK  system_id=smsc01
  (session now BOUND_TRX — submit_sm and deliver_sm may flow)
§04

Estados de sessão

Uma sessão SMPP é uma pequena máquina de estados. Começa OPEN após a ligação TCP, passa a um estado BOUND num bind bem-sucedido e regressa a UNBOUND e depois a CLOSED com o unbind ou a desligação. Enviar uma operação ilegal para o estado atual devolve ESME_RINVBNDSTS (estado de bind incorreto). Fazer bind duas vezes numa ligação devolve ESME_RALYBND (já bound).

Estados de sessão SMPP
EstadoSignificado
OPENTCP conectado, bind ainda não realizado
BOUND_TXVinculado como transmitter — pode enviar
BOUND_RXVinculado como receiver — pode receber
BOUND_TRXVinculado como transceiver — pode enviar e receber
UNBOUNDUnbind emitido, aguardando encerramento
CLOSEDConexão desfeita
§05

Unbind e outbind

O unbind (0x00000006) pede um fecho gracioso da sessão; o par responde unbind_resp e ambos os lados fecham a ligação TCP. O outbind (0x0000000B) é o caso na direção inversa: o SMSC pede a um ESME em escuta que inicie um bind receiver, usado quando o SMSC precisa de entregar tráfego MO a um ESME que normalmente aguarda ligações.

Perguntas frequentes

Perguntas frequentes

Devo usar pares transmitter/receiver ou um transceiver?

Prefira um transceiver quando o fornecedor o permitir — uma ligação transporta submit e receção, reduzindo para metade a contagem de ligações e simplificando a correlação dos relatórios de entrega. Use binds transmitter e receiver separados apenas quando o fornecedor exigir separação por direção.

Para que serve o system_type?

O system_type identifica opcionalmente a categoria do ESME (por exemplo uma classe de aplicação específica). Muitos fornecedores deixam-no vazio. Defina-o apenas com o valor exato que o fornecedor aprovisionar, pois alguns encaminham com base nele.

Porque é que o meu bind receiver não recebe relatórios de entrega?

A causa mais comum é uma incompatibilidade de address_range / addr_ton / addr_npi: o SMSC encaminha tráfego MO e DLR para o bind cujo address_range corresponde, pelo que um valor errado retém-nos silenciosamente. Confirme os valores exatos aprovisionados com o fornecedor.

O que significa ESME_RALYBND?

ESME_RALYBND (0x00000005) significa que o ESME já está num estado bound e tentou fazer bind novamente na mesma sessão. Faça bind exatamente uma vez por ligação; se detetou um bind falhado, abra uma nova ligação em vez de refazer o bind da anterior.

Quantos binds concorrentes posso abrir?

Isso é um limite comercial definido pelo seu fornecedor, não pelo protocolo. Abrir mais binds do que os aprovisionados é uma causa frequente de limitação de taxa ou suspensão de conta — acorde por escrito a contagem de binds e o TPS por bind antes de escalar.

Referências

Especificações de origem

Os padrões publicados nos quais esta página se baseia. Abre num novo separador.

BNMantido pela equipa de engenharia BroadNet·Mensagens de nível de operadora desde 2003
Coloque-o no fio.

Construa com uma vinculação SMPP real e uma API REST.

Solicite acesso de teste com chaves de teste reais: envie primeiro para o seu próprio número verificado e, em seguida, passe para o ambiente de produção em mais de 200 países assim que a sua identidade de remetente e rotas forem aprovadas.