API SMPP
Informations sur l’API
Ce document définit le protocole de communication SMPP pour le service OTP d’EngageLab. Il est conçu pour permettre une livraison des messages et un reporting de statut efficaces et fiables sur des connexions TCP. Les informations de l’API incluent l’adresse IP, le numéro de port et les informations d’authentification requises pour la connexion. Veuillez vous assurer que le compte et le mot de passe fournis via les canaux autorisés sont correctement configurés.
Adresse SMPP
Adresse SMPP : otpsmpp.api.engagelab.cc
Veuillez obtenir les informations suivantes via un canal autorisé, tel que le support commercial ou technique :
- Port :
{ port } - Compte :
{ system_id } - Mot de passe :
{ password }
Établissement d’une connexion
Paquet client
Après avoir établi la connexion TCP, le premier paquet doit envoyer la commande BindTransceiver (0x00000009) pour l’authentification. Ce paquet doit inclure les champs suivants :
- system_id : compte système attribué au client, utilisé pour identifier le client.
- password : mot de passe d’accès correspondant au compte système, utilisé pour l’authentification.
Réponse du serveur
Réponse réussie
- Le serveur renvoie la commande
BindTransceiverResp(0x80000009). - Le champ
system_idest renseigné avec la même valeur que le champsystem_idreçu.
Échec de la réponse
- Si l’authentification échoue, le serveur ferme la connexion TCP et enregistre la raison de l’échec.
Envoi de message
Logique du serveur
L’envoi de message utilise la commande SUBMIT_SM (0x00000004) pour soumettre une demande de livraison de message. La logique du serveur est la suivante :
- Le serveur analyse le contenu de la requête et utilise toujours le canal SMS pour la livraison.
- La livraison du message est synchrone et le résultat est renvoyé via la commande
SUBMIT_SM_RESP(0x80000004). - Le statut de livraison est signalé via des rapports de livraison. Pour plus de détails, voir Rapports de livraison.
- 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 (0x00000004) pour soumettre un message. Le paquet doit inclure les champs suivants :
service_type
- Valeur :
MSG/CODE/MRKT - Valeur par défaut :
MSG
- Valeur :
source_addr
- Peut être laissé vide et n’est actuellement pas utilisé dans OTP.
destination_addr
- Destination du message, qui doit être au format international de numéro de mobile (par exemple,
+6598765432).
- Destination du message, qui doit être au format international de numéro de mobile (par exemple,
short_message
- Le contenu du message utilise le format JSON, comme indiqué ci-dessous :{ "id": "xxx", // ID du modèle "language": "default", // Langue utilisée ; la valeur par défaut est default "code": "xx", // Code de vérification ; utilisé uniquement lorsque service_type est CODE "params": { // Paires clé-valeur personnalisées "key1": "val1" // val doit être au format chaîne de caractères } }
{ "id": "xxx", // ID du modèle "language": "default", // Langue utilisée ; la valeur par défaut est default "code": "xx", // Code de vérification ; utilisé uniquement lorsque service_type est CODE "params": { // Paires clé-valeur personnalisées "key1": "val1" // val doit être au format chaîne de caractères } }Afficher ce bloc de code dans la fenêtre flottante
- Le contenu du message utilise le format JSON, comme indiqué ci-dessous :
data_coding
- Il est recommandé d’utiliser l’encodage
UCS2pour garantir que les caractères spéciaux tels que{}sont correctement analysés. - Si la transmission directe de
{}est prise en charge, l’encodage par défaut peut être utilisé (0x00).
- Il est recommandé d’utiliser l’encodage
status in the header
- Définir sur
0x00000000.
- Définir sur
Réponse du serveur
Le serveur envoie la commande SUBMIT_SM_RESP (0x80000004) en réponse au résultat de livraison du message.
Réponse réussie
- Valeur du champ status dans l’en-tête :
0x00000000 - Champ MESSAGE_ID : ID du message de réponse, utilisé pour faire la corrélation avec les rapports de livraison.
Échec de la réponse
- Le serveur renseigne le champ status dans l’en-tête pour indiquer la raison de l’échec :
| Status Code | Description | Value |
|---|---|---|
ESME_RINVPARAM |
Paramètre invalide. Veuillez vérifier le format du contenu de la requête. | 0x00000032 |
ESME_RSYSERR |
Erreur interne du service. Il est recommandé de réessayer plus tard. | 0x00000008 |
ESME_RSUBMITFAIL |
Échec de la livraison, possiblement en raison d’un problème de modèle ou d’autres raisons. | 0x00000045 |
ESME_RINVNUMMSGS |
Format de contenu incorrect dans le champ short_message. |
0x00000055 |
ESME_RUNKNOWNERR |
Erreur inconnue. Veuillez contacter le support technique. | 0x000000FF |
Rapports de livraison
Le serveur signale le statut de livraison via la commande DELIVER_SM (0x00000005). Les champs concernés sont les suivants :
service_type
- Valeur fixe :
MSG
- Valeur fixe :
source_addr
- Laisser 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 in TLV
- ID du message, utilisé pour la corrélation et l’identification.
MessageState in TLV
- Statut du message, valeur du champ
0x0427.
- Statut du message, valeur du champ
Analyse du statut
Dans le champ short_message, la signification des valeurs stat est la suivante :
| Status | Meaning |
|---|---|
DELIVRD |
Livré avec succès |
UNDELIV |
Échec de la livraison |
Autres remarques
Commandes invalides
Pour les commandes invalides soumises par le client, le serveur renvoie la commande GENERIC_NACK (0x80000000) et enregistre les journaux correspondants. Le serveur prend uniquement en charge les commandes suivantes :
- Commande
EnquireLink(0x00000015) - Commande
Unbind(0x00000006) - Commande
SubmitSM(0x00000004) - Commande
DeliverSMResp(0x80000005) - Commande
BindTransceiver(0x00000009)
Keepalive
Le client doit envoyer la commande EnquireLink (0x00000015) toutes les 30 secondes (tolérance : ±5 secondes) afin de garantir que la connexion reste active.
Signification du statut d’envoi
| Status Code | Meaning |
|---|---|
ESME_RINVPARAM |
Paramètre invalide. Veuillez vérifier le format du contenu de la requête. |
ESME_RINVNUMMSGS |
Format de contenu incorrect dans le champ short_message. |
ESME_RSUBMITFAIL |
Échec de la livraison, possiblement en raison d’un problème de modèle ou d’autres raisons. |
ESME_RSYSERR |
Erreur interne du service. Il est recommandé de réessayer plus tard. |
ESME_RUNKNOWNERR |
Erreur inconnue. Veuillez contacter le support technique. |
DELIVRD |
Message livré avec succès |
UNDELIV |
Le message n’a pas pu être livré |
Terminologie
- SMPP : Short Message Peer-to-Peer Protocol, utilisé pour l’échange de messages avec les passerelles SMS.
- SUBMIT_SM : commande SMPP permettant de soumettre des messages SMS.
- DELIVER_SM : commande SMPP utilisée par le serveur pour signaler le statut de livraison des messages.
Si vous avez des questions, veuillez contacter le support technique OTP.










