Expertise technical

Migrer de Twilio vers un fournisseur SMS marocain : guide étape par étape

Migrer twilio fournisseur sms marocain : guide technique avec exemples de code pour les développeurs au Maroc.

Migrer de Twilio vers un fournisseur SMS marocain : guide étape par étape

De nombreuses startups marocaines (Yassir, Glovo, Chari) commencent leur aventure en utilisant Twilio pour l'envoi de leurs [SMS transactionnels (OTP)](/fr/guides/otp-authentication-maroc/). C'est le réflexe standard : la documentation est excellente et l'API est mondialement connue.

Cependant, lorsqu'une entreprise marocaine scale et atteint des volumes critiques (plus de 50 000 SMS par mois), Twilio pose trois problèmes majeurs :

  1. Le prix (Facturation en USD) : Le SMS Twilio vers le Maroc (+212) est structurellement très cher (souvent plus de 0.80 MAD) et vous expose au risque de change.
  2. La délivrabilité : le trafic SMS international vers le Maroc est sévèrement filtré par les pare-feux anti-spam des opérateurs lorsque le Sender ID n'est pas enregistré localement.
  3. La CNDP : Envoyer des données de citoyens marocains vers des serveurs américains pose des problèmes de conformité légale.

Voici le plan d'ingénierie (Runbook) pour migrer vos flux vers une API locale souveraine (comme EnvoiSMS) sans aucune coupure de service.

1. La préparation : Mapping des fonctionnalités

Avant de toucher au code, assurez-vous que le nouveau fournisseur supporte vos flux critiques.

  • Sender ID : Twilio permet d'utiliser un Sender ID Alphanumérique sans grande vérification. Au Maroc, vous devrez enregistrer officiellement votre Sender ID auprès du fournisseur local avant de migrer, sous peine de voir vos SMS bloqués par les opérateurs (délai réglementaire ANRT et opérateurs : 15 à 30 jours, justificatifs : RC et ICE).
  • Webhooks de DLR (Delivery Reports) : Si votre application écoute les statuts Delivered ou Failed de Twilio pour mettre à jour une base de données, vous devrez mapper le nouveau format JSON renvoyé par l'API locale.
  • Concaténation (Long SMS) : Vérifiez que l'API cible gère automatiquement la concaténation des SMS > 160 caractères comme le fait Twilio.

2. Le développement (Adapter le payload API)

L'avantage du SMS, c'est que le protocole HTTP est universel. La migration d'un code Twilio vers une API REST standard (EnvoiSMS) est souvent l'affaire de quelques lignes.

Exemple Twilio (Node.js) :

javascript
const client = require('twilio')(accountSid, authToken);
client.messages.create({
     body: 'Votre code OTP est 1234',
     from: 'MA_MARQUE',
     to: '+2126XXXXXXXX'
   })
  .then(message => console.log(message.sid));

Exemple EnvoiSMS (Node.js - Fetch) :

javascript
const response = await fetch('https://api.envoisms.ma/v1/sms/send', {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${API_KEY}`,
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        recipient: '+2126XXXXXXXX',
        sender_id: 'MA_MARQUE',
        message: 'Votre code OTP est 1234'
    })
});
const data = await response.json();

Le travail consiste principalement à changer le Endpoint, l'authentification (Bearer Token au lieu de Basic Auth), et le nom des variables JSON.

3. Le déploiement progressif (Canary Release / Double Run)

La pire erreur d'un CTO est de faire une "Bascule Big Bang" (éteindre Twilio et allumer le nouveau fournisseur instantanément en production). Si le nouveau Sender ID n'est pas bien propagé chez inwi, vous perdez des ventes.

Utilisez une approche de Rollout Progressif :

  1. Jour 1 (10% du trafic) : Configurez votre backend pour router 10% des requêtes SMS (par exemple uniquement les clients dont l'ID finit par 1) vers l'API marocaine. Laissez 90% sur Twilio.
  2. Jour 2 (Observation) : Analysez les logs. Le taux de conversion OTP est-il identique ? Les DLR (Delivery Reports) remontent-ils correctement de Pending à Delivered ?
  3. Jour 3 (50%) : Basculez la moitié du trafic.
  4. Jour 7 (100%) : Twilio est désactivé et gardé uniquement comme solution de secours (Fallback).

4. Gérer le Fallback (La haute disponibilité)

Même si une plateforme locale comme EnvoiSMS offre des routes locales avec bascule automatique, l'écosystème télécom peut subir des pannes (coupure fibre, maintenance IAM).

Gardez votre compte Twilio ouvert (sans abonnement, en Pay As You Go).
Codez une logique de Retry Automatique :
Si la requête vers l'API EnvoiSMS échoue avec un code 500 HTTP ou un timeout > 5 secondes, votre système attrape l'erreur (catch) et renvoie le même SMS via l'API Twilio. Vous disposez ainsi d'une route de secours en cas d'incident, tout en gardant l'essentiel de votre trafic sur le fournisseur local.

💡 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