BroadNet
SMPPSession

Opérations de bind SMPP et états de session

Mis à jour le 3 min de lectureFondé sur des normes
Réponse directe

Un bind authentifie et ouvre une session SMPP. bind_transmitter n'autorise que l'émission, bind_receiver que la réception, et bind_transceiver les deux sur une même connexion. L'ESME fournit system_id, password et system_type ; le SMSC répond par un bind_resp. Un bind réussi fait passer la session à un état lié jusqu'à l'unbind ou la déconnexion.

SchémaUne session SMPP entre votre plateforme et BroadNet
Votre plateforme (ESME)
BroadNet SMSC
Une connexion TCP/TLS persistante
  1. bind_transceiverOuvrir et authentifier la session
  2. bind_transceiver_respSession acceptée
  3. submit_smEnvoyer un message
  4. submit_sm_respAccepté, ID du message renvoyé
  5. deliver_smAccusé de réception ou message entrant
  6. deliver_sm_respConfirmé
  7. enquire_linkKeepalive en cas d'inactivité
§01

Les trois types de bind

Le type de bind fixe le sens du trafic pour la session. Choisissez transmitter pour l'émission seule (submit MT), receiver pour la réception seule (MO et accusés de réception), ou transceiver pour porter les deux sens sur une seule connexion — le choix habituel en v3.4, car il divise par deux le nombre de connexions à maintenir.

Opérations de bind
Opérationcommand_idLa session peut
bind_transmitter0x00000002Envoyer des messages (MT) uniquement
bind_receiver0x00000001Réception des messages/accusés (MO + DLR) uniquement
bind_transceiver0x00000009Envoi et réception sur une seule connexion
§02

Champs de la requête de bind

Le corps du bind porte les identifiants et les capacités déclarées de l'ESME. system_id et password authentifient le compte ; system_type catégorise éventuellement l'ESME ; interface_version déclare la version SMPP ; addr_ton, addr_npi et address_range permettent au SMSC de router le trafic mobile-originated vers ce bind. Un address_range mal renseigné bloque silencieusement le routage MO/DLR sur un bind receiver ou transceiver — un bug d'intégration fréquent.

Corps de bind_transmitter/receiver/transceiver
ChampTypeMaxNotes
system_idC-Octet String16Identifiant de compte/connexion
passwordC-Octet String9Mot de passe du compte
system_typeC-Octet String13Catégorie ESME facultative (souvent vide)
interface_versionInteger10x34 = v3.4, 0x50 = v5.0
addr_tonInteger1Type de numéro pour l'acheminement du MO vers cet ESME
addr_npiInteger1Indicateur de plan de numérotation
address_rangeC-Octet String41Adresse/regex que le SMSC achemine vers ce bind
§03

Réponse au bind

Le SMSC répond par le bind_resp correspondant (par exemple bind_transceiver_resp, 0x80000009). command_status vaut ESME_ROK en cas de succès, ou une erreur telle que ESME_RINVPASWD (mot de passe invalide), ESME_RINVSYSID (system ID invalide) ou ESME_RBINDFAIL. Le corps renvoie le system_id du SMSC et, en v3.4+, un TLV optionnel sc_interface_version indiquant à l'ESME la version réellement prise en charge par le SMSC.

Échange de bind transceiver réussitext
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

États de session

Une session SMPP est une petite machine à états. Elle démarre à OPEN après la connexion TCP, passe à un état BOUND sur un bind réussi, puis revient à UNBOUND puis CLOSED à l'unbind ou à la déconnexion. Émettre une opération illégale pour l'état courant renvoie ESME_RINVBNDSTS (état de bind incorrect). Un double bind sur une même connexion renvoie ESME_RALYBND (déjà lié).

États de session SMPP
ÉtatSignification
OPENConnecté en TCP, pas encore lié (bind)
BOUND_TXLié en tant qu'émetteur — peut soumettre
BOUND_RXLié en tant que récepteur — peut recevoir
BOUND_TRXLié en tant qu'émetteur-récepteur — peut soumettre et recevoir
UNBOUNDUnbind émis, en attente de fermeture
CLOSEDConnexion interrompue
§05

Unbind et outbind

unbind (0x00000006) demande une fermeture gracieuse de la session ; le pair répond unbind_resp et les deux côtés ferment la connexion TCP. outbind (0x0000000B) est le cas en sens inverse : le SMSC demande à un ESME en écoute d'initier un bind receiver, utilisé lorsque le SMSC doit remettre du trafic MO à un ESME qui attend normalement les connexions.

FAQ

Questions fréquemment posées

Faut-il utiliser des paires transmitter/receiver ou un transceiver ?

Privilégiez un transceiver quand le fournisseur l'autorise — une seule connexion porte l'émission et la réception, ce qui divise par deux le nombre de connexions et simplifie la corrélation des accusés de réception. N'utilisez des binds transmitter et receiver séparés que lorsque le fournisseur exige une séparation directionnelle.

À quoi sert system_type ?

system_type identifie éventuellement la catégorie de l'ESME (par exemple une classe d'application donnée). De nombreux fournisseurs le laissent vide. Ne le renseignez qu'avec la valeur exacte provisionnée par le fournisseur, car certains routent en fonction de ce champ.

Pourquoi mon bind receiver ne reçoit-il pas d'accusés de réception ?

La cause la plus fréquente est une incohérence d'address_range / addr_ton / addr_npi : le SMSC route le trafic MO et DLR vers le bind dont l'address_range correspond, si bien qu'une valeur erronée les retient silencieusement. Confirmez les valeurs exactes provisionnées auprès du fournisseur.

Que signifie ESME_RALYBND ?

ESME_RALYBND (0x00000005) signifie que l'ESME est déjà dans un état lié et a tenté un nouveau bind sur la même session. Faites exactement un bind par connexion ; en cas de bind échoué, ouvrez une nouvelle connexion plutôt que de rebinder l'ancienne.

Combien de binds simultanés puis-je ouvrir ?

C'est une limite commerciale fixée par votre fournisseur, pas par le protocole. Ouvrir plus de binds que provisionné est une cause fréquente de throttling ou de suspension de compte — convenez du nombre de binds et du TPS par bind par écrit avant de monter en charge.

Références

Spécifications sources

Les normes publiées sur lesquelles repose cette page. S'ouvre dans un nouvel onglet.

BNMaintenu par l'équipe d'ingénierie BroadNet·Messagerie de qualité opérateur depuis 2003
Placez-le sur le fil

Conçu avec une véritable liaison SMPP et une API REST.

Demandez un accès de test avec de véritables clés de test : envoyez d’abord à votre propre numéro vérifié, puis passez en production dans plus de 200 pays une fois que votre identité d’expéditeur et vos routes seront approuvées.