https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-send-a-whatsapp-message-with-node-js/node-js_whatsapp.png

Comment envoyer un message WhatsApp avec Node.js (Tutoriel)

Publié le March 13, 2025

Temps de lecture : 5 minutes

Introduction

Dans ce tutoriel, vous apprendrez à créer une application qui envoie et reçoit des messages à l'aide de l'API Vonage Messages APIde Vonage, le SDK Node de Vonagede Vonage et le WhatsApp Sandbox. Le code du dépôt GitHub pour ce projet se trouve ici.

Conditions préalables

Pour commencer à envoyer des messages WhatsApp avec Node.js, vous aurez besoin des prérequis suivants :

  • Vonage API Account

    To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

  • ngrok

  • Node.js installé (version 20 ou supérieure)

  • Facultatif - Compte WhatsApp Business pour des caractéristiques et des fonctionnalités supplémentaires

Créer une application Vonage

Les étapes ci-dessous vous montrent comment créer une nouvelle application Vonage à partir du tableau de bord. Vous pouvez également utiliser l'interface de commande pour créer une application.

Créer une nouvelle application

Aller à Vos Applications dans le tableau de bord de Vonage et cliquez pour créer une nouvelle application.

Générer des informations d'identification

Créez une paire de clés publique/privée pour l'authentification de l'API. Cliquez sur "Générer une clé publique et privée" pour obtenir la clé privée. Le fichier sera téléchargé à l'emplacement que vous avez défini dans votre navigateur pour les fichiers téléchargés. Veillez à ajouter ce fichier au dossier du projet.

Capacité de l'API Messages

Démarrer une instance de tunnellisation ngrok

Si vous n'avez jamais utilisé ngrok, vous pouvez commencer ici. J'ai ajouté les étapes pour lancer une instance en dessous de l'image.

Exécutez la commande suivante pour démarrer une instance de tunneling ngrok.

ngrok http 8000

Sortie

ngrok                                                                 (Ctrl+C to quit)
                                                                                                 
👋 Goodbye tunnels, hello Agent Endpoints: https://ngrok.com/r/aep                               
                                                                                                 
Session Status                online                                                             
Account                       plan name                                         
Version                       3.19.1                                                             
Region                        Europe (eu)                                                        
Latency                       31ms                                                               
Web Interface                 http://127.0.0.1:4040                                              
Forwarding                    https://xyz.ngrok.app -> http://localhost:8000            
                                                                                                 
Connections                   ttl     opn     rt1     rt5     p50     p90                        
                              14      0       0.03    0.03    6.10    7.79   

Configurer les Webhooks

De retour dans le tableau de bord de l'API de Vonage, sous vos applications, faites basculer l'option Messages sous capabilities et définissez l'URL publique de votre serveur à partir de ngrok comme point de terminaison pour les messages entrants et les événements. Cela devrait ressembler à : https://xyz.ngrok.com/inbound pour les messages entrants et https://xyz.ngrok.com/status pour l'état. Si vous souhaitez en savoir plus sur les webhooks, vous pouvez consulter la documentation de Vonage..

the inbound URL contains the ngrok URL with /inbound appended. The Status URL contains the ngrok URL with /status appended.Messages capability

Configurer l'environnement de test WhatsApp de l'API Messages de Vonage

Nous utiliserons l'application WhatsApp Sandbox pour ce tutoriel, qui est un environnement de test. Vous pouvez utiliser un WhatsApp business Account une fois que vous serez prêt à mettre votre application en production. Outre WhatsApp, vous pouvez intégrer cette application à des canaux tels que Viber, Facebook Messenger et Instagram avec quelques lignes de code et ajustements de configuration.

Créer un bac à sable WhatsApp pour l'API Messages

Naviguez jusqu'à la page Vonage Messages API Sandbox page et configurer votre Messages API WhatsApp Sandbox.

Ajouter des WebHooks

Ajoutez l'URL générée par ngrok à votre application et à l'espace de test de l'API Messages. Messages API Sandboxajoutez /webhooks/inbound-message et /webhooks/message-status, respectivement, et cliquez sur "Enregistrer les webhooks".

Two fields, one for inbound and outbound URLs.Webhooks

Variables d'environnement

Nous devons créer un fichier .env fileet ajouter les variables d'environnement nécessaires. Nous avons déjà généré certaines d'entre elles, mais je vais vous expliquer où trouver chacune d'entre elles.

# Vonage API keys

VONAGE_APPLICATION_ID=

VONAGE_PRIVATE_KEY=

VONAGE_WHATSAPP_NUMBER=

VONAGE_API_SIGNATURE_SECRET=

# Server port (optional; default is 8000)

PORT=8000

Le VONAGE_WHATSAPP_NUMBER se trouve sur la page Messages Sandbox Page. Il s'agit du numéro auquel vous enverrez un message WhatsApp. Pour les tests du bac à sable, le numéro est 14157386102.

Les VONAGE_APPLICATION_ID se trouve dans l'application que vous avez créée.

Application ID found on the application.Application id

Le VONAGE_PRIVATE_KEY est le chemin d'accès au fichier private.key qui a été généré lors de la création de votre application.

VONAGE_API_SIGNATURE_SECRET est le secret utilisé pour signer la demande qui correspond au secret de signature associé à la clé d'api incluse dans les demandes JWT. Vous pouvez identifier votre secret de signature dans les Paramètres du tableau de bord.

> NOTE : Lorsque vous entrez un numéro de téléphone, n'utilisez pas de + ou de 00 ; commencez par l'indicatif du pays, par exemple 16600700000

Le port est celui que notre serveur express utilisera. Je l'ai mis à 8000, mais n'hésitez pas à le changer.

Installer les dépendances

Nous utiliserons le Vonage Server SDK, SDK Vonage Messages pour Node.js, Vonage JWT SDK pour Node.js, Expresset Dotenv. Installez-les avec cette commande :

npm install @vonage/server-sdk @vonage/messages @vonage/jwt express dotenv

Mise en œuvre de la logique du code

Créer un server.js fichier.

Requérir et initialiser les paquets que nous utiliserons pour ce projet.

// src/server.js

require("dotenv").config();

const express = require("express");

const { Vonage } = require("@vonage/server-sdk");

const { WhatsAppText } = require("@vonage/messages");

const { verifySignature } = require("@vonage/jwt");

const app = express();

app.use(express.json());

Initialiser un nouveau client Vonage ; les valeurs lues dans process.env sont les variables d'environnement que vous avez précédemment ajoutées à votre fichier .env file.

L'adresse apiHost est l'URL de l'environnement sandbox pour le service de messagerie de Vonage.

const vonage = new Vonage(
 {
   applicationId: process.env.VONAGE_APPLICATION_ID,
   privateKey: process.env.VONAGE_PRIVATE_KEY,
 },
 {
   apiHost: "https://messages-sandbox.nexmo.com",
 }
);

Nous disposons d'une fonction de vérification JWT pour vérifier si le message entrant provient de Vonage. Vous pouvez en savoir plus sur la la vérification de la demande.

const verifyJWT = (req) => {
  // Verify if the incoming message came from Vonage
  const jwtToken = req.headers.authorization.split(" ")[1];
  if(!verifySignature(jwtToken, process.env.VONAGE_API_SIGNATURE_SECRET)) {
    console.error("Unauthorized request");
    throw new Error('Not a messages API request');
  }

  console.log('JWT verified');
}

La conversation sera initiée par l'envoi d'un message WhatsApp par l'utilisateur. Créons une fonction pour renvoyer un message WhatsApp à l'utilisateur avec le texte "Message reçu".

// Function to send a message via Vonage

const sendMessage = async (to_number) => {

 const text = "Message received."; // The reply message

 try {

   const { messageUUID } = await vonage.messages.send(

     new WhatsAppText({

       from: process.env.VONAGE_WHATSAPP_NUMBER,

       to: to_number,

       text: text,

     })

   );

   console.log(`Message sent with messageUUID: ${messageUUID}`);

 } catch (error) {

   console.error(

     "Error sending message:",

     error.response ? error.response.body : error.message

   );

 }

};

Créez un /inbound pour gérer le message entrant, celui qui a été ajouté en tant que webhook dans le tableau de bord de Vonage. Il enregistre la réception d'un message et le renvoie à l'utilisateur autorisé listé dans l'Environnement de travail en disant : "Message reçu".

app.post("/inbound", async (req, res) => {

 const { from: requesterNumber } = req.body;

 console.log(`Received message from ${requesterNumber}`);

 try {

   // Send the "Message received" reply

   await sendMessage(requesterNumber);

   res.status(200).send(); // Acknowledge the received message

 } catch (error) {

   console.error("Error handling incoming message:", error);

   res.status(500).send("An error occurred while processing the message.");

 }

});

Créer un point de terminaison /status qui enregistre les données de la demande, vérifie si l'utilisateur est autorisé à l'aide d'un JWT, puis répond par un message de réussite.

app.post('/status', (req, res) => {

  console.log(req.body);

  verifyJWT(req);

  console.log('Received status update');

  res.status(200).send();

});

Le serveur écoute sur le port spécifié.

// Start the server

const PORT = process.env.PORT || 8000;

app.listen(PORT, () => {

 console.log(`Server is listening on port ${PORT}`);

});

Testez votre code

Après cela, vous pouvez tester l'envoi d'un message depuis votre bac à sable WhatsApp vers votre numéro WhatsApp autorisé. Depuis le répertoire où le fichier est enregistré, exécutez :

> $ node src/server.js
Server is listening on port 8000
Received message from <Number>
JWT verified
Message sent with messageUUID: e295613c-a2fc-40f4-a9ae-fa16f5c685cf

À ce stade, la réponse au message de test devrait apparaître dans WhatsApp sur votre appareil autorisé. Vous pouvez maintenant tester différents types de messages et en savoir plus sur les éléments suivants Concepts WhatsApp.

Conclusion

WhatsApp est très utilisé dans le monde entier ; j'ai vérifié le Play Store sur mon téléphone Android, et c'est l'une des applications les plus téléchargées au Royaume-Uni. De retour dans mon pays d'origine, le Brésil, pour les vacances, j'ai remarqué à quel point l'application se répandait entre les entreprises ; je pouvais acheter de l'açaí, contacter le service clientèle, vérifier si des lieux étaient ouverts et parler à des amis et à des membres de ma famille. Les possibilités d'apprendre à envoyer et à recevoir des messages via WhatsApp sont infinies.

Vous avez une question ou souhaitez partager ce que vous construisez ?

Restez connecté et tenez-vous au courant des dernières nouvelles, astuces et événements concernant les développeurs.

Pour en savoir plus

Partager:

https://a.storyblok.com/f/270183/400x400/3f6b0c045f/amanda-cavallaro.png
Amanda CavallaroDéfenseur des développeurs