Format du rapport de livraison SMPP

Les rapports de livraison SMPP sont envoyés par le Serveur SMPP, au client SMPP après que les messages texte ont été livrés avec succès au terminal mobile. Le SMS original est soumis par le client SMPP en utilisant une requête smpp submit_sm. Lorsque le submit_sm est accepté par le serveur SMPP, il renvoie une réponse submit_sm_resp, avec un ID de référence SMS. Le rapport de livraison arrive à une date ultérieure. Il contient l'heure de livraison et l'ID de référence SMS qui identifie le SMS. Le document ci-dessous explique le contenu d'un PDU de rapport de livraison SMPP et vous donne un exemple de rapport de livraison.

Quel est le format du rapport de livraison SMPP

Un rapport de livraison SMPP est reçu comme un message texte standard. Le texte du message a un format spécial, qui contient divers champs concernant le SMS soumis à l'origine. Ces champs peuvent être utilisés pour déterminer l'état de la livraison du SMS.

Exemple de rapport de livraison

Rapport de livraison reçu. +44251234567->+0000000 'Livré; À: +44251234567; À: 2022-10-03 12:07:00;
Ref: 636445148; id:636445148 sub:000 dlvrd:001 date de soumission:2210031207 date de fin:2210031207
stat:DELIVRD err: texte:'

Livraison réussie signalée à admin@localhost. ID de tâche: cdfd66e1-880e-4ead-a559-7ca46d9ec669.
Livré; À: +44251234567; À: 2022-10-03 12:07:00; Ref: 636445148; id:636445148 sub:000 dlvrd:001
date de soumission:2210031207 date de fin:2210031207 stat:DELIVRD err: texte:

Comment recevoir un rapport de livraison SMPP

Pour recevoir un rapport de livraison SMPP

  1. Connectez le client SMPP
  2. Liez-vous en tant que transceiver
  3. Envoyez le SMS en utilisant le PDU submit_sm
  4. Enregistrez l'ID SMS de la réponse submit_sm_resp
  5. Attendez que le SMS arrive sur le mobile
  6. Recevez le PDU de rapport de livraison SMS
  7. Associez l'ID SMS au message soumis
  8. Enregistrez l'horodatage de la livraison du SMS

Paramètres du rapport de livraison SMPP

SMPP prend en charge les accusés de réception / rapports de livraison (DLR) pour les SMS afin que votre application puisse déterminer les résultats de la livraison.

Le retour d'un accusé de réception / rapport de livraison (DLR) dépend de la valeur définie dans le champ registered_delivery du message envoyé à l'origine par l'ESME au MC dans une opération submit_sm. Cela peut être configuré pour des scénarios de non-livraison et de livraison uniquement, ce qui peut entraîner des circonstances où l'accusé de réception ne sera pas retourné. Les accusés de réception de message sont retournés dans les opérations deliver_sm et data_sm.

Les champs suivants sont pertinents dans les opérations deliver_sm et data_sm lorsqu'elles sont utilisées pour transmettre des accusés de réception.

  • adresse source (c'est-à-dire source_addr_ton, source_addr_npi, source_addr) - L'adresse source sera prise à partir de l'adresse de destination du message court original, qui a généré l'accusé de réception. L'accusé de réception apparaît comme s'il émanait du destinataire du message enregistré original.
  • adresse de destination (c'est-à-dire dest_addr_ton, dest_addr_npi, destination_addr) - L'adresse de destination sera prise à partir de l'adresse source du message court original, qui a généré l'accusé de réception. L'accusé de réception est adressé au SME qui a envoyé à l'origine le message enregistré.
  • esm_class - Le bit 2 de l'esm_class est défini à 1 pour indiquer que le message est un accusé de réception MC. Si le bit 5 est défini, alors le message est une notification intermédiaire.
  • message_state TLV - Indique l'état final du message original. Voir États des messages ci-dessous.
  • network_error_code TLV - Voir Codes d'erreur ci-dessous.
  • receipted_message_id TLV - ID de message qui a été retourné à l'ESME par le MC dans le PDU submit_sm_resp.

Accusé de réception MC

Ce type de message est utilisé pour transporter un accusé de réception MC. Le MC, en détectant l'état final d'un message enregistré, génère normalement un nouveau message d'accusé de réception adressé à l'expéditeur du premier message. L'accusé de réception MC est ensuite livré à l'ESME dans une opération deliver_sm ou data_sm.

ESME-vers-MC: Définissez les bits 0 et 1 dans le champ registered_delivery d'une opération submit_sm pour demander un accusé de réception MC.

Bit 1Bit 0Signification
00pas d'accusé de réception
01accusé de réception demandé lorsque le résultat final est une livraison réussie ou un échec
10accusé de réception demandé lorsque le résultat final est un échec de livraison
11accusé de réception demandé lorsque le résultat final est une livraison réussie (SMPP v5 uniquement)

MC-vers-ESME: Le bit 2 dans le champ esm_class d'un deliver_sm indique que l'accusé de réception est un accusé de réception MC.

Notification intermédiaire

Une notification intermédiaire est une forme spéciale de message que le MC peut envoyer à un ESME pour une livraison de message terminé mobile. Elle fournit un état intermédiaire d'une tentative de livraison de message.

Les utilisations typiques sont de signaler le résultat des tentatives de livraison effectuées pendant la durée de vie de réessai du message dans le MC. Cela pourrait être utilisé pour suivre les différentes raisons pour lesquelles un message n'est pas livré à sa destination et utiliser cela pour profiler la disponibilité de l'abonné.

La prise en charge de la fonctionnalité de notification intermédiaire est spécifique à l'implémentation du MC et au fournisseur de services MC et dépasse le cadre de cette spécification.

ESME-vers-MC: Définissez le bit 4 dans le champ registered_delivery d'un PDU submit_sm pour demander une notification intermédiaire.

MC-vers-ESME: Le bit 5 dans le champ esm_class d'un deliver_sm indique que l'accusé de réception est une notification intermédiaire.

Récépissé dans le champ short_message

De nombreuses API pré-v3.4 et centres de messages prenant en charge la v3.3 sont susceptibles d'avoir un moyen de transmettre les informations de réception dans le champ short_message. Cela s'applique aux accusés de réception MC et aux notifications intermédiaires. Les spécificités du format de ces informations dépendent de la passerelle SMS et de la plateforme SMSC et dépassent le cadre de cette spécification. Cependant, voici l'approche généralement adoptée :

id:123A456B sub:1 dlvrd:1 submit date:1702281424 done date:1702281424 stat:DELIVRD err:0 text:


Les champs sont spécifiés comme suit :

Champ Taille (octets) Description
id Variable L'ID du message attribué par le SMSC lors de la soumission initiale.
sub 3 Nombre de messages courts initialement soumis. La valeur peut être complétée par des zéros non significatifs.
dlvrd 3 Nombre de messages courts livrés. La valeur peut être complétée par des zéros non significatifs.
submit date 10

La date et l'heure auxquelles le message court a été soumis. Dans le cas d'un message remplacé, il s'agit de la date à laquelle le message original a été remplacé. Le format est le suivant :

YYMMDDhhmm où :
YY deux derniers chiffres de l'année (00-99) MM = mois (01-12)
DD jour (01-31)
hh heure (00-23)
mm minute (00-59)

done date 10 La date et l'heure auxquelles le message court a atteint son état final. Le format est le même que pour la date de soumission.
stat 7 Le statut final du message. Voir États des messages ci-dessous. Le texte d'état peut être abrégé.
err 3 Un code d'erreur réseau ou SMSC pour le message. Voir Codes d'erreur ci-dessous.
text 20 Champ inutilisé, le résultat sera vide.

Améliorations Ozeki SMPP

Après avoir implémenté un très grand nombre de connexions SMPP, nous avons identifié les problèmes suivants dans diverses implémentations :

Observation 1 :

La valeur du champ ID dans le rapport de livraison (que nous appelons Submit Reference dans Ozeki) est souvent différente de l'ID que nous recevons du fournisseur de services SMS. La différence la plus courante est que l'ID original est retourné sous forme de nombre entier standard et l'ID dans le rapport de livraison est retourné sous forme hexadécimale. L'inverse peut également se produire. La bonne nouvelle est que dans cette situation, une fois convertis, les deux nombres correspondent, permettant ainsi d'associer les rapports de livraison. Les implémentations SMS Ozeki effectuent diverses vérifications et peuvent gérer correctement cette situation.

Observation 2 :

La valeur des champs de date est souvent fournie dans un format non standard. Ozeki analyse actuellement les champs de date en utilisant les modèles suivants. Vous pouvez également définir un modèle personnalisé dans le formulaire de configuration du logiciel.

  • "yyMMddHHmm",
  • "yyMMddHHmmss",
  • "dd-MMM-yyHH:mm",
  • "dd-MMM-yyHH:mm:ss",
  • "dd-MMM-yy HH:mm",
  • "dd-MMM-yy HH:mm:ss",
  • "yyyyMMddHHmmss",
  • "yyyyMMddHHmm",
  • personnalisé

États des messages

Voici une liste des états autorisés pour un message court. Le MC renvoie la valeur message_state à l'ESME dans le cadre de la réponse query_sm_resp, query_broadcast_sm_resp ou du PDU de réception deliver_sm.

Les états intermédiaires sont des états qui peuvent changer. Les états finaux sont des états qui représentent un état de fin de vie pour un message.

Par exemple, un message en réessai peut renvoyer un état ENROUTE. À un moment donné dans le futur, ce message expirera ou sera livré. L'état passera alors à EXPIRED ou DELIVERED. Ainsi, un message dans l'état ENROUTE est dit être dans un état intermédiaire.

Un message dans l'état DELIVERED ou EXPIRED ne peut pas passer à un autre état. Ces états sont donc des états finaux.

<

Qu'est-ce qu'un rapport de livraison ?

Lors de l'envoi d'un SMS, la confirmation de sa réception par le destinataire est cruciale. Le SMS utilise un système de confirmation en deux étapes pour garantir cela.

Lorsque vous soumettez votre message au Centre de Service de Messages Courts (SMSC) du réseau mobile, vous recevez un "rapport de soumission de message". Ce rapport indique que le SMSC a accepté votre message pour livraison. Il inclut également un identifiant unique, souvent appelé "référence de message" ou "ID de rappel", qui permet de suivre le message dans le système du SMSC.

Après acceptation, le message est stocké dans le SMSC jusqu'à ce que la livraison soit possible. Cela peut être retardé si le téléphone du destinataire est éteint, prolongeant potentiellement l'attente jusqu'à plusieurs jours. Une fois que le téléphone du destinataire est disponible, le message est livré. Lorsque la livraison est réussie, un "rapport de livraison" est renvoyé à l'expéditeur sous forme d'un SMS séparé.

Ce SMS de confirmation contient :

  • Numéro de téléphone du destinataire : Vérifie que le destinataire prévu a bien reçu le message.
  • Référence du message (ID de rappel) : Correspond à l'identifiant du rapport de soumission original, établissant un lien clair entre les deux étapes.
  • Horodatage de la livraison : Indique l'heure exacte à laquelle le message est parvenu au téléphone du destinataire.
Il est important de noter que le "rapport de livraison" désigne généralement ce SMS de confirmation reçu par l'expéditeur. Tous les réseaux mobiles ne proposent pas de rapports de livraison, et certains nécessitent une activation par l'utilisateur.

Puis-je ajuster la durée de stockage d'un message dans le SMSC ?

Bien que les SMS offrent un moyen pratique de communiquer, il est crucial de s'assurer qu'un message atteint son destinataire rapidement. C'est là qu'intervient le concept de "période de validité".

La période de validité désigne la durée pendant laquelle un SMS est stocké dans le Centre de Service de Messages Courts (SMSC) lorsque le téléphone du destinataire est indisponible. Si le message n'est pas livré après cette période, il est automatiquement supprimé du SMSC, évitant ainsi une livraison tardive.

Avantages de l'utilisation de la période de validité :

  • Messages sensibles au temps : Imaginez envoyer un SMS concernant un événement ponctuel, comme une émission TV en direct. Définir une période de validité appropriée garantit que le message ne sera pas livré après la fin de l'événement, le rendant inutile.
  • Efficacité du réseau : En évitant des tentatives de livraison inutiles vers des téléphones indisponibles, la période de validité optimise les ressources du réseau.
Certains réseaux mobiles permettent de définir directement la période de validité pour les messages sortants, mais le paramètre par défaut est souvent le maximum autorisé par le réseau (généralement une semaine). Cette valeur peut être ajustée via les options intégrées du téléphone.

Il est important de noter que tous les réseaux mobiles ne proposent pas de périodes de validité configurables par l'utilisateur, et certains peuvent exiger une activation manuelle pour les rapports de livraison (confirmation que le message a bien atteint le destinataire).

More information

 
État du message Valeur Type
SCHEDULED 0 Intermédiaire
Le message est programmé. La livraison n'a pas encore été initiée. Un message soumis avec une heure de livraison programmée peut renvoyer cet état lors d'une requête. Cette valeur a été ajoutée pour SMPP v5.0. Les MC prenant en charge les versions antérieures de SMPP v3.3 et SMPP v3.4 sont susceptibles de renvoyer ENROUTE pour les messages programmés.
ENROUTE
ou EN_ROUTE
1 Intermédiaire
Le message est en cours de route. Il s'agit d'un état général utilisé pour décrire un message comme étant actif dans le MC. Le message peut être en réessai ou envoyé à un réseau mobile pour livraison au mobile.
DELIVERED 2 Final
Le message est livré à destination. Le message a été livré à la destination. Aucune autre livraison n'aura lieu.
EXPIRED 3 Final
La période de validité du message a expiré. Le message n'a pas pu être livré dans sa période de validité et/ou sa période de réessai. Aucune autre tentative de livraison ne sera effectuée.
DELETED 4 Final
Le message a été supprimé. Le message a été annulé ou supprimé du MC. Aucune autre tentative de livraison n'aura lieu.
UNDELIVERABLE 5 Final
Le message est non livrable. Le message a rencontré une erreur de livraison et est considéré comme définitivement non livrable. Aucune autre tentative de livraison ne sera effectuée. Certaines erreurs de réseau ou internes au MC entraînent la non-livraison permanente d'un message. Des exemples de telles erreurs seraient un abonné inconnu ou une erreur de réseau indiquant que le mobile de destination donné s'est vu refuser le service SMS ou ne peut pas prendre en charge les SMS.
Next:Secure SMPP Client |SMPP simulator