Connecter l'API de messagerie EnvoiSMS à votre backend prend moins de 10 minutes. Mais si vous branchez cette intégration directement sur votre base de données de production et que vous lancez les scripts, vous vous exposez à deux catastrophes :
- Vous pouvez drainer entièrement votre solde de crédits à cause d'une boucle infinie dans votre code.
- Vous pouvez envoyer des SMS de test ("Hello test 123") à des centaines de vrais clients marocains à 3 heures du matin.
C'est pourquoi toutes les intégrations professionnelles exigent le passage par un environnement Sandbox (Bac à sable). Voici comment paramétrer et simuler de vraies conditions réseaux télécoms marocaines sans envoyer de vrais SMS.
Pourquoi tester en sandbox change la donne
Un bon environnement de test ne se limite pas à retourner HTTP 200 OK. L'objectif est de s'assurer que votre application (CRM, Laravel, Node.js) réagit correctement aux événements asynchrones complexes (les Delivery Reports ou Webhooks DLR).
En mode Sandbox sur EnvoiSMS :
- Vos appels API sont gratuits (le solde de crédit n'est pas débité).
- Les SMS ne sont jamais acheminés aux réseaux réels (IAM, Orange, inwi), empêchant toute communication accidentelle à de vrais abonnés.
- Vous pouvez simuler différents statuts DLR (
Delivered,Rejected,Failed) en utilisant des numéros de test spécifiques (Magic Numbers).
Ce qu'un bon environnement de test doit simuler
Pour qualifier votre code avant le déploiement sur les serveurs marocains, utilisez des "Magic Numbers" (Numéros magiques) dans votre payload API de test pour forcer la passerelle à générer des scénarios d'erreurs :
- Tester le succès (Le cas nominal) : Utilisez le numéro
+212600000001. L'API vous renverra unHTTP 200et déclenchera immédiatement un appel Webhook avec le statutDelivered. - Tester le rejet réseau (Le pare-feu) : Utilisez le numéro
+212600000002. La Sandbox simulera un blocage opérateur (ex: Sender ID interdit) et votre Webhook recevra unRejectedavec un code d'erreur métier. - Tester l'erreur fatale (Le faux numéro) : Utilisez le numéro
+212600000003. La Sandbox simulera un numéro qui n'existe plus chez Maroc Telecom, vous retournant un webhookFailed. Votre script de gestion de base de données doit détecter ce statut et désactiver ce contact automatiquement.
Checklist (Go / No-Go) avant de basculer en production
Ne remplacez pas la TEST_API_KEY par votre LIVE_API_KEY avant d'avoir coché ces 4 points :
- [ ] Nettoyage des numéros (E.164) : Votre backend force-t-il tous les formats locaux saisis par vos utilisateurs (
0661123456,07 14 56...) au standard international+212661123456? - [ ] Vérification de la longueur (Encodage) : Avez-vous vérifié si vos SMS en arabe (UCS-2) ne dépassent pas la limite de 70 caractères, sous peine d'être surfacturés sur de multiples segments ?
- [ ] Sécurité des Webhooks : Votre serveur vérifie-t-il la signature HMAC-SHA256 (
X-EnvoiSMS-Signature) pour s'assurer que les événements DLR reçus proviennent bien de nos serveurs et non d'un pirate ? - [ ] Sender ID conforme : Avez-vous entamé la procédure de whitelisting manuelle de votre Sender ID auprès de l'équipe support ? En production, un Sender ID non validé par les opérateurs marocains sera purement et simplement rejeté.
Erreurs fréquentes constatées au moment du passage en prod
La transition de la Sandbox à la production révèle souvent un oubli critique : le Rate-Limiting.
En test, vous envoyez 3 SMS à la main. En production, votre tâche CRON va tenter d'envoyer 10 000 SMS en une seconde. Votre script va frapper la limite de débit réseau et crasher avec des erreurs HTTP 429.
Assurez-vous que votre architecture de production intègre une file d'attente (Redis / Queue) permettant de lisser l'envoi massif à un rythme constant (sous la limite par minute de votre clé API : 60 à 1 200 requêtes/minute selon le palier).
Questions fréquentes
Quelle est la latence d'acheminement sur les réseaux IAM, Inwi et Orange ?
Nous utilisons des routes locales vers Maroc Telecom (IAM), Orange et inwi, avec bascule automatique entre routes. Délai médian jusqu'à la confirmation opérateur : 46 à 58 s (mesuré en septembre 2026).
Comment la plateforme gère-t-elle le format des numéros marocains ?
EnvoiSMS normalise automatiquement les numéros saisis (06..., 07..., 00212...) vers le standard E.164 (+212) pour éviter les échecs de distribution dus au format.