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.

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.

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) 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.

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) 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 professionnelle 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é Opérateurs

Routes locales vers IAM, Orange et Inwi, avec bascule automatique entre routes et statut de livraison transmis par webhook.

💰

Optimisation Budgétaire

WhatsApp Business API dès 0,65 MAD par message. Le meilleur retour sur investissement.

🛡️

Données Souveraines (CNDP)

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

Q.Comment suivre l'acheminement sur les réseaux IAM, Inwi et Orange ?
Nos routes locales vers Maroc Telecom (IAM), Orange et inwi, avec bascule automatique entre routes, renvoient un statut de livraison opérateur pour chaque message, par webhook. Le délai de remise dépend de l'opérateur et du réseau du destinataire.
Q.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 tout échec de distribution.

Articles suggérés

Formatage SMS au Maroc : Sauts de ligne, Encodage GSM-7 vs UCS-2 et Optimisation des Coûts
technical

Formatage SMS au Maroc : Sauts de ligne, Encodage GSM-7 vs UCS-2 et Optimisation des Coûts

Formatage WhatsApp Business au Maroc : Texte Enrichi, Emojis et Boutons Interactifs
technical

Formatage WhatsApp Business au Maroc : Texte Enrichi, Emojis et Boutons Interactifs

Chatbot WhatsApp en Darija Marocain : Comment l'IA Traite l'Arabizi et le Mix Français-Arabe
technical

Chatbot WhatsApp en Darija Marocain : Comment l'IA Traite l'Arabizi et le Mix Français-Arabe