Logo Site EngageLab Mark Colored TransparentDocumentation
Rechercher

SMPP

Ce protocole définit le protocole de communication SMPP du service EngageLab SMS, dont l'objectif est d'assurer un envoi de messages et un compte rendu de statut efficaces et fiables via une connexion TCP. Les informations de l'interface comprennent l'adresse IP, le numéro de port ainsi que les informations d'authentification nécessaires à la connexion. Veillez à effectuer une configuration correcte à l'aide du compte et du mot de passe fournis par les canaux autorisés.

Adresse SMPP

otpsmpp.api.engagelab.cc

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

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

Établissement de la connexion

Paquet client

Une fois la connexion TCP établie, le premier paquet doit envoyer la commande BindTransceiver (c'est-à-dire 0x00000009) pour effectuer la vérification d'authentification. Ce paquet doit contenir les champs suivants :

  • system_id : le compte système attribué au client, utilisé pour identifier l'identité.
  • password : le mot de passe d'accès correspondant au compte système, utilisé pour l'authentification.

Réponse du serveur

Réponse en cas de succès

  • Le serveur enverra une réponse avec la commande BindTransceiverResp (c'est-à-dire 0x80000009).
  • Il renseigne le champ system_id avec une valeur identique au champ system_id reçu.

Réponse en cas d'échec

  • En cas d'échec de l'authentification, le serveur coupe la connexion TCP et enregistre le motif de l'échec.

Envoi de messages

Logique côté serveur

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

  1. Le serveur analyse le contenu de la requête et utilise systématiquement le canal SMS pour l'envoi.
  2. L'envoi du message s'effectue en mode synchrone ; le résultat est renvoyé via la commande SUBMIT_SM_RESP (c'est-à-dire 0x80000004).
  3. L'état de la livraison est communiqué par message ; pour plus de détails, consultez Rapport de livraison.
  4. Il est recommandé d'utiliser l'encodage UCS2 afin de prendre en charge les caractères spéciaux et l'internationalisation.

Paquet client

Le client envoie la commande SUBMIT_SM (c'est-à-dire 0x00000004) pour soumettre un message ; elle doit contenir les champs suivants :

  1. service_type
    • Valeurs : MSG / CODE / MRKT
    • Valeur par défaut : MSG
  2. source_addr
    • Peut être laissé vide, actuellement non utilisé dans SMS.
  3. destination_addr
    • Cible du message, doit être au format de numéro de téléphone international (par exemple +6598765432).
  4. short_message
    • Contenu du message, au format JSON, structuré comme suit :
      { "id": "xxx", // Template ID "language": "default", // Used language, default is default "code": "xx", // Verification code, used only when service_type is code "params": { // Custom key-value pairs "key1": "val1" // val format is string } }
                    
                    {
        "id": "xxx",          // Template ID
        "language": "default", // Used language, default is default
        "code": "xx",          // Verification code, used only when service_type is code
        "params": {            // Custom key-value pairs
          "key1": "val1"       // val format is string
        }
      }
      
                  
      Afficher ce bloc de code dans la fenêtre flottante
  5. data_coding
    • Il est recommandé d'utiliser l'encodage UCS2 afin de garantir l'analyse correcte des caractères spéciaux {}.
    • Si l'envoi direct de {} est pris en charge, l'encodage par défaut (c'est-à-dire 0x00) peut être utilisé.
  6. status dans l'en-tête (header)
    • Défini sur 0x00000000.

Réponse du serveur

Le serveur envoie la commande SUBMIT_SM_RESP (c'est-à-dire 0x80000004) pour renvoyer le résultat de l'envoi du message.

Réponse en cas de succès

  • Valeur du champ status dans l'en-tête (header) : 0x00000000
  • Champ MESSAGE_ID : ID du message de réponse, utilisé pour associer les rapports de livraison.

Réponse en cas d'échec

  • Le serveur renseigne le champ status de l'en-tête (header) pour indiquer le motif de l'échec :
Code de statut Description Valeur
ESME_RINVPARAM Paramètres invalides, vérifiez le format du contenu de la requête 0x00000032
ESME_RSYSERR Erreur interne du service, veuillez réessayer ultérieurement 0x00000008
ESME_RSUBMITFAIL Échec de l'envoi, possiblement dû à un problème de modèle ou à une autre cause 0x00000045
ESME_RINVNUMMSGS Format du contenu du champ short_message incorrect 0x00000055
ESME_RUNKNOWNERR Erreur inconnue, veuillez contacter le support technique 0x000000FF

Rapport de livraison

Le serveur communique le rapport de livraison via la commande DELIVER_SM (c'est-à-dire 0x00000005). Les champs concernés sont les suivants :

  1. service_type
    • Valeur fixe : MSG
  2. source_addr
    • Laissé vide.
  3. destination_addr
    • Identique au destination_addr de la commande SUBMIT_SM.
  4. data_coding
    • Méthode d'encodage : valeur par défaut 0x00.
  5. esm_class
    • Défini sur 0x00.
  6. short_message
    • Utilise le format delivery receipt pour encapsuler le rapport de livraison.
  7. ReceiptedMessageID dans le tlv
    • ID du message, utilisé pour l'association et l'identification.
  8. MessageState dans le tlv
    • État du message, valeur du champ 0x0427.

Interprétation des statuts

Dans le champ short_message, la signification de stat est la suivante :

Statut Signification
DELIVRD Livraison réussie
UNDELIV Échec de la livraison

Autres informations

Commandes invalides

Pour les commandes invalides soumises par le client, le serveur renvoie la commande GENERIC_NACK (c'est-à-dire 0x80000000) et consigne les journaux correspondants. Le serveur ne prend en charge que les commandes suivantes :

  1. Commande EnquireLink (c'est-à-dire 0x00000015)
  2. Commande Unbind (c'est-à-dire 0x00000006)
  3. Commande SubmitSM (c'est-à-dire 0x00000004)
  4. Commande DeliverSMResp (c'est-à-dire 0x80000005)
  5. Commande BindTransceiver (c'est-à-dire 0x00000009)

Maintien de connexion

Le client doit envoyer une commande EnquireLink (c'est-à-dire 0x00000015) toutes les 30 secondes (tolérance ±5 secondes) afin de maintenir la connexion active.

Signification des statuts d'envoi

Code de statut Signification
ESME_RINVPARAM Paramètres invalides, vérifiez le format du contenu de la requête
ESME_RINVNUMMSGS Format du contenu du champ short_message incorrect
ESME_RSUBMITFAIL Échec de l'envoi, possiblement dû à un problème de modèle ou à une autre cause
ESME_RSYSERR Erreur interne du service, veuillez réessayer ultérieurement
ESME_RUNKNOWNERR Erreur inconnue, veuillez contacter le support technique
DELIVRD Message livré avec succès
UNDELIV Échec de la livraison du message

Glossaire

  • SMPP : protocole de pair à pair pour messages courts (Short Message Peer-to-Peer Protocol), utilisé pour l'échange de messages au niveau des passerelles SMS.
  • SUBMIT_SM : commande SMPP permettant de soumettre des SMS.
  • DELIVER_SM : commande SMPP utilisée par le serveur pour communiquer l'état de livraison des messages.
Icon Solid Transparent White Qiyu
Contactez-nous