Introduction

Dans Laravel 5.3, ils ont introduit un nouveau système de notification qui te permet d’envoyer des notifications facilement à l’aide de SMS, d’emails et plus encore.

Aujourd’hui, nous allons voir comment envoyer des notifications par SMS à l’aide de ClickSend.

Pour simplifier les choses, nous allons faire un petit scénario d’exemple.

Dans cet exemple, nous avons un site de commerce électronique et nous voulons envoyer une notification par SMS si l’un de nos clients a payé avec succès sa commande.

Conditions préalables

Tu dois avoir une installation de Laravel 5.3 qui fonctionne déjà. Si ce n’est pas le cas, tu peux aller ici pour installer Laravel 5.3 : https://laravel.com/docs/5.3#install-laravel
Et tu dois aussi avoir tes informations d’identification pour l’API ClickSend. Si tu n’en as pas, tu peux aller ici : https://dashboard.clicksend.com/

Installation

Maintenant que tout est installé, nous pouvons commencer à nous amuser.

La première étape consiste à installer notre bibliothèque ClickSend Laravel Notification Channel. Ajoute ceci dans ton fichier composer.json:

"require": {
    ...
    "omarusman/laravel_notification_clicksend": "1.0.*"
    ...
}

N’oublie pas de faire une mise à jour de composer pour récupérer notre bibliothèque Laravel Notification Channel.

composer update

La deuxième étape consiste à ajouter et à mettre à jour les informations d’identification de l’API ClickSend. Va dans ton fichier config/services.php et ajoute le code suivant :

!--?php
...
'clicksend' => [
'username' => 'YOUR CLICKSEND API USERNAME',
'api_key' => 'YOUR CLICKSEND API KEY',
],
...

La dernière étape consiste à créer notre propre événement de notification. Dans notre scénario, nous pouvons créer notre notification OrderPaid. Tu peux facilement créer unenotification comme suit :

Exécute cette commande dans le répertoire de ton projet.

php artisan make:notification OrderPaid

Le fichier de notification sera alors ajouté dans ton dossier app/Notifications . Allez-y et modifiez ce fichier app/Notifications/OrderPaid.php. Copie et colle ce qui suit :

!--?php

namespace App\Notifications;

use ClickSendNotification\ClicksendChannel;
use ClickSendNotification\ClicksendSmsMessage;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;

class OrderPaid extends Notification
{
use Queueable;

/**
* Create a new notification instance.
*
* @return void
*/
public function __construct()
{
//
}

/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return [ClicksendChannel::class];
} 

/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toClicksend($notifiable)
{
return (new ClicksendSmsMessage())
->content("Thank you! You successfully paid for your Order #" . $notifiable->order_id);
}

/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}

En gros, ce que nous faisons ici, c’est dire à Laravel que si nous avons déclenché une notification OrderPaid, nous utiliserons ClickSend comme canal.

Tu peux aussi mettre à jour le message de notification en remplaçant le message dans ta fonction content().

À ce stade, tu es complètement installé. C’est très simple.

Utilisation de la notification

L’utilisation du système de notification est maintenant assez simple.
Ok, en supposant que nous ayons le modèle Order Eloquent dans notre code. Tu peux y ajouter le trait Notification, comme suit :

!--?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
class Order extends Model
{
use Notifiable;
...
}

La clé ici est d’utiliser le code use Notifiable dans ton modèle Eloquent.

Maintenant que nous avons déjà configuré notre modèle Eloquent pour qu’il utilise le nouveau système de notification. Nous pouvons maintenant l’utiliser pour envoyer des notifications.

En supposant que, tout au long de ton code, tu aies initialement instancié un modèle Order Eloquent. Par exemple :
Un client a commandé quelques articles et tu as attribué à la commande l’ID : 56.

!--?php
...
$order = Order::find(56);
...

Lorsque notre client a payé sa commande, nous pouvons maintenant lui envoyer une notification par SMS l’informant de son paiement.

Pour envoyer une notification par SMS, c’est assez facile. Tu peux simplement le faire, comme ça :

!--?php
...
$order->notify(new \App\Notifications\OrderPaid());
...

(Optionnel) Comment personnaliser le numéro de téléphone du destinataire ?

Si tu veux aussi personnaliser le numéro de téléphone du destinataire, tu peux procéder comme suit :

Ajoute le champ du numéro de téléphone dans ton modèle Eloquent :

!--?php
...
$order->phone = 'Your customer phone number';
$order->notify(new \App\Notifications\OrderPaid());
...

Ou ajoute une fonction dans ton fichier de modèle Eloquent :

!--?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
class Order extends Model
{
use Notifiable;
...
public function routeNotificationForClicksend()
{
return 'Your customer phone number';
}
...
}

Va ici pour en savoir plus sur la personnalisation du numéro de téléphone du destinataire : https://github.com/omarusman/laravel_notification_clicksend#usage

Conclusion

Dans ce guide, nous avons montré comment installer et configurer facilement le nouveau système de notification de Laravel 5.3 et faire usage de cette nouvelle fonctionnalité pour envoyer des notifications SMS via ClickSend dans tes projets Laravel existants ou futurs.