Expertise technical

Migrer d'un script PHP fait maison vers une API SMS professionnelle : pourquoi et comment

Migrer script php maison api professionnelle : guide technique avec exemples de code pour les développeurs au Maroc.

sms marocapi smsotp maroc
Migrer d'un script PHP fait maison vers une API SMS professionnelle : pourquoi et comment

L'histoire est presque toujours la même : au lancement du projet (un site e-commerce, un logiciel de clinique), le développeur a besoin d'envoyer quelques SMS. Pour aller vite et minimiser les coûts, il bricole un script PHP `cURL` basique qui tape directement sur une passerelle obscure (souvent un numéro "Simbox" illégal ou un fournisseur gris).

Ce script `send_sms.php` finit par devenir le cœur névralgique de la communication de l'entreprise. Mais quand la PME grandit, ce "bricolage" devient un goulet d'étranglement qui coûte de l'argent et des clients. Voici pourquoi et comment refactoriser ce code legacy vers une **[API SMS B2B professionnelle](/fr/api/)**.

Les 4 signes que votre script "Maison" est en train de craquer

Si vous vous reconnaissez dans l'une de ces situations, le refactoring est urgent : 1. **La cécité des accusés de réception (DLR) :** Votre script envoie le message (`HTTP 200 OK`) et s'arrête là. Vous n'avez aucune idée si le client a *réellement* reçu le SMS sur son téléphone. Les [Delivery Reports (DLR)](/fr/blog/bien-utiliser-les-webhooks-de-delivery-report-dlr-architecture/) sont inexistants. 2. **Le blocage Synchrone (Timeout) :** Votre script PHP s'exécute de manière synchrone. S'il y a 500 SMS à envoyer lors d'une boucle `foreach`, la page web du client (ou du logiciel) "tourne dans le vide" pendant 3 minutes jusqu'à ce que le serveur affiche une erreur `504 Gateway Timeout`. 3. **Le désastre Unicode (Darija / Arabe) :** Dès qu'un utilisateur tape un émoji ou une lettre accentuée, le SMS arrive avec des points d'interrogation (`???`) parce que la gestion de l'encodage GSM-7 vs UCS-2 n'a pas été codée proprement. 4. **Le risque légal (CNDP) :** Le script n'inclut aucune logique de désabonnement. Si un client répond "STOP", il n'y a aucun Webhook pour l'écouter. Vous continuez à le spammer, vous exposant aux [sanctions de la CNDP](/fr/blog/sanctions-et-amendes-cndp-pour-sms-non-conformes-au-maroc-ce-qu/).

Comment refactoriser : De Synchrone à Asynchrone

La migration vers une plateforme professionnelle comme EnvoiSMS ne consiste pas juste à changer l'URL de la requête API. C'est l'occasion d'adopter une **architecture asynchrone**. **L'ancienne méthode (À bannir) :** ```php foreach ($clients as $client) { // Le script attend la réponse pour CHAQUE client. Catastrophe de performance. file_get_contents("http://api-obscure.com/send?to=".$client['tel']."&msg=Promo"); } ``` **La nouvelle méthode (L'API Professionnelle en Asynchrone) :** Plutôt que d'envoyer 500 requêtes HTTP (qui vont tuer vos ressources serveur), utilisez le endpoint d'**[Envoi en Masse (Bulk)](/fr/blog/throttling-sms-au-maroc-a-quelle-vitesse-pouvez-vous-vraiment/)** d'une API moderne. Vous construisez un seul Payload JSON contenant les 500 numéros, et vous faites **UNE seule requête HTTP**. ```php $payload = [ "sender_id" => "MA_MARQUE", "message" => "Promo du jour : -20% sur tout le magasin !", "recipients" => ["+212600000001", "+212600000002", /* ... 498 autres numéros */] ]; $ch = curl_init('https://api.envoisms.ma/v1/sms/bulk'); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer VOTRE_TOKEN_ICI')); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload)); $response = curl_exec($ch); // La plateforme d'EnvoiSMS se charge de la file d'attente (Queuing) de son côté. ```

Gérer proprement les retours (L'approche Webhook)

Déléguez la complexité. Ne demandez plus à votre code PHP de vérifier si le SMS est arrivé. Configurez un routeur (Endpoint) sur votre serveur : `https://votre-site.ma/api/sms-webhook`. Fournissez cette URL à EnvoiSMS. C'est la plateforme qui va "Pousser" (POST) l'information vers votre serveur dès que Maroc Telecom ou inwi confirme la réception. Vous n'avez plus qu'à insérer cette donnée propre dans votre base de données : ```php // Fichier webhook.php $data = json_decode(file_get_contents('php://input'), true); if ($data['status'] === 'DELIVERED') { // Mettre à jour la BDD : UPDATE sms_logs SET status = 'reçu' WHERE id = ? } ``` Migrer un script maison vers une API tier-1 n'est pas un coût supplémentaire : c'est l'assurance-vie de l'intégrité de vos bases de données et de l'expérience de vos utilisateurs marocains.

💡 Pourquoi choisir EnvoiSMS pour votre entreprise ?

Délivrabilité Critique

Moins de 4 secondes pour vos OTP via des canaux directs opérateurs IAM, Inwi et Orange Maroc.

💰

Optimisation du Budget

WhatsApp Business API à 0,13 MAD seulement par session. Le meilleur ROI conversationnel.

🛡️

Données Souveraines (CNDP)

Hébergement conforme aux réglementations de protection des données personnelles locales.