OTP SMPP Integration Guide - Enhance Your Security with SMPP
Informations sur l'interface
Ce protocole définit le protocole de communication SMPP pour les services OTP, visant à assurer une livraison efficace et fiable des messages ainsi que le reporting de statut 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 de la 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 d'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_idsera rempli avec la valeur reçue dans le champsystem_id.
Réponse échouée
- En cas d'échec de l'authentification, le serveur coupera la connexion TCP et enregistrera la raison.
Envoi de message
Logique 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 :
- Le serveur analyse le contenu de la demande et utilise le canal SMS pour la livraison.
- Les messages sont livrés en mode synchrone et les résultats seront renvoyés avec la commande
SUBMIT_SM_RESP(0x80000004). - Les rapports de livraison seront envoyés, comme détaillé dans la section Rapport de livraison.
- Il est recommandé d'utiliser l'encodage
UCS2pour 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 les messages avec les champs suivants :
- service_type
- Valeurs :
MSG/CODE/MRKT - Par défaut :
MSG
- Valeurs :
- source_addr
- Peut être laissé vide ; non utilisé actuellement pour l'OTP.
- destination_addr
- Cible du message, doit être au format international du numéro de téléphone (par exemple,
+8613800138000).
- Cible du message, doit être au format international du numéro de téléphone (par exemple,
- short_message
- Le contenu du message au format JSON, comme indiqué 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
- Le contenu du message au format JSON, comme indiqué ci-dessous :
- data_coding
- Il est recommandé d'utiliser l'encodage
UCS2pour garantir que les caractères spéciaux{}sont correctement analysés. - Si
{}peut être envoyé directement, l'encodage par défaut (0x00) peut être utilisé.
- Il est recommandé d'utiliser l'encodage
- header status
- À définir sur
0x00000000.
- À définir sur
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'identifiant 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 de statut | 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 dû à un problème de 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 rapporte les résultats de livraison via la commande DELIVER_SM (0x00000005). Les champs sont les suivants :
- service_type
- Valeur fixe :
MSG
- Valeur fixe :
- source_addr
- Vide.
- destination_addr
- Correspond au champ
destination_addrde la commandeSUBMIT_SM.
- Correspond au champ
- 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
- Encapsule le rapport de livraison au format
delivery receipt.
- Encapsule le rapport de livraison au format
- ReceiptedMessageID dans tlv
- L'identifiant du message pour l'association.
- MessageState dans tlv
- L'état du message, valeur du champ
0x0427.
- L'état du message, valeur du champ
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 renverra la commande GENERIC_NACK (0x80000000) et enregistrera l'événement. Le serveur ne prend en charge que les commandes suivantes :
- Commande
EnquireLink(0x00000015) - Commande
Unbind(0x00000006) - Commande
SubmitSM(0x00000004) - Commande
DeliverSMResp(0x80000005) - 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 de statut | 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 dû à un problème de 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 : Protocole Peer-to-Peer pour l'échange de messages entre passerelles SMS.
- SUBMIT_SM : Commande SMPP pour la soumission de messages.
- DELIVER_SM : Commande SMPP pour le reporting du statut de livraison des messages.
Pour toute question, veuillez contacter le Support Technique.

