Interface SMPP
Informations sur l'interface
Ce protocole définit le protocole de communication SMPP du service EngageLab OTP, conçu pour assurer un envoi de messages et un rapport de statut efficaces et fiables via des connexions TCP. Les informations de l'interface comprennent l'adresse IP, le numéro de port ainsi que les informations d'authentification requises pour la connexion. Veuillez vous assurer d'effectuer une configuration correcte conformément au compte et au mot de passe fournis par le canal autorisé.
Adresse SMPP
Adresse SMPP : otpsmpp.api.engagelab.cc Veuillez obtenir les informations suivantes auprès d'un canal autorisé (par exemple le service commercial ou le support technique) :
- Port :
{ port } - Compte :
{ system_id } - Mot de passe :
{ password }
Établir la connexion
Paquet client
Une fois la connexion TCP établie, le premier paquet doit envoyer la commande BindTransceiver (soit 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 son identité.
- password : le mot de passe d'accès correspondant au compte système, utilisé pour l'authentification de l'identité.
Réponse du serveur
Réponse de succès
- Le serveur envoie une réponse avec la commande
BindTransceiverResp(soit0x80000009). - Le champ
system_idest renseigné avec une valeur identique au champsystem_idreçu.
Réponse d'échec
- Si l'authentification échoue, le serveur ferme cette connexion TCP et enregistre la raison de l'échec.
Envoi de messages
Logique côté serveur
L'envoi de messages utilise la commande SUBMIT_SM (soit 0x00000004) pour soumettre les demandes d'envoi de messages. La logique côté serveur est la suivante :
- Le serveur analyse le contenu de la requête et utilise systématiquement le canal SMS pour l'envoi.
- L'envoi du message se fait en mode synchrone, le résultat étant renvoyé avec la commande
SUBMIT_SM_RESP(soit0x80000004). - Le statut de livraison est rapporté via des messages, voir Rapport de livraison pour plus de détails.
- Il est recommandé d'utiliser l'encodage
UCS2pour prendre en charge les caractères spéciaux et l'internationalisation.
Paquet client
Le client envoie la commande SUBMIT_SM (soit 0x00000004) pour soumettre un message, qui doit contenir les champs suivants :
- service_type
- Valeurs :
MSG/CODE/MRKT - Valeur par défaut :
MSG
- Valeurs :
- source_addr
- Peut être laissé vide, actuellement non utilisé dans OTP.
- destination_addr
- Destinataire du message, doit être au format de numéro de mobile international (par ex.
+6598765432).
- Destinataire du message, doit être au format de numéro de mobile international (par ex.
- short_message
- Contenu du message, au format JSON, comme suit :{ "id": "xxx", // ID du modèle "language": "default", // Langue utilisée, par défaut « default » "code": "xx", // Code de vérification, utilisé uniquement lorsque service_type vaut code "params": { // Paires clé-valeur personnalisées "key1": "val1" // val au format chaîne de caractères } }
{ "id": "xxx", // ID du modèle "language": "default", // Langue utilisée, par défaut « default » "code": "xx", // Code de vérification, utilisé uniquement lorsque service_type vaut code "params": { // Paires clé-valeur personnalisées "key1": "val1" // val au format chaîne de caractères } }Afficher ce bloc de code dans la fenêtre flottante
- Contenu du message, au format JSON, comme suit :
- data_coding
- Il est recommandé d'utiliser l'encodage
UCS2pour garantir l'analyse correcte des caractères spéciaux{}. - Si l'envoi direct de
{}est pris en charge, l'encodage par défaut (soit0x00) peut être utilisé.
- Il est recommandé d'utiliser l'encodage
- status dans le header
- À définir sur
0x00000000.
- À définir sur
Réponse du serveur
Le serveur envoie la commande SUBMIT_SM_RESP (soit 0x80000004) pour répondre au résultat de l'envoi du message.
Réponse de succès
- Valeur du champ status dans le header :
0x00000000 - Champ MESSAGE_ID : ID du message de réponse, utilisé pour associer le rapport de livraison.
Réponse d'échec
- Le serveur renseigne le champ status dans le header pour indiquer la raison de l'échec :
| Code de statut | Description | Valeur |
|---|---|---|
ESME_RINVPARAM |
Paramètre invalide, veuillez vérifier le format du contenu de la requête | 0x00000032 |
ESME_RSYSERR |
Erreur de service interne, veuillez réessayer ultérieurement | 0x00000008 |
ESME_RSUBMITFAIL |
Échec de l'envoi, possiblement dû à un problème de modèle ou à une autre raison | 0x00000045 |
ESME_RINVNUMMSGS |
Erreur de format du contenu du champ short_message |
0x00000055 |
ESME_RUNKNOWNERR |
Erreur inconnue, veuillez contacter le support technique | 0x000000FF |
Rapport de livraison
Le serveur rapporte le rapport de livraison via la commande DELIVER_SM (soit 0x00000005). Les champs spécifiques sont les suivants :
- service_type
- Valeur fixe :
MSG
- Valeur fixe :
- source_addr
- Laissé vide.
- destination_addr
- Identique au
destination_addrde la commandeSUBMIT_SM.
- Identique au
- data_coding
- Méthode d'encodage : valeur par défaut
0x00.
- Méthode d'encodage : valeur par défaut
- esm_class
- À définir sur
0x00.
- À définir sur
- short_message
- Le rapport de livraison est encapsulé au format
delivery receipt.
- Le rapport de livraison est encapsulé au format
- ReceiptedMessageID dans tlv
- ID du message, utilisé pour l'identification par association.
- MessageState dans tlv
- Statut du message, valeur du champ
0x0427.
- Statut du message, valeur du champ
Analyse du statut
Dans le champ short_message, la signification de la valeur stat est la suivante :
| Statut | Signification |
|---|---|
DELIVRD |
Livraison réussie |
UNDELIV |
Échec de la livraison |
Autres précisions
Commandes invalides
Pour les commandes invalides soumises par le client, le serveur renvoie la commande GENERIC_NACK (soit 0x80000000) et enregistre les journaux correspondants. Le serveur ne prend en charge que les commandes suivantes :
- Commande
EnquireLink(soit0x00000015) - Commande
Unbind(soit0x00000006) - Commande
SubmitSM(soit0x00000004) - Commande
DeliverSMResp(soit0x80000005) - Commande
BindTransceiver(soit0x00000009)
Maintien de l'activité
Le client doit envoyer une commande EnquireLink (soit 0x00000015) toutes les 30 secondes (tolérance ±5 secondes) afin de garantir que la connexion reste active.
Signification des statuts d'envoi
| Code de statut | Signification |
|---|---|
ESME_RINVPARAM |
Paramètre invalide, veuillez vérifier le format du contenu de la requête |
ESME_RINVNUMMSGS |
Erreur de format du contenu du champ short_message |
ESME_RSUBMITFAIL |
Échec de l'envoi, possiblement dû à un problème de modèle ou à une autre raison |
ESME_RSYSERR |
Erreur de service interne, veuillez réessayer ultérieurement |
ESME_RUNKNOWNERR |
Erreur inconnue, veuillez contacter le support technique |
DELIVRD |
Message livré avec succès |
UNDELIV |
Le message n'a pas pu être livré |
Glossaire
- SMPP : Short Message Peer-to-Peer Protocol (protocole pair à pair de messages courts), utilisé pour l'échange de messages au sein des passerelles SMS.
- SUBMIT_SM : commande SMPP servant à soumettre des messages SMS.
- DELIVER_SM : commande SMPP utilisée par le serveur pour rapporter le statut de livraison des messages.
Pour toute question, veuillez contacter le support technique OTP.










