Pour tester une connexion SMPP, il vous faut un client SMPP (pour vous connecter à un fournisseur et soumettre des messages) et, pour le développement, un serveur ou simulateur SMPP (pour accepter des binds sans envoyer de vrais SMS). Parmi les options open source connues figurent Jasmin et Kannel comme passerelles complètes, et des bibliothèques comme jSMPP, Cloudhopper SMPP, python-smpplib, node-smpp et gosmpp pour les scripts et les outils sur mesure.
Qu'est-ce qu'un client SMPP ?
Un client SMPP (l'ESME dans la terminologie SMPP) ouvre une connexion TCP vers un serveur SMPP, se connecte (bind) avec un system ID et un mot de passe, soumet des messages avec submit_sm et reçoit les accusés de réception sous forme de deliver_sm. Votre plateforme SMS est un client vis-à-vis de chaque route amont. Un client de test, c'est la même chose sous une forme petite et maîtrisable : vous l'utilisez pour vérifier identifiants, types de bind, limites de TPS, encodage et accusés avant de brancher le trafic de production. Pour le contexte : qu'est-ce que le SMPP.
Qu'est-ce qu'un simulateur de serveur SMPP ?
Un simulateur de serveur SMPP accepte les binds comme un SMSC, acquitte les messages soumis et peut renvoyer de faux accusés de réception, mais ne livre rien à de vrais téléphones. Il permet aux développeurs de tester leur client, leur logique de nouvelle tentative et leur gestion des DLR sans dépenser d'argent ni toucher aux réseaux réels. Ne confondez jamais les accusés d'un simulateur avec de vrais accusés : seule la route réelle peut montrer une vraie livraison. Voir les faux DLR pour comprendre pourquoi c'est important en production.
Outils SMPP open source
Ces projets existent bel et bien et sont activement utilisés (vérifiez la licence et l'état de maintenance de chaque projet avant de vous y fier) :
| Outil | Langage | Client | Serveur | Idéal pour |
|---|---|---|---|---|
| Jasmin | Python | Oui | Oui | Passerelle SMS open source complète avec SMPP et HTTP, routage et image Docker. Utile comme serveur SMPP local pour les tests. |
| Kannel | C | Oui | Via module complémentaire | Passerelle SMS et WAP open source de longue date qui se connecte aux SMSC en SMPP et d'autres protocoles. |
| jSMPP | Java | Oui | Oui | Bibliothèque prenant en charge SMPP 3.3, 3.4 et 5.0 ; utilisée aussi par le composant SMPP d'Apache Camel. |
| Cloudhopper SMPP | Java | Oui | Oui | Bibliothèque pour clients et serveurs ; le dépôt principal n'a pas été mis à jour depuis plusieurs années. |
| python-smpplib | Python | Oui | Non | Scripts de test rapides : bind, envoi, lecture des accusés. |
| node-smpp | Node.js | Oui | Oui | Petits serveurs et clients de test en JavaScript. |
| gosmpp | Go | Oui | Non | Bibliothèque client SMPP 3.4 pour les services en Go. |
Pour capturer le trafic, Wireshark décode les PDU SMPP, ce qui aide quand vous devez voir exactement ce qui a été envoyé dans un bind ou un submit_sm. Il existe aussi des clients de bureau commerciaux et des simulateurs de SMSC hébergés ; évaluez-les de la même façon.
Comment tester une connexion SMPP ?
Testez dans cet ordre : réseau, bind, envoi, accusé, débit. La plupart des mises en place ratées s'arrêtent aux deux premières étapes, à cause de la liste blanche d'IP, d'un mauvais port ou d'un mauvais type de bind.
- Réseau. Vérifiez que votre IP est autorisée et que l'hôte et le port sont joignables (un simple test de connexion TCP suffit).
- Bind. Connectez-vous avec le system ID, le mot de passe, le system type (souvent vide) et le type de bind fourni par le fournisseur (TX, RX ou TRX). Un échec de bind renvoie une erreur comme mot de passe invalide ou system ID invalide.
- Envoi. Envoyez un message vers votre propre téléphone avec le sender ID, le TON/NPI et le data_coding convenus, avec registered_delivery réglé pour demander un accusé.
- Accusé. Vérifiez que l'accusé de réception arrive avec le même message ID et un statut final. Comparez avec le téléphone.
- Maintien de session. Laissez le bind inactif et vérifiez que
enquire_linkle maintient ouvert. - Débit. Envoyez à votre TPS contractuel et surveillez les erreurs de throttling.
Le sens des erreurs est dans les codes d'erreur SMPP ; les limites de bind et de TPS dans binds SMPP et TPS.
Serveur SMPP gratuit pour les tests : quelles options ?
L'option gratuite la plus simple consiste à faire tourner en local une passerelle open source comme Jasmin (fournie en image Docker) et à y pointer votre client, ou à écrire un mini-serveur avec node-smpp ou jSMPP qui accepte les binds et renvoie des accusés. Cela couvre les tests de protocole. Pour tester la livraison, rien ne remplace une vraie route et de vrais téléphones sur chaque opérateur : voir comment tester une route SMS.
Choisir entre SMPP et HTTP pour votre intégration
Si votre volume est faible, une API HTTP peut être plus simple que de maintenir des binds SMPP. Si vous revendez ou envoyez de gros volumes, SMPP est la norme. Comparez dans SMPP vs HTTP pour le SMS et qu'est-ce qu'une passerelle SMS.
Obtenir une route SMPP réelle
Une fois que votre client fonctionne avec un simulateur, il vous faut un vrai amont. VoIPMatcher source des routes SMS A2P en SMPP auprès de ses carriers et les gère. Demandez une route SMPP pour les tests et la production.
Questions fréquentes
Existe-t-il un client SMPP en ligne utilisable ?
Certains éditeurs proposent des clients de test SMPP sur le web et des simulateurs de SMSC hébergés. Méfiez-vous avant de saisir des identifiants de production sur des sites tiers, car quiconque les détient peut envoyer du trafic facturé à votre compte. Pour de vrais binds, un client local construit avec une bibliothèque open source, ou votre propre passerelle, garde les identifiants sous votre contrôle.
Peut-on faire tourner un serveur SMPP dans Docker ?
Oui. Jasmin, une passerelle SMS open source avec serveur SMPP, publie une image Docker, et de petits serveurs de test construits avec des bibliothèques comme node-smpp ou jSMPP se conteneurisent facilement. C'est utile pour le développement et les tests automatisés, mais un tel serveur ne livre rien à de vrais téléphones s'il n'est pas relié à des routes réelles.
Pourquoi mon bind SMPP échoue-t-il ?
Causes fréquentes : une adresse IP non autorisée par le fournisseur, un mauvais hôte ou port, un system ID ou un mot de passe incorrect, un mauvais type de bind, ou trop de binds déjà ouverts sur le compte. Le code d'erreur de la réponse au bind indique la cause. Vérifiez d'abord l'accessibilité réseau, puis les identifiants et les limites de binds.
Qu'est-ce que enquire_link en SMPP ?
Enquire_link est le PDU de maintien de session de SMPP. Chaque côté l'envoie périodiquement, souvent toutes les 30 à 60 secondes, et l'autre côté doit répondre. Il garde les connexions inactives ouvertes à travers les pare-feu et permet à chaque côté de détecter vite un lien mort pour se reconnecter au lieu de perdre des messages.
Comment tester le débit SMPP ?
Après un bind réussi et un test sur un seul message, envoyez une rafale contrôlée à votre nombre de messages par seconde contractuel vers une plage de test convenue avec le fournisseur, et surveillez les erreurs de throttling et l'allongement des temps de réponse. Augmentez progressivement. Testez tous vos binds ensemble, car les limites peuvent s'appliquer par compte comme par bind.
Besoin d'une route ?
Indiquez la destination, le type de route et le tarif cible. Nous vous répondons avec ce que nous pouvons fournir.