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
- Connectez le client SMPP
- Liez-vous en tant que transceiver
- Envoyez le SMS en utilisant le PDU submit_sm
- Enregistrez l'ID SMS de la réponse submit_sm_resp
- Attendez que le SMS arrive sur le mobile
- Recevez le PDU de rapport de livraison SMS
- Associez l'ID SMS au message soumis
- 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 1 | Bit 0 | Signification |
---|---|---|
0 | 0 | pas d'accusé de réception |
0 | 1 | accusé de réception demandé lorsque le résultat final est une livraison réussie ou un échec |
1 | 0 | accusé de réception demandé lorsque le résultat final est un échec de livraison |
1 | 1 | accusé 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.
É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. |