BroadNet
SMPPOpérations

SMPP deliver_sm : messages MO et accusés

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

deliver_sm (command_id 0x00000005) est envoyé du SMSC vers l'ESME pour remettre soit un message mobile-originated (MO), soit un accusé de réception (DLR). Son corps reprend celui de submit_sm. Le champ esm_class distingue les deux : le bit 0x04 marque un accusé de réception. L'ESME doit toujours répondre par un deliver_sm_resp.

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

Une PDU, deux fonctions

deliver_sm est l'homologue SMSC-vers-ESME de submit_sm et partage la même disposition de corps. Il porte soit un message MO entrant (un abonné qui envoie un SMS à votre numéro long ou à un code court), soit un accusé de réception rapportant le sort d'un message soumis précédemment. Votre bind receiver ou transceiver gère les deux ; vous branchez sur esm_class pour les router correctement.

§02

Distinguer MO et DLR avec esm_class

Les bits de type de message d'esm_class identifient la charge utile. Un message MO ordinaire a ses bits de type de message à zéro. Un accusé de réception positionne le bit 0x04. Lorsque 0x04 est positionné, short_message contient le texte d'accusé de l'Annexe B (id, stat, err…) et le TLV receipted_message_id porte généralement le message_id d'origine. N'analysez pas le texte d'accusé comme du contenu utilisateur.

Valeurs du type de message d'esm_class sur deliver_sm
esm_class (bits de type de message)Payload
0x00Message normal d'origine mobile (MO)
0x04Accusé de réception SMSC (DLR)
0x08Accusé de réception de livraison SME
0x10Acquittement manuel/utilisateur du SME
0x20Interruption de conversation (CDMA coréen)
0x40Notification de livraison intermédiaire
§03

Toujours répondre par deliver_sm_resp

Pour chaque deliver_sm, l'ESME doit renvoyer un deliver_sm_resp (0x80000005) avec le même sequence_number et ESME_ROK. Si vous n'acquittez pas, le SMSC considère la remise comme échouée, la renvoie, et — parce que les PDU non acquittées comptent dans la fenêtre — peut bloquer toute la session. Acquittez rapidement et effectuez les traitements lourds de façon asynchrone.

MO et DLR tous deux acquittéstext
SMSC → ESME  deliver_sm  seq=88  esm_class=0x00  (MO: user text)
ESME → SMSC  deliver_sm_resp seq=88  status=ESME_ROK
SMSC → ESME  deliver_sm  seq=89  esm_class=0x04  (DLR: id:... stat:DELIVRD)
ESME → SMSC  deliver_sm_resp seq=89  status=ESME_ROK
§04

data_sm comme alternative

data_sm (0x00000103) est une opération plus légère et épurée qui peut porter des messages MO et des accusés à l'aide de TLV (notamment message_payload) plutôt que du champ fixe short_message. Certains réseaux la préfèrent pour le trafic interactif ou de type WAP. Sa prise en charge est optionnelle et propre au fournisseur — confirmez avant de vous y fier.

FAQ

Questions fréquemment posées

Comment distinguer un accusé de réception d'un message MO entrant ?

Vérifiez esm_class sur le deliver_sm. Si le bit de type de message 0x04 est positionné, c'est un accusé de réception et short_message contient le texte d'accusé de l'Annexe B. Si ces bits sont à zéro, c'est un message mobile-originated ordinaire d'un abonné.

Que se passe-t-il si je n'envoie pas deliver_sm_resp ?

Le SMSC suppose que la remise a échoué et renvoie le deliver_sm. Les PDU non acquittées consomment aussi votre fenêtre, si bien que l'absence de réponse peut bloquer la session et produire des traitements MO/DLR en double.

deliver_sm a-t-il les mêmes champs que submit_sm ?

Oui — deliver_sm réutilise la disposition du corps de submit_sm (service_type, adressage TON/NPI, esm_class, data_coding, short_message, etc.). Seuls le sens et l'interprétation de la charge utile diffèrent.

Un même message MO peut-il être concaténé ?

Oui. Les longs messages entrants arrivent sous forme de plusieurs PDU deliver_sm avec un en-tête de concaténation UDH (bit UDHI 0x40 d'esm_class positionné) ou des TLV SAR. Réassemblez-les par numéro de référence et de séquence, comme pour les segments sortants.

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.