SMPP

Informations sur l'interface

Ce protocole définit le protocole de communication SMPP pour les services de SMS, visant à garantir une livraison efficace et fiable des messages ainsi qu'un rapport d'état 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 d'une 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 de l'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 messages

Logique côté 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 des 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 dans le SMS.
  3. destination_addr
    • Cible du message, doit être au format numéro de téléphone international (par exemple, +6598765432).
  4. short_message
    • Contenu du message au format JSON, comme 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 {} soient correctement interprété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'ID 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 d'état 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 à cause du 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 signale 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'ID 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 retournera 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 d'état 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 à cause du 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 : Short Message Peer-to-Peer Protocol pour l'échange de messages entre passerelles SMS.
  • SUBMIT_SM : Commande SMPP pour la soumission de messages.
  • DELIVER_SM : Commande SMPP pour le rapport d'état de livraison des messages.

Pour toute question, veuillez contacter le Support Technique.

Icon Solid Transparent White Qiyu
Contactez-nous