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-à-dire0x80000009). - Il renseigne le champ
system_idavec une valeur identique au champsystem_idreç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 :
- Le serveur analyse le contenu de la requête et utilise systématiquement le canal SMS pour l'envoi.
- L'envoi du message s'effectue en mode synchrone ; le résultat est renvoyé via la commande
SUBMIT_SM_RESP(c'est-à-dire0x80000004). - L'état de la livraison est communiqué par message ; pour plus de détails, consultez Rapport de livraison.
- Il est recommandé d'utiliser l'encodage
UCS2afin 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 :
- service_type
- Valeurs :
MSG/CODE/MRKT - Valeur par défaut :
MSG
- Valeurs :
- source_addr
- Peut être laissé vide, actuellement non utilisé dans SMS.
- destination_addr
- Cible du message, doit être au format de numéro de téléphone international (par exemple
+6598765432).
- Cible du message, doit être au format de numéro de téléphone international (par exemple
- 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
- Contenu du message, au format JSON, structuré comme suit :
- data_coding
- Il est recommandé d'utiliser l'encodage
UCS2afin 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-à-dire0x00) peut être utilisé.
- Il est recommandé d'utiliser l'encodage
- status dans l'en-tête (header)
- Défini sur
0x00000000.
- Défini sur
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 :
- 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éfini sur
0x00.
- Défini sur
- short_message
- Utilise le format
delivery receiptpour encapsuler le rapport de livraison.
- Utilise le format
- ReceiptedMessageID dans le tlv
- ID du message, utilisé pour l'association et l'identification.
- MessageState dans le tlv
- État du message, valeur du champ
0x0427.
- État du message, valeur du champ
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 :
- Commande
EnquireLink(c'est-à-dire0x00000015) - Commande
Unbind(c'est-à-dire0x00000006) - Commande
SubmitSM(c'est-à-dire0x00000004) - Commande
DeliverSMResp(c'est-à-dire0x80000005) - Commande
BindTransceiver(c'est-à-dire0x00000009)
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.










