Comment recevoir des SMS en utilisant l'API SMPP
Le protocole Short Message Peer-to-Peer (SMPP) est un protocole puissant et standardisé conçu pour faciliter l'échange de messages SMS entre les Entités de Messages Courts Externes (ESME) et les Centres de Service de Messages Courts (SMSC). Pour les développeurs et les entreprises utilisant l'API SMPP avec Ozeki SMS Gateway comme plateforme principale, comprendre les opérations de bas niveau du protocole est essentiel pour construire des solutions SMS robustes. Cet article fournit un guide complet sur la réception de messages SMS en utilisant l'API SMPP, en se concentrant sur les interactions au niveau du protocole et les Unités de Données de Protocole (PDU) spécifiques impliquées dans la configuration, la maintenance et l'utilisation d'une connexion client API SMPP avec Ozeki SMS Gateway.
Introduction à l'API SMPP et Ozeki SMS Gateway
L'API SMPP est largement utilisée dans l'industrie des télécommunications pour son efficacité dans la gestion des SMS en masse via des connexions TCP/IP. Ozeki SMS Gateway, un logiciel SMPP polyvalent, sert à la fois de client et de serveur SMPP, ce qui en fait une plateforme idéale pour l'envoi et la réception de messages SMS. En implémentant le protocole SMPP (versions 3.3 et 3.4, avec support pour la 5.0 dans Ozeki 10 SMS Gateway), Ozeki permet une connectivité transparente avec les SMSC, supportant des applications telles que les campagnes marketing, l'authentification à deux facteurs et les systèmes de notification. Cet article se concentre sur la réception de messages SMS, détaillant les PDU SMPP nécessaires pour la configuration de la connexion, sa maintenance et la réception des messages.
Comprendre les PDU SMPP
SMPP fonctionne en échangeant des Unités de Données de Protocole (PDU) entre le client SMPP (par exemple, Ozeki SMS Gateway) et le serveur SMPP (par exemple, un SMSC). Chaque PDU est un message structuré qui transporte des instructions ou des données spécifiques, telles que des identifiants d'authentification, le contenu des SMS ou des requêtes sur l'état de la connexion. Pour recevoir des messages SMS en utilisant l'API SMPP, le client doit établir une connexion, la maintenir et traiter les messages entrants. Les PDU clés impliquées sont :
- bind_transceiver : Établit une connexion pour l'envoi et la réception de SMS.
- enquire_link : Maintient la connexion en vérifiant son état.
- deliver_sm : Livre les messages SMS entrants du SMSC au client.
- unbind : Termine la session SMPP.
Ci-dessous, nous explorerons chaque PDU en détail, y compris leur structure, leur configuration dans Ozeki SMS Gateway et leur rôle dans la réception de messages SMS via l'API SMPP.
Configuration d'une connexion client API SMPP
Pour recevoir des messages SMS, la première étape consiste à établir une connexion client API SMPP stable avec le SMSC. Ozeki SMS Gateway simplifie ce processus avec son interface intuitive, mais comprendre les opérations sous-jacentes au niveau du protocole est crucial pour les utilisateurs avancés.
1. Configuration du client SMPP dans Ozeki SMS Gateway
Pour configurer une connexion client API SMPP dans Ozeki SMS Gateway, suivez ces étapes :
- Connectez-vous à la console de gestion : Accédez à l'interface web d'Ozeki SMS Gateway en utilisant le compte administrateur (nom d'utilisateur par défaut : "admin").
- Ajoutez une nouvelle connexion : Naviguez vers le panneau "Connexions", cliquez sur "Ajouter une nouvelle connexion" et sélectionnez "Client SMPP" dans la section "Connexions SMS IP".
- Configurez les paramètres SMPP : Fournissez les détails suivants, généralement fournis par votre fournisseur de services SMS :
- Nom d'hôte : L'adresse IP ou le nom d'hôte du SMSC (par exemple, "192.168.1.1").
- Numéro de port : Le port TCP/IP pour la communication SMPP (par défaut 9500, mais confirmez avec votre fournisseur).
- Nom d'utilisateur (ID système) : Votre identifiant de compte pour le SMSC.
- Mot de passe : Le mot de passe associé à l'ID système.
- Version SMPP : Sélectionnez v3.4 pour le support transceiver (recommandé pour l'envoi et la réception).
- Type de système : Optionnel, souvent "SMPP", comme spécifié par le fournisseur.
- Adresse de l'expéditeur : Le numéro de téléphone par défaut pour les SMS sortants (par exemple, "+1234567890").
- Plage d'adresses : Optionnel, utilisé pour recevoir des messages de plusieurs numéros.
- Mode de liaison : Choisissez "Transceiver" pour activer à la fois l'envoi et la réception de SMS via une seule connexion.
- Paramètres avancés : Activez "Se connecter automatiquement au démarrage" pour une reconnexion transparente et cochez "Envoyer des paquets keepalive" pour maintenir la connexion.
- Activer la journalisation : Dans l'onglet "Avancé", activez "Journaliser les événements de communication" pour capturer les PDU SMPP pour le débogage.
- Sauvegardez et connectez : Cliquez sur "OK" pour sauvegarder la configuration, puis sur "Connecter" pour initier la connexion.
Ces paramètres préparent Ozeki SMS Gateway à établir une connexion API SMPP en utilisant la PDU bind_transceiver.
2. La PDU bind_transceiver
La PDU bind_transceiver est la première PDU envoyée par le client SMPP pour s'authentifier et établir une connexion avec le SMSC. Elle permet à la fois l'envoi et la réception de messages SMS via une seule connexion TCP/IP, ce qui la rend idéale pour la plupart des applications API SMPP.
Structure de la PDU bind_transceiver
Longueur de commande : 4 octets (longueur totale de la PDU) ID de commande : 0x00000009 (bind_transceiver) Statut de commande : 0x00000000 (défini à 0 pour les requêtes) Numéro de séquence : Identifiant unique pour la PDU ID système : Nom d'utilisateur pour l'authentification (par exemple, "smppuser") Mot de passe : Mot de passe pour l'authentification (par exemple, "password123") Type de système : Optionnel, souvent "SMPP" Version de l'interface : Version SMPP (par exemple, 0x34 pour v3.4) Plage d'adresses : Optionnel, pour recevoir des messages de numéros spécifiques
Exemple de PDU bind_transceiver (hexadécimal) :
0000002F 00000009 00000000 00000001 736D70707573657200 70617373776F726431323300 534D505000 34 00
Explication :
- Longueur de commande (0000002F) : Longueur totale de la PDU (47 octets).
- ID de commande (00000009) : Identifie la PDU comme bind_transceiver.
- Statut de commande (00000000) : Défini à 0 pour la requête.
- Numéro de séquence (00000001) : Un ID unique pour suivre la PDU.
- ID système (736D70707573657200) : ASCII pour "smppuser" suivi d'un terminateur nul.
- Mot de passe (70617373776F726431323300) : ASCII pour "password123" suivi d'un terminateur nul.
- Type de système (534D505000) : ASCII pour "SMPP" suivi d'un terminateur nul.
- Version de l'interface (34) : Indique SMPP v3.4.
- Plage d'adresses (00) : Nul, car optionnel.
Lors de la réception de la PDU bind_transceiver, le SMSC valide les identifiants. Si réussie, il répond avec une PDU bind_transceiver_resp avec un statut de commande de 0x00000000, indiquant une connexion réussie. Ozeki SMS Gateway journalise cette interaction, qui peut être consultée dans le journal "Événements de communication".
Maintenance de la connexion API SMPP
Une fois la connexion établie, elle doit être maintenue active pour assurer une réception continue des SMS. Le protocole SMPP utilise la PDU enquire_link pour vérifier l'état de la connexion et éviter une déconnexion due à l'inactivité.
La PDU enquire_link
La PDU enquire_link est un message léger envoyé périodiquement par le client SMPP au SMSC pour confirmer que la connexion est active. Ceci est particulièrement important pour maintenir des connexions de longue durée, car les serveurs proxy ou les SMSC peuvent terminer les connexions inactives.
Structure de la PDU enquire_link
Longueur de commande : 0x00000010 (16 octets) ID de commande : 0x00000015 (enquire_link) Statut de commande : 0x00000000 (défini à 0 pour les requêtes) Numéro de séquence : Identifiant unique pour la PDU
Exemple de PDU enquire_link (hexadécimal) :
00000010 00000015 00000000 00000002
Explication :
- Longueur de commande (00000010) : Longueur totale (16 octets).
- ID de commande (00000015) : Identifie la PDU comme enquire_link.
- Statut de commande (00000000) : Défini à 0 pour la requête.
- Numéro de séquence (00000002) : Un ID unique pour suivre la PDU.
Le SMSC répond avec une PDU enquire_link_resp, confirmant l'état de la connexion. Dans Ozeki SMS Gateway, l'activation de l'option "Envoyer des paquets keepalive" dans l'onglet "Communication" garantit que les PDU enquire_link sont envoyées automatiquement à intervalles réguliers (par exemple, toutes les 30 secondes). Ce paramètre est critique pour maintenir une connexion API SMPP stable, surtout lors de la réception intermittente de messages SMS.
Réception de messages SMS avec l'API SMPP
Une fois la connexion établie et maintenue, le client API SMPP peut recevoir des messages SMS via la PDU deliver_sm. Cette PDU est envoyée par le SMSC au client lorsqu'un SMS entrant ou un rapport de livraison est disponible.
La PDU deliver_sm
La PDU deliver_sm transporte le contenu d'un message SMS entrant ou d'un rapport de livraison. Pour la réception de SMS, la PDU contient le numéro de téléphone de l'expéditeur, le numéro du destinataire (numéro virtuel assigné par le fournisseur) et le texte du message.
Structure de la PDU deliver_sm
Longueur de commande : Variable (dépend de la longueur du message) ID de commande : 0x00000005 (deliver_sm) Statut de commande : 0x00000000 (défini à 0 pour les requêtes) Numéro de séquence : Identifiant unique pour la PDU Type de service : Optionnel, souvent nul TON de l'adresse source : Type de numéro pour l'expéditeur NPI de l'adresse source : Indicateur de plan de numérotation pour l'expéditeur Adresse source : Numéro de téléphone de l'expéditeur (par exemple, "+1234567890") TON de l'adresse de destination : Type de numéro pour le destinataire NPI de l'adresse de destination : Indicateur de plan de numérotation pour le destinataire Adresse de destination : Numéro de téléphone du destinataire (par exemple, numéro virtuel) Classe ESM : Type de message (par exemple, 0x04 pour SMS) Codage des données : Encodage des caractères (par exemple, 0x00 pour GSM 7 bits) Message court : Le texte du message (jusqu'à 160 caractères pour GSM)
Exemple de PDU deliver_sm (hexadécimal) :
0000005F 00000005 00000000 00000003 00 01 01 2B3132333435363738393000 01 01 2B3938373635343332313000 00 00 00 00 00 48656C6C6F2C207468697320697320616E20534D5321
Explication :
- Longueur de commande (0000005F) : Longueur totale (95 octets).
- ID de commande (00000005) : Identifie la PDU comme deliver_sm.
- Statut de commande (00000000) : Défini à 0 pour la requête.
- Numéro de séquence (00000003) : Un ID unique pour suivre la PDU.
- Type de service (00) : Nul, car optionnel.
- TON de l'adresse source (01) : Numéro international.
- NPI de l'adresse source (01) : Plan de numérotation ISDN/téléphonique.
- Adresse source (2B3132333435363738393000) : ASCII pour "+1234567890".
- TON de l'adresse de destination (01) : Numéro international.
- NPI de l'adresse de destination (01) : Plan de numérotation ISDN/téléphonique.
- Adresse de destination (2B3938373635343332313000) : ASCII pour "+9876543210".
- Classe ESM (00) : Indique un SMS standard.
- Codage des données (00) : Encodage GSM 7 bits.
- Message court (48656C6C6F2C207468697320697320616E20534D5321) : ASCII pour "Hello, this is an SMS!".
Lors de la réception d'une PDU deliver_sm, Ozeki SMS Gateway traite le message et le route vers l'application ou la base de données configurée. Le client doit répondre avec une PDU deliver_sm_resp pour accuser réception, assurant une livraison fiable. Dans Ozeki, cette réponse est gérée automatiquement, et le message est journalisé dans le panneau "Messages" ou stocké dans la base de données si configuré.
Configuration d'Ozeki SMS Gateway pour la réception de SMS
Pour garantir qu'Ozeki SMS Gateway puisse recevoir des messages SMS :
- Configuration d'un numéro virtuel : Collaborez avec votre fournisseur de services SMS pour assigner un numéro virtuel (IMSI) pour la réception de SMS. Ce numéro est spécifié dans le champ "Plage d'adresses" lors de la configuration.
- Intégration de base de données : Configurez Ozeki pour stocker les messages entrants dans une base de données en modifiant l'instruction SQL SELECT dans la configuration "Utilisateur de base de données" (par exemple, "SELECT id, sender, receiver, msg, msgtype FROM ozekimessagein").
- Journalisation : Activez la journalisation des PDU SMPP pour surveiller les PDU deliver_sm entrantes à des fins de débogage.
Une fois configuré, les messages SMS entrants sont automatiquement routés vers l'application ou la base de données spécifiée, faisant d'Ozeki SMS Gateway une plateforme robuste pour la réception de SMS basée sur l'API SMPP.
Terminaison de la connexion API SMPP
Lorsque la session API SMPP n'est plus nécessaire, le client envoie une PDU unbind pour terminer la connexion de manière gracieuse.
La PDU unbind
La PDU unbind signale au SMSC de fermer la session SMPP.
Structure de la PDU unbind
Longueur de commande : 0x00000010 (16 octets) ID de commande : 0x00000006 (unbind) Statut de commande : 0x00000000 (défini à 0 pour les requêtes) Numéro de séquence : Identifiant unique pour la PDU
Exemple de PDU unbind (hexadécimal) :
00000010 00000006 00000000 00000004
Explication :
- Longueur de commande (00000010) : Longueur totale (16 octets).
- ID de commande (00000006) : Identifie la PDU comme unbind.
- Statut de commande (00000000) : Défini à 0 pour la requête.
- Numéro de séquence (00000004) : Un ID unique pour suivre la PDU.
Le SMSC répond avec une PDU unbind_resp, confirmant la terminaison de la session. Dans Ozeki SMS Gateway, vous pouvez initier ceci en cliquant sur "Déconnecter" dans le panneau "Connexions".
Bonnes pratiques pour les utilisateurs de l'API SMPP
Pour optimiser votre implémentation de l'API SMPP avec Ozeki SMS Gateway pour la réception de SMS :
- Activez les paquets keepalive : Assurez-vous que l'option "Envoyer des paquets keepalive" est activée pour maintenir une connexion stable.
- Surveillez les journaux : Vérifiez régulièrement les journaux des PDU SMPP pour résoudre les problèmes avec les PDU bind_transceiver, enquire_link ou deliver_sm.
- Utilisez le mode transceiver : Préférez le mode transceiver pour l'efficacité, car il supporte à la fois l'envoi et la réception via une seule connexion.
- Sécurisez les connexions : Si supporté par votre fournisseur, utilisez SMPPS (SMPP over SSL/TLS) pour une communication chiffrée.
- Gérez les rapports de livraison : Configurez Ozeki pour traiter les PDU deliver_sm contenant des rapports de livraison pour suivre l'état des messages.
Conclusion
Recevoir des messages SMS en utilisant l'API SMPP avec Ozeki SMS Gateway implique d'établir une connexion avec la PDU bind_transceiver, de la maintenir avec les PDU enquire_link et de traiter les messages entrants via les PDU deliver_sm. En comprenant ces PDU et en configurant Ozeki SMS Gateway de manière appropriée, les développeurs peuvent construire des applications SMS fiables et performantes. La flexibilité de l'API SMPP et l'implémentation robuste d'Ozeki en font un excellent choix pour les entreprises nécessitant des solutions SMS évolutives. Pour plus de détails, référez-vous à la documentation d'Ozeki SMS Gateway ou contactez votre fournisseur de services SMS pour des paramètres de configuration spécifiques.
More information
- Comment configurer une connexion client API SMPP avec votre SMSC
- Comment configurer un serveur API SMPP pour envoyer et recevoir des SMS depuis plusieurs applications
- Comment choisir le bon fournisseur API SMPP pour votre entreprise
- Comment envoyer des SMS en utilisant l'API SMPP au niveau du protocole
- Comment envoyer des SMS via l'API SMPP en utilisant Python
- Comment envoyer des SMS via l'API SMPP en utilisant Javascript
- Comment envoyer des SMS via l'API SMPP en utilisant Java
- Comment envoyer des SMS via l'API SMPP en utilisant PHP
- Comment envoyer des SMS via l'API SMPP en utilisant C#
- Comment envoyer des SMS via l'API SMPP en utilisant C/Cpp
- Comment recevoir des SMS en utilisant l'API SMPP
- Comment recevoir un rapport de livraison SMS en utilisant l'API SMPP
- FAQ API SMPP