Expertise developer

Laravel SMS Maroc : Notification Channel et Tutoriel

Tutoriel complet pour intégrer une API SMS dans Laravel au Maroc. Création d'un Notification Channel, queues de messagerie et webhooks DLR.

Laravel SMS Maroc : Notification Channel et Tutoriel

1. L'Architecture des Notifications dans Laravel

Le framework PHP Laravel intègre nativement un système de notifications extrêmement puissant capable de distribuer des alertes sur différents canaux (Mail, Database, Slack). Pour envoyer des SMS via EnvoiSMS.ma de manière idiomatique, la meilleure pratique consiste à créer un canal de notification personnalisé (Custom Notification Channel). Cela sépare proprement la logique d'envoi technique de la logique métier de votre application.

2. Créer le Custom Notification Channel dans Laravel

Vous devez créer une classe Channel qui prendra en charge la requête HTTP vers notre API REST. Voici l'implémentation propre de ce service :

// app/Channels/EnvoiSmsChannel.php namespace App\Channels; use Illuminate\Notifications\Notification; use Illuminate\Support\Facades\Http; class EnvoiSmsChannel { public function send($notifiable, Notification $notification) { $message = $notification->toEnvoiSms($notifiable); $to = $notifiable->routeNotificationFor('EnvoiSms') ?? $notifiable->phone; if (!$to) return; Http::withHeaders([ 'Authorization' => 'Bearer ' . config('services.envoisms.key'), 'Content-Type' => 'application/json', ])->post('https://api.envoisms.ma/v1/messages', [ 'to' => $to, 'body' => $message['body'], 'sender' => $message['sender'] ?? 'ShopMaroc', ]); } }

3. Définir la Notification et activer les files d'attente (Queues)

Pour éviter de ralentir la navigation de vos utilisateurs en attendant la réponse HTTP de l'opérateur, implémentez l'interface `ShouldQueue`. Laravel va automatiquement sérialiser la notification et la distribuer en tâche de fond (via Redis, database ou SQS) :

// app/Notifications/OrderShippedNotification.php namespace App\Notifications; use App\Channels\EnvoiSmsChannel; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Notification; class OrderShippedNotification extends Notification implements ShouldQueue { use Queueable; protected $orderId; public function __construct($orderId) { $this->orderId = $orderId; } public function via($notifiable) { return [EnvoiSmsChannel::class]; } public function toEnvoiSms($notifiable) { return [ 'body' => "Votre commande #" . $this->orderId . " a ete expediee ! Suivi : secure.shop.ma/track", 'sender' => 'ShopMaroc' ]; } }

4. Écouter les Webhooks DLR de livraison

Configurez une route de webhook dans Laravel pour recevoir les accusés de réception. Notre passerelle envoie un payload JSON contenant l'état final de la livraison. Validez la signature HMAC dans un middleware dédié pour sécuriser votre endpoint de webhook.

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

Comment valider le numéro de téléphone dans le modèle Notifiable ?
Ajoutez une méthode `routeNotificationForEnvoiSms` dans votre modèle User pour renvoyer le numéro de téléphone formaté au format international +212.
Puis-je simuler l'envoi de SMS lors de mes tests automatisés ?
Oui. Dans vos tests Laravel, utilisez `Notification::fake()` pour intercepter les envois et vérifier qu'une notification a bien été envoyée sans réellement consommer de crédits.
Comment gérer les échecs de requêtes HTTP vers l'API ?
Laravel gère nativement les retries dans les files d'attente. Vous pouvez configurer `$tries = 3` dans votre job de file d'attente pour réessayer automatiquement en cas de timeout.

Articles suggérés

Webhook SMS : Recevez des Accuses de Reception en Temps Reel
developer

Webhook SMS : Recevez des Accuses de Reception en Temps Reel

Boutons Interactifs WhatsApp Business : Boostez vos OTP et Campagnes au Maroc
developer

Boutons Interactifs WhatsApp Business : Boostez vos OTP et Campagnes au Maroc

PHP SMS API Maroc : Tutoriel Complet avec Code Source
developer

PHP SMS API Maroc : Tutoriel Complet avec Code Source