BroadNet
SMPPSessione

Operazioni di bind e stati della sessione SMPP

Aggiornato il 3 min di letturaBasato su standard
Risposta diretta

Un bind autentica e apre una sessione SMPP. bind_transmitter consente solo l'invio, bind_receiver solo la ricezione e bind_transceiver entrambi su una sola connessione. L'ESME fornisce system_id, password e system_type; l'SMSC risponde con un bind_resp. Un bind riuscito porta la sessione in stato bound fino all'unbind o alla disconnessione.

DiagrammaUna sessione SMPP tra la vostra piattaforma e BroadNet
La vostra piattaforma (ESME)
BroadNet SMSC
Una connessione TCP/TLS persistente
  1. bind_transceiverAprire e autenticare la sessione
  2. bind_transceiver_respSessione accettata
  3. submit_smInviare un messaggio
  4. submit_sm_respAccettato, ID messaggio restituito
  5. deliver_smRicevuta di consegna o messaggio in entrata
  6. deliver_sm_respConfermato
  7. enquire_linkKeepalive durante l'inattività
§01

I tre tipi di bind

Il tipo di bind fissa la direzione del traffico per la sessione. Scegliete transmitter per il solo traffico in uscita (submit MT), receiver per il solo traffico in ingresso (MO e ricevute di consegna) o transceiver per trasportare entrambe le direzioni su un'unica connessione — la scelta abituale in v3.4, poiché dimezza il numero di connessioni da mantenere.

Operazioni di bind
Operazionecommand_idLa sessione può
bind_transmitter0x00000002Solo invio di messaggi (MT)
bind_receiver0x00000001Solo ricezione di messaggi / conferme di consegna (MO + DLR)
bind_transceiver0x00000009Sia l'invio che la ricezione avvengono tramite un'unica connessione
§02

Campi della richiesta di bind

Il body del bind trasporta le credenziali e le capacità dichiarate dall'ESME. system_id e password autenticano l'account; system_type categorizza opzionalmente l'ESME; interface_version dichiara la versione SMPP; addr_ton, addr_npi e address_range consentono all'SMSC di instradare verso questo bind il traffico mobile-originated. Un address_range non corrispondente blocca silenziosamente l'instradamento di MO/DLR su un bind receiver o transceiver — un errore di integrazione frequente.

Body di bind_transmitter/receiver/transceiver
CampoTipoMaxNote
system_idC-Octet String16Identificativo dell'account/di accesso
passwordC-Octet String9Password dell'account
system_typeC-Octet String13Categoria ESME facoltativa (spesso vuota)
interface_versionInteger10x34 = v3.4, 0x50 = v5.0
addr_tonInteger1Tipo di numero per l'instradamento MO verso questo ESME
addr_npiInteger1Indicatore del piano di numerazione
address_rangeC-Octet String41Indirizzo/regex che l'SMSC instrada a questo bind
§03

Risposta di bind

L'SMSC risponde con il bind_resp corrispondente (ad esempio bind_transceiver_resp, 0x80000009). command_status è ESME_ROK in caso di successo oppure un errore come ESME_RINVPASWD (password non valida), ESME_RINVSYSID (system ID non valido) o ESME_RBINDFAIL. Il body restituisce il system_id dell'SMSC e, a partire dalla v3.4, un TLV opzionale sc_interface_version che comunica all'ESME quale versione l'SMSC supporta effettivamente.

Scambio di bind transceiver riuscitotext
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

Stati della sessione

Una sessione SMPP è una piccola macchina a stati. Parte da OPEN dopo la connessione TCP, passa a uno stato BOUND con un bind riuscito e torna a UNBOUND e poi CLOSED con l'unbind o la disconnessione. L'invio di un'operazione illecita per lo stato corrente restituisce ESME_RINVBNDSTS (stato di bind non corretto). Un doppio bind sulla stessa connessione restituisce ESME_RALYBND (già in bind).

Stati della sessione SMPP
StatoSignificato
OPENTCP connesso, bind non ancora eseguito
BOUND_TXAssociato come transmitter — può inviare
BOUND_RXAssociato come receiver — può ricevere
BOUND_TRXAssociato come transceiver — può inviare e ricevere
UNBOUNDUnbind inviato, in attesa di chiusura
CLOSEDConnessione abbattuta
§05

Unbind e outbind

unbind (0x00000006) richiede una chiusura ordinata della sessione; il peer risponde con unbind_resp ed entrambe le parti chiudono la connessione TCP. outbind (0x0000000B) è il caso in direzione inversa: l'SMSC chiede a un ESME in ascolto di avviare un bind receiver, usato quando l'SMSC deve consegnare traffico MO a un ESME che normalmente resta in attesa di connessioni.

FAQ

Domande frequenti

Meglio coppie transmitter/receiver o un transceiver?

Preferite un transceiver dove il provider lo consente — un'unica connessione trasporta sia il submit sia la ricezione, dimezzando il numero di connessioni e semplificando la correlazione delle ricevute di consegna. Usate bind transmitter e receiver separati solo quando il provider richiede la separazione direzionale.

A cosa serve system_type?

system_type identifica opzionalmente la categoria dell'ESME (ad esempio una specifica classe applicativa). Molti provider lo lasciano vuoto. Impostatelo solo al valore esatto fornito dal provider, poiché alcuni instradano in base a esso.

Perché il mio bind receiver non riceve le ricevute di consegna?

La causa più comune è una discrepanza in address_range / addr_ton / addr_npi: l'SMSC instrada il traffico MO e DLR verso il bind il cui address_range corrisponde, quindi un valore errato le trattiene silenziosamente. Verificate con il provider i valori esatti configurati.

Cosa significa ESME_RALYBND?

ESME_RALYBND (0x00000005) indica che l'ESME è già in stato bound e ha tentato un nuovo bind sulla stessa sessione. Eseguite esattamente un bind per connessione; se un bind è fallito, aprite una nuova connessione anziché ripetere il bind su quella vecchia.

Quanti bind simultanei posso aprire?

È un limite commerciale fissato dal vostro provider, non dal protocollo. Aprire più bind di quanti ne siano stati assegnati è una causa frequente di throttling o sospensione dell'account — concordate per iscritto il numero di bind e il TPS per bind prima di scalare.

Riferimenti

Specifiche della fonte

Gli standard pubblicati su cui si basa questa pagina. Si apre in una nuova scheda.

BNGestito dal team di ingegneri BroadNet·Servizi di messaggistica di livello carrier dal 2003
Mettilo sul filo

Realizzato con un vero binding SMPP e un'API REST.

Richiedi l'accesso di prova con chiavi di test reali: invia prima al tuo numero verificato, poi passa alla produzione in oltre 200 paesi una volta approvata l'identità del mittente e i percorsi.