https://d226lax1qjow5r.cloudfront.net/blog/blogposts/send-whatsapp-messages-in-laravel-with-vonages-native-sdk/whatsapp_laravel_v2.png

Envoyer des messages WhatsApp dans Laravel avec le SDK natif de Vonage

Publié le February 7, 2023

Temps de lecture : 11 minutes

Dans vos applications Laravel, il se peut que vous souhaitiez contacter vos utilisateurs via WhatsApp. Que ce soit pour envoyer des notifications à vos utilisateurs ou pour diffuser des promotions commerciales à des prospects potentiels. Pouvoir envoyer des messages directement sur les téléphones de vos utilisateurs et communiquer avec eux peut être un outil extrêmement puissant dans votre arsenal.

Cependant, communiquer directement avec l'API de WhatsApp peut parfois s'avérer un peu compliqué. Ainsi, au lieu de faire cela, nous pouvons utiliser Vonage pour gérer l'envoi des messages et la communication avec l'API WhatsApp.

Vonage est une plateforme de communication en nuage qui fournit une variété d'API qui vous permettent de communiquer avec vos utilisateurs par SMS, Voice, WhatsApp, et plus encore. Elle offre un moyen pratique d'envoyer des messages WhatsApp sans avoir à se soucier de la complexité sous-jacente de l'API WhatsApp. Il dispose également d'un package Laravel qui le rend super facile à intégrer dans votre application Laravel.

Dans ce tutoriel, nous allons voir comment vous pouvez envoyer des messages WhatsApp en utilisant Laravel et Vonage.

Ce qu'il faut savoir

Lorsque vous travaillez avec WhatsApp, il y a plusieurs choses à savoir en ce qui concerne les types de messages que vous pouvez envoyer et le moment où vous pouvez les envoyer.

Modèles de messages

Pour tenter de réduire le nombre de spams que les entreprises peuvent envoyer, une entreprise (comme la vôtre) peut seulement entamer une conversation avec un utilisateur qu'en envoyant un "modèle de message" (MTM). Les MTM sont des messages pré-approuvés que vous devez créer dans le WhatsApp Business Manager et qui doivent être approuvés par WhatsApp avant que vous puissiez les utiliser.

Les MTM prennent en charge des paramètres qui vous permettent de personnaliser les messages que vous envoyez aux utilisateurs. Par exemple, vous pouvez créer un MTM dont le contenu est le suivant :

Hello {{1}}. Your order {{2}} has been shipped.

Si nous devions utiliser "John" comme premier paramètre et "1234" comme second paramètre, le message qui serait envoyé à l'utilisateur serait le suivant :

Hello John. Your order 1234 has been shipped.

Toutefois, si l'utilisateur vous envoie un message en premier, vous pourrez lui répondre dans un délai de 24 heures sans devoir utiliser un MTM.

Fenêtre d'assistance à la clientèle 24 heures sur 24

WhatsApp propose une fenêtre d'assistance à la clientèle de 24 heures. Dans cette fenêtre, une entreprise peut librement envoyer un message à un utilisateur final sans avoir besoin d'envoyer un message type.

La fenêtre de 24 heures peut être lancée de deux manières différentes :

  • L'utilisateur répond à un MTM envoyé par l'entreprise.

  • L'utilisateur envoie un message à l'entreprise.

Ainsi, comme vous pouvez le constater, la fenêtre de 24 heures requiert la participation de l'utilisateur à la conversation.

Si aucun message n'est envoyé dans la fenêtre de 24 heures, la fenêtre expirera et vous devrez en recommencer une nouvelle.

Clés API et connexion à WhatsApp

Avant de commencer quoi que ce soit lié au code, vous devrez d'abord vous assurer que vous disposez d'un compte WhatsApp Business actif avec un numéro de téléphone configuré.

Vous devrez également disposer d'un Account Vonage. Si vous n'en avez pas, vous pouvez vous inscrire pour un Account ici. Une fois que vous avez un compte, vous devrez récupérer votre clé API et votre secret à partir de votre tableau de bord Vonage.

Une fois que vous avez fait cela, vous pourrez vous rendre sur la page " External Accounts " (comptes externes) de votre tableau de bord Vonage. Ici, vous pourrez connecter votre compte WhatsApp à votre compte Vonage. Vous devrez suivre les étapes pour relier vos comptes entre eux.

Après avoir fait cela, votre Account Vonage devrait maintenant être connecté à WhatsApp et prêt à être utilisé.

Si vous avez des difficultés à configurer votre compte Vonage ou à connecter votre compte WhatsApp Business, il est utile de consulter la documentation Vonage pour plus d'informations.

Installation et configuration

Maintenant que notre Account Vonage est prêt à être utilisé, nous pouvons commencer à configurer notre application Laravel pour l'utiliser. Pour commencer, nous devons installer le paquetage Laravel de paquetage Laravel de Vonage à l'aide de Composer. Vous pouvez le faire en exécutant la commande suivante à la racine de votre projet :

composer require vonage/vonage-laravel

Une fois le paquet installé, nous pouvons publier le fichier de configuration du paquet. Cela nous permettra de configurer la clé et le secret de l'API de Vonage. Vous pouvez le faire en exécutant la commande suivante :

php artisan vendor:publish --provider="Vonage\Laravel\ServiceProvider"

Pour les besoins de ce tutoriel, je vais partir du principe que le même numéro de téléphone est utilisé chaque fois que nous voulons envoyer un message WhatsApp, nous allons donc définir notre numéro de téléphone WhatsApp dans mon fichier .env fichier. Pour pouvoir faire cela, nous aurons également besoin d'ajouter un nouveau champ de configuration afin de pouvoir récupérer le numéro de téléphone dans le code de notre application. Je placerai ce nouveau champ de configuration dans mon fichier config/services.php fichier :

return [

	// ...
    
	'vonage' => [
    	'whatsapp' => [
        	'from_phone_number' => env('WHATSAPP_PHONE_NUMBER'),
    	],
	],

	// ...

];

Nous pourrons ensuite récupérer cette valeur dans le code de notre application à l'aide de la commande config('services.vonage.whatsapp.from_phone_number').

Maintenant que nous avons créé nos nouveaux champs de configuration, nous pouvons ajouter notre numéro de téléphone, notre clé d'API et notre secret d'API à notre .env à notre fichier

VONAGE_KEY=YOUR-API-KEY-HERE VONAGE_SECRET=YOUR-VONAGE-SECRET-HERE VONAGE_WHATSAPP_FROM=YOUR-WHATSAPP-PHONE-NUMBER

Voilà, c'est fait ! Nous sommes prêts à envoyer des messages WhatsApp.

Envoyer des messages WhatsApp avec Vonage

Maintenant que notre application est prête, nous pouvons commencer à envoyer des messages WhatsApp à nos utilisateurs.

Envoi de modèles de messages WhatsApp (MTM)

Comme nous l'avons vu précédemment, si une entreprise souhaite ouvrir une nouvelle fenêtre de 24 heures et entamer une conversation avec l'utilisateur, elle doit d'abord envoyer un MTM.

Pour envoyer un MTM, vous devez trouver votre "espace de noms de modèles" dans le WhatsApp Business Manager. Cela vous permettra d'identifier le modèle que vous souhaitez envoyer, car le même nom de modèle peut être utilisé par d'autres personnes dans le monde entier.

Lors de l'envoi de votre message, vous devrez concaténer l'espace de noms du modèle avec le nom du modèle, en utilisant le caractère : comme séparateur. Par exemple, disons que l'espace de noms de votre modèle est abc123 et que le nom de votre modèle est sample_issue_resolution. Vous devez alors concaténer ces deux valeurs ensemble pour obtenir abc123:sample_issue_resolution comme nom complet du modèle que vous transmettrez à Vonage.

Prenons par exemple l'un des modèles de message que WhatsApp met à notre disposition. Ce modèle s'appelle sample_issue_resolution et a la structure suivante :

Hi {{1}}, were we able to solve the issue that you were facing?

Ce modèle nous permet de passer le nom de l'utilisateur en tant que paramètre unique. Ainsi, si nous voulions envoyer ce message à l'utilisateur, nous devrions procéder comme suit :

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppTemplate;
use Vonage\Messages\MessageObjects\TemplateObject;

$toNumber = '447123456789';
$locale = 'en_US';
$templateName = 'abc_123:sample_issue_resolution';
$templateParams = [
	'John',
];

$whatsAppMessage = new WhatsAppTemplate(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	templateObject: new TemplateObject(
    	name: $templateName,
    	parameters: $templateParams,
	),
	locale: $locale,
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

L'exécution de ce code entraînerait l'envoi d'un message au numéro de téléphone +447123456789 qui ressemble à ceci :

Hi John, were we able to solve the issue that you were facing?

Comme vous pouvez le voir dans l'exemple de code, nous devons d'abord créer un nouvel objet WhatsAppTemplate et spécifier :

  • Le numéro de téléphone auquel le modèle est envoyé.

  • Le numéro de téléphone à partir duquel le modèle est envoyé.

  • L'objet modèle, qui contient le nom du modèle et les paramètres.

  • La locale du modèle.

Une fois que nous avons créé notre objet WhatsAppTemplate nous pouvons alors l'envoyer à l'aide de l'application Vonage Client.

Vous avez peut-être aussi remarqué que nous passons un paramètre locale à l'objet WhatsAppTemplate un paramètre. En effet, WhatsApp vous permet de créer des modèles de messages en plusieurs langues. Par exemple, si nous avions le même modèle en anglais et en espagnol, nous pourrions envoyer la version anglaise en indiquant en_US comme paramètre local (comme indiqué dans l'exemple ci-dessus), et la version espagnole en passant es comme locale. Ainsi, si nous passons es comme locale, l'utilisateur recevrait le message suivant :

Hola, Ashley. ¿Pudiste solucionar el problema que tenías?

Il s'agit d'une fonctionnalité très puissante qui peut s'avérer utile si vous avez besoin d'assurer une communication internationale à partir de votre application. Par exemple, vous pourriez le faire pour fournir une assistance à vos utilisateurs dans plusieurs langues.

Envoi de messages texte WhatsApp

En supposant que vous soyez dans votre fenêtre d'assistance à la clientèle 24 heures sur 24, vous pouvez également envoyer des messages texte de forme libre depuis votre application Laravel. Pour ce faire, vous devez créer un nouvel objet WhatsAppText et le passer à la fonction Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppText;

$toNumber = '447123456789';
$message = 'Hello, this is a test message.';

$whatsAppMessage = new WhatsAppText(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	text: $message,
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

L'exécution du code ci-dessus entraînerait l'envoi d'un message WhatsApp au numéro de téléphone +447123456789 qui ressemble à ceci :

Hello, this is a test message.

Envoyer des messages image sur WhatsApp

Avec Vonage, vous pouvez également envoyer des images à vos utilisateurs. Pour ce faire, vous devez créer un nouvel objet WhatsAppImage et le transmettre à la fonction Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppImage;
use Vonage\Messages\MessageObjects\ImageObject;

$toNumber = '447123456789';
$imageUrl = 'https://example.com/image.png';
$caption = 'This is an example image.';

$whatsAppMessage = new WhatsAppImage(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	image: new ImageObject(
    	url: $imageUrl,
    	caption: $caption,
	),
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

L'exécution du code suivant entraînerait l'envoi d'un message WhatsApp au numéro de téléphone +447123456789 qui contient une image avec la légende "Ceci est une image d'exemple".

Envoi de messages vidéo WhatsApp

Vous pouvez également envoyer des messages vidéo depuis votre application Laravel. Pour ce faire, vous devez créer un nouvel objet WhatsAppVideo et le passer à la fonction Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppVideo;
use Vonage\Messages\MessageObjects\VideoObject;

$toNumber = '447123456789';
$videoUrl = 'https://example.com/video.mp4';

$whatsAppMessage = new WhatsAppVideo(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	videoObject: new VideoObject(
    	url: $videoUrl,
	),
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

L'exécution du code suivant entraînerait l'envoi d'un message WhatsApp au numéro de téléphone +447123456789 qui contient une Video.

Envoi de messages audio WhatsApp

Grâce à Vonage, vous pouvez également envoyer des messages audio depuis votre application Laravel. Pour ce faire, vous devez créer un nouvel objet WhatsAppAudio et le passer à la fonction Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppAudio;
use Vonage\Messages\MessageObjects\AudioObject;

$toNumber = '447123456789';
$audioUrl = 'https://example.com/audio.mp3';

$whatsAppMessage = new WhatsAppAudio(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	audioObject: new AudioObject(
    	url: $audioUrl,
	),
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

L'exécution du code suivant entraînerait l'envoi d'un message WhatsApp au numéro de téléphone +447123456789 contenant un fichier audio.

Envoyer des messages de fichiers WhatsApp

Vous pouvez également vouloir envoyer des fichiers à vos utilisateurs depuis votre application Laravel. Pour ce faire, vous devrez créer un nouvel objet WhatsAppFile et le passer à la fonction Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppFile;
use Vonage\Messages\MessageObjects\FileObject;

$toNumber = '447123456789';
$fileUrl = 'https://example.com/file.pdf';
$caption = 'This is an example file.';

$whatsAppMessage = new WhatsAppFile(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	fileObject: new FileObject(
    	url: $fileUrl,
    	caption: $caption,
	),
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

L'exécution du code suivant entraînerait l'envoi d'un message WhatsApp au numéro de téléphone +447123456789 qui contient un fichier avec la légende "Ceci est un fichier d'exemple".

Envoyer des messages de localisation WhatsApp

Dans certains cas (par exemple pour donner des indications), vous pouvez également envoyer des lieux à vos utilisateurs. Pour ce faire, vous devrez créer un nouvel objet WhatsAppLocation et le passer à la fonction Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppCustom;

$toNumber = '447123456789';
$longitude = -40.34764;
$latitude = -74.18875;
$name = Vonage HQ';
$address = '23 Main Street, Holmdel, NJ 07733';

$whatsAppMessage = new WhatsAppCustom(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	custom: [
    	'type' => 'location',
    	'location' => [
        	'longitude' => $longitude,
        	'latitude' => $latitude,
        	'name' => $name,
        	'address' => $address,
    	],
	],
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

L'exécution du code suivant entraînerait l'envoi d'un message WhatsApp au numéro de téléphone +447123456789 qui contient un lieu portant le nom "Vonage HQ" et l'adresse "23 Main Street, Holmdel, NJ 07733".

Conclusion

Avec un peu de chance, cet article devrait vous avoir donné un aperçu de la façon dont vous pouvez envoyer différents types de messages WhatsApp depuis votre application Laravel à l'aide de Vonage. Vous devriez également comprendre les modèles de messages WhatsApp et la fenêtre de 24 heures dont vous disposez pour envoyer des messages.

Partager:

https://a.storyblok.com/f/270183/400x267/746f012da9/ashley-allen.png
Ashley AllenAuteur invité

Ashley est un développeur web Laravel freelance qui aime contribuer à des projets open-source, construire des systèmes passionnants et aider les autres à apprendre le développement web.