logoDocumentation
Rechercher

OTP SMPP Integration Guide - Enhance Your Security with SMPP

Informations sur l'interface

Ce protocole définit le protocole de communication SMPP pour les services OTP, visant à assurer une livraison efficace et fiable des messages ainsi que le reporting de statut via des connexions TCP. Les informations d'interface incluent l'adresse IP, le port et les identifiants d'authentification. Veuillez vous assurer que les identifiants fournis par des canaux autorisés sont correctement configurés.

Adresse SMPP

Veuillez obtenir les informations suivantes auprès des canaux autorisés (par exemple, commercial ou support technique) :

  • Adresse IP : { ip }
  • Port : { port }
  • Compte : { system_id }
  • Mot de passe : { password }

Établissement de la connexion

Paquet de données client

Après l'établissement de la connexion TCP, le premier paquet de données doit envoyer la commande BindTransceiver (0x00000009) pour l'authentification. Le paquet doit inclure les champs suivants :

  • system_id : Le compte système attribué au client pour la vérification d'identité.
  • password : Le mot de passe d'accès correspondant au compte système pour l'authentification.

Réponse du serveur

Réponse réussie

  • Le serveur enverra une commande BindTransceiverResp (0x80000009) en réponse.
  • Le champ system_id sera rempli avec la valeur reçue dans le champ system_id.

Réponse échouée

  • En cas d'échec de l'authentification, le serveur coupera la connexion TCP et enregistrera la raison.

Envoi de message

Logique serveur

L'envoi de messages utilise la commande SUBMIT_SM (0x00000004) pour soumettre les demandes de livraison de messages. La logique du serveur est la suivante :

  1. Le serveur analyse le contenu de la demande et utilise le canal SMS pour la livraison.
  2. Les messages sont livrés en mode synchrone et les résultats seront renvoyés avec la commande SUBMIT_SM_RESP (0x80000004).
  3. Les rapports de livraison seront envoyés, comme détaillé dans la section Rapport de livraison.
  4. Il est recommandé d'utiliser l'encodage UCS2 pour prendre en charge les caractères spéciaux et l'internationalisation.

Paquet de données client

Le client envoie la commande SUBMIT_SM (0x00000004) pour soumettre les messages avec les champs suivants :

  1. service_type
    • Valeurs : MSG / CODE / MRKT
    • Par défaut : MSG
  2. source_addr
    • Peut être laissé vide ; non utilisé actuellement pour l'OTP.
  3. destination_addr
    • Cible du message, doit être au format international du numéro de téléphone (par exemple, +8613800138000).
  4. short_message
    • Le contenu du message au format JSON, comme indiqué ci-dessous :
      { "id": "xxx", // ID du modèle "language": "default", // Langue, par défaut "default" "code": "xx", // Code de vérification, utilisé lorsque service_type est "code" "params": { // Paires clé-valeur personnalisées "key1": "val1" // La valeur doit être une chaîne de caractères } }
                    
                    {
        "id": "xxx",          // ID du modèle
        "language": "default", // Langue, par défaut "default"
        "code": "xx",          // Code de vérification, utilisé lorsque service_type est "code"
        "params": {            // Paires clé-valeur personnalisées
          "key1": "val1"       // La valeur doit être une chaîne de caractères
        }
      }
      
                  
      Afficher ce bloc de code dans la fenêtre flottante
  5. data_coding
    • Il est recommandé d'utiliser l'encodage UCS2 pour garantir que les caractères spéciaux {} sont correctement analysés.
    • Si {} peut être envoyé directement, l'encodage par défaut (0x00) peut être utilisé.
  6. header status
    • À définir sur 0x00000000.

Réponse du serveur

Le serveur répond aux demandes de livraison de messages avec la commande SUBMIT_SM_RESP (0x80000004).

Réponse réussie

  • Valeur du champ header status : 0x00000000
  • Champ MESSAGE_ID : L'identifiant du message utilisé pour associer les rapports de livraison.

Réponse échouée

  • Le serveur renseigne le champ header status pour indiquer la raison de l'échec :
Code de statut Description Valeur
ESME_RINVPARAM Paramètres invalides, vérifiez le format de la demande 0x00000032
ESME_RSYSERR Erreur interne du serveur, réessayez plus tard 0x00000008
ESME_RSUBMITFAIL Échec de la livraison, possiblement dû à un problème de modèle 0x00000045
ESME_RINVNUMMSGS Format de short_message invalide 0x00000055
ESME_RUNKNOWNERR Erreur inconnue, contactez le support technique 0x000000FF

Rapport de livraison

Le serveur rapporte les résultats de livraison via la commande DELIVER_SM (0x00000005). Les champs sont les suivants :

  1. service_type
    • Valeur fixe : MSG
  2. source_addr
    • Vide.
  3. destination_addr
    • Correspond au champ destination_addr de la commande SUBMIT_SM.
  4. data_coding
    • Méthode d'encodage : valeur par défaut 0x00.
  5. esm_class
    • À définir sur 0x00.
  6. short_message
    • Encapsule le rapport de livraison au format delivery receipt.
  7. ReceiptedMessageID dans tlv
    • L'identifiant du message pour l'association.
  8. MessageState dans tlv
    • L'état du message, valeur du champ 0x0427.

Analyse du statut

Le champ short_message contient la valeur stat, indiquant ce qui suit :

Statut Signification
DELIVRD Livré avec succès
UNDELIV Échec de la livraison

Informations complémentaires

Commandes invalides

Pour les commandes invalides soumises par le client, le serveur renverra la commande GENERIC_NACK (0x80000000) et enregistrera l'événement. Le serveur ne prend en charge que les commandes suivantes :

  1. Commande EnquireLink (0x00000015)
  2. Commande Unbind (0x00000006)
  3. Commande SubmitSM (0x00000004)
  4. Commande DeliverSMResp (0x80000005)
  5. Commande BindTransceiver (0x00000009)

Maintien de la connexion

Le client doit envoyer la commande EnquireLink (0x00000015) toutes les 30 secondes (±5 secondes) pour maintenir l'activité de la connexion.


Signification des statuts de livraison

Code de statut Signification
ESME_RINVPARAM Paramètres invalides, vérifiez le format de la demande
ESME_RINVNUMMSGS Format de short_message invalide
ESME_RSUBMITFAIL Échec de la livraison, possiblement dû à un problème de modèle
ESME_RSYSERR Erreur interne du serveur, réessayez plus tard
ESME_RUNKNOWNERR Erreur inconnue, contactez le support technique
DELIVRD Livré avec succès
UNDELIV Échec de la livraison

Terminologie

  • SMPP : Protocole Peer-to-Peer pour l'échange de messages entre passerelles SMS.
  • SUBMIT_SM : Commande SMPP pour la soumission de messages.
  • DELIVER_SM : Commande SMPP pour le reporting du statut de livraison des messages.

Pour toute question, veuillez contacter le Support Technique.

icon
Contactez-nous