https://d226lax1qjow5r.cloudfront.net/blog/blogposts/send-and-receive-sms-messages-with-node-js-and-express/node-js_express_sms.png

Comment envoyer et recevoir des SMS avec Node.js

Publié le October 4, 2023

Temps de lecture : 10 minutes

Cet article a été mis à jour en juin 2025.

Introduction

L'API Vonage Messages API vous permet d'envoyer et de recevoir des messages par SMS, MMS, Facebook Messenger, Viber, WhatsApp et même RCS ! Vous pouvez donc communiquer avec vos clients sur le canal qu'ils préfèrent.

Dans cet article, nous allons nous concentrer sur la manière d'envoyer et de recevoir des SMS avec Node.js et Express.

Pour commencer, nous allons réaliser la mise en œuvre la plus simple de l'API et envoyer un SMS avec Node.js et l'application Vonage Messages API.

Ensuite, nous allons créer un Webhook qui peut recevoir des SMS de votre téléphone à l'aide d'Express et effectuer une action une fois que le message texte a été reçu.

Enfin, nous conclurons par quelques mesures que vous pouvez prendre pour étendre l'application.

Vous pouvez vous référer à la documentation pour plus de détails.

Conditions préalables

Avant de commencer, assurez-vous que vous disposez des éléments suivants :

  • A Compte API Vonage

    Ouvrez votre Page des paramètres de l'API pour accéder à votre clé et à votre secret API de Vonage, qui sont tous deux affichés comme indiqué dans la capture d'écran ci-dessous. La clé API se trouve en haut de la page, et pour accéder à votre secret API, veuillez vous référer à la sous-section "Secret du compte".

    Remarque : si vous ne vous souvenez plus de votre secret API précédemment créé, cliquez sur "+ Créer un nouveau secret" et sauvegardez-le en toute sécurité.

  • Node.js installed - Node.js est un environnement d'exécution JavaScript open-source et multiplateforme.

  • ngrok - Un Account gratuit est nécessaire. Cet outil permet aux développeurs d'exposer un serveur de développement local à l'Internet.

  • CLI de Vonage - Une fois que Node.js est installé, vous pouvez utiliser npm install -g @vonage/cli pour l'installer. Cet outil vous permet de créer et de gérer vos applications Vonage.

Comment envoyer un SMS avec Node.js

Dans la première partie de ce tutoriel, nous allons voir comment envoyer des messages texte avec Node.js. Nous utiliserons l Vonage Messages API de Vonage pour travailler avec Node.js et gérer les SMS. Pour envoyer un SMS avec Node.js et l'API Messages de Vonage, suivez les étapes suivantes :

  1. Installer le SDK Node.js de Vonage

  2. Exécuter ngrok

  3. Créer une application compatible avec les SMS

  4. Envoyer le message SMS

1. Installer le SDK Node.js de Vonage

Avec l'API Messages, il est facile d'envoyer un SMS avec Node.js. Pour l'utiliser, nous devons installer le SDK Node.js de Vonage.

npm install @vonage/server-sdk

Bien que Vonage dispose de deux API différentes capables d'envoyer et de recevoir des SMS, vous ne pouvez en utiliser qu'une seule à la fois, car elle modifiera le format des webhooks que vous recevrez.

Assurez-vous que l'API Messages est définie comme l'API par défaut sous clés APIpuis Paramètres SMS de votre Account.

Set Messages API as the default API for sending SMS messagesSet Messages API as the default API for sending SMS messages Basculer le paramètre sur Messages APIpuis appuyez sur Enregistrer les modifications.

2. Exécuter ngrok

Une fois l'API Messages installée, l'étape suivante consiste à exécuter ngrok.

ngrok est une application multiplateforme qui permet aux développeurs d'exposer un serveur de développement local à l'Internet avec un minimum d'effort. Nous l'utiliserons pour exposer notre service à l'Internet. Si vous n'avez jamais utilisé ngrok, il y a un billet de blog qui l'explique plus en détail. Une fois que vous avez configuré ngrok et que vous êtes connecté (encore une fois, le compte gratuit est acceptable), exécutez la commande suivante :

ngrok http 3000

Une fois que ngrok s'est exécuté, il vous donnera un message de Forwarding que nous utiliserons comme base pour nos Webhooks plus loin dans l'article.

3. Créer une application compatible avec les SMS

Pour interagir avec l'API Messages, nous devons créer une application API Vonage afin d'authentifier nos demandes.

Considérez les applications plutôt comme des conteneurs et des métadonnées pour regrouper toutes vos données sur la plateforme Vonage. Nous allons créer une application à l'aide du tableau de bord de l'API de Vonage..

Donnez un nom (par exemple "Envoyer et recevoir des SMS") et cliquez sur Générer les clés publique et privée. Vous serez invité à enregistrer un fichier clé sur le disque - la clé privée. Il est généralement conseillé de le conserver dans le dossier de votre projet, car vous en aurez besoin plus tard. Les applications fonctionnent selon un système de clés publiques/privées. Lorsque vous créez une application, une clé publique est générée et conservée par Vonage, et une clé privée est générée, non conservée par Vonage, et vous est renvoyée lors de la création de l'application. Nous utiliserons la clé privée pour authentifier nos appels à la bibliothèque plus tard.

Ensuite, vous devez activer la fonction Messages et fournir une URL entrante entrante et une URL d'état.

Utilisez l'URL ngrok que vous avez obtenue à l'étape précédente et remplissez chaque champ, en ajoutant /webhooks/inbound et /webhooks/statuspour l URL entrante et URL d'état.

Lorsqu'un message parvient à l Messages APIles données le concernant sont envoyées à l URL entrante. Lorsque vous envoyez un message à l'aide de l'API, les données relatives à l'état du message sont envoyées à l URL d'état.

Enfin, reliez un ou plusieurs de vos Numbers virtuels à cette Applications. Tous les messages reçus sur ces numéros seront transmis à votre URL entrante.

Create Messages enabled Vonage ApplicationCreate Messages enabled Vonage Application

4. Envoyer le message SMS

Enfin, nous allons créer le code dans Node.js pour envoyer des SMS.

Créez un nouveau dossier dans lequel vous souhaitez stocker le code source de l'application que nous sommes en train de créer. Une fois terminé, tapez npm init pour initialiser une nouvelle application Node.js. Enfin, créez un fichier index.js et initialisez la bibliothèque node de Vonage installée précédemment.

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

const vonage = new Vonage({
  applicationId: VONAGE_APPLICATION_ID,
  privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH
});

En guise de bonne pratique, vous devriez utiliser des variables d'environnement lorsque vous incluez les valeurs suivantes dans votre code.

Remplacer le champ VONAGE_APPLICATION_ID par l ID de l'application fourni pour l'application Vonage que vous avez créée. Remplacez le champ VONAGE_APPLICATION_PRIVATE_KEY_PATH par le chemin d'accès à la clé privée qui a été automatiquement téléchargée pour vous. Note : J'ai copié mon fichier private.key à la racine de mon application et je peux y accéder en spécifiant que le chemin d'accès de la clé privée est le même que celui de l'application. privateKey est égal à './private.key'

Pour envoyer un SMS avec l'API Messages, nous utiliserons la méthode vonage.messages.send de la bibliothèque Node.js de Vonage. Cette méthode accepte des objets comme paramètres, avec des informations sur le destinataire, l'expéditeur et le contenu. Ces informations varient en fonction des différents canaux, c'est pourquoi vous devez consulter la documentation de l'API pour les autres canaux mentionnés.

Pour les SMS, nous devrons spécifier un destinataire et un expéditeur. Enfin, l'objet content accepte un objet type de text et un message texte. Le callback renvoie un objet d'erreur et de réponse, et nous enregistrons les messages relatifs au succès ou à l'échec de l'opération.

const text = "👋Hello from Vonage";

vonage.messages
  .send({
    text: text,
    message_type: "text",
    to: TO_NUMBER,
    from: FROM_NUMBER,
    channel: "sms",
  })
  .then((resp) => console.log(resp.message_uuid))
  .catch((err) => console.error(err));

Remplacer TO_NUMBER par le numéro de téléphone de destination sous forme de chaîne et ajoutez le numéro de téléphone qui vous a été attribué au champ FROM_NUMBER puis exécutez le code avec :

node index.js

Vous venez d'envoyer un SMS à l'aide de Node.js et de l'API Messages de Vonage !

Vous remarquerez que l'API Messages est un peu plus verbeuse, mais qu'elle n'a besoin que d'une seule méthode pour vérifier si le message entrant provient de Vonage. vérifier si le message entrant provient de Vonage. Incluez les éléments suivants :

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');
}

Comment recevoir des SMS avec Node.js

Lorsqu'un numéro de Vonage reçoit un message SMS, Vonage transmet ce message à un crochet Web prédéterminé. Vous avez déjà configuré l'URL du crochet Web lorsque vous avez créé l'application Vonage activée par Messages : YOUR_NGROK_URL/webhooks/inbound

Pour recevoir des SMS à l'aide de Node.js, suivez les étapes ci-dessous :

  1. Créer un serveur web

  2. Créer un Webhook pour l'URL entrante

  3. Envoyer et recevoir un message test

1. Créer un serveur Web

Nous allons créer notre serveur web en utilisant Express car c'est l'un des frameworks Node.js les plus populaires et les plus faciles à utiliser à cette fin. Nous allons également examiner les corps des requêtes pour l'URL entrante, nous aurons donc besoin d'installer express à partir de npm.

npm install express --save

Créons un nouveau fichier pour cela et appelons-le server.js. Ce fichier peut se trouver dans le même dossier que celui que nous avons créé précédemment.

Nous allons créer une application de base express qui utilise l'analyseur JSON de express et qui définit l'option urlencoded à true. Remplissons le fichier server.js que nous avons créé. Nous utiliserons le port 3000 pour l'écoute du serveur, et nous avons déjà ngrok qui tourne sur le port 3000.

const express = require("express");

const { json, urlencoded } = express;

const app = express();

app.use(json());

app.use(
  urlencoded({
    extended: true,
  })
);

app.listen(3000, () => {
  console.log("Server listening at http://localhost:3000");
});

2. Créer un Webhook pour l'URL entrante

Nous allons créer un gestionnaire de requête POST pour /webhooks/inbound pour l'URL entrante, et nous enregistrerons le corps de la requête dans la console. Comme Vonage dispose d'un mécanisme de relance, il continuera à renvoyer le message si l'URL ne répond pas avec 200 OKNous renverrons donc un état 200 statut.

app.post("/webhooks/inbound", (req, res) => {
  console.log(req.body);

  res.status(200).end();
});

Vous pouvez exécuter le code de la manière suivante :

node server.js

3. Envoyer et recevoir un message test

Envoyez maintenant un SMS de votre téléphone à votre numéro Vonage. Vérifiez votre terminal - vous devriez voir quelque chose comme ceci si tout fonctionne :

{ to: '447700900000', from: '447700900001', channel: 'sms', message_uuid: 'a580f869-e995-4d76-9b80-a7befe3186a4', timestamp: '2025-06-06T23:02:31Z', usage: { price: '0.0057', currency: 'EUR' }, message_type: 'text', text: "Hello from my personal phone!", sms: { num_messages: '1' } }

Synthèse

Et comme ça, vous avez envoyé votre premier SMS ! Maintenant que vous avez appris à envoyer et à recevoir des SMS avec l'API Messages de Vonage et Node.js, vous pourriez étendre ce projet pour répondre aux SMS entrants ou inclure des éléments interactifs plus complexes pour vos besoins actuels ou futurs en matière de SMS.

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.

Merci encore d'avoir lu, et je vous donne rendez-vous pour la prochaine édition !

Lectures complémentaires

Partager:

https://a.storyblok.com/f/270183/400x400/7cdff37c0e/michael-crump.png
Michael CrumpGestionnaire, expériences des développeurs

Michael Crump travaille chez Vonage au sein de l'équipe Developer Experiences. C'est un codeur, un YouTuber et un conférencier qui aborde fréquemment divers sujets liés à .NET et au développement des communications et de l'informatique en nuage. Il se passionne pour aider les développeurs à comprendre les avantages de chacun d'entre eux de manière simple.