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

Wie man eine WhatsApp-Nachricht mit Node.js versendet (Tutorial)

Zuletzt aktualisiert am March 13, 2025

Lesedauer: 5 Minuten

Einführung

In diesem Tutorial lernen Sie, wie Sie eine Anwendung erstellen, die Nachrichten mit Hilfe der Vonage® Messages API sendet und empfängt. Nachrichten-API, dem Vonage Node SDK, und der WhatsApp-Sandkasten. Der Code des GitHub-Repositorys für dieses Projekt befindet sich hier.

Voraussetzungen

Um mit dem Versenden von WhatsApp-Nachrichten mit Node.js zu beginnen, benötigen Sie die folgenden Voraussetzungen:

  • Vonage API-Konto

    Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.

  • ngrok

  • Node.js Installiert (Version 20 oder höher)

  • Optional - WhatsApp Business-Konto für zusätzliche Features und Funktionen

Erstellen einer Vonage-Anwendung

Die folgenden Schritte zeigen Ihnen, wie Sie eine neue Vonage-Anwendung über das Dashboard erstellen können. Alternativ können Sie auch die CLI verwenden, um eine Anwendung zu erstellen.

Eine neue Anwendung erstellen

Gehen Sie zu Ihre Anwendungen im Vonage Dashboard und klicken Sie auf , um eine neue Anwendung zu erstellen.

Berechtigungsnachweise generieren

Erstellen Sie ein öffentliches/privates Schlüsselpaar für die API-Authentifizierung. Klicken Sie auf "Öffentlichen und privaten Schlüssel generieren", um den privaten Schlüssel zu erhalten. Die Datei wird an den Ort heruntergeladen, den Sie in Ihrem Browser für heruntergeladene Dateien festgelegt haben. Stellen Sie sicher, dass Sie diese Datei dem Projektordner hinzufügen.

Nachrichten-API-Fähigkeit

Starten Sie eine ngrok Tunelling-Instanz

Wenn Sie ngrok noch nicht benutzt haben, können Sie hier beginnen. Ich habe die Schritte zum Ausführen einer Instanz unterhalb des Bildes hinzugefügt.

Führen Sie den folgenden Befehl aus, um eine ngrok-Tunneling-Instanz zu starten.

ngrok http 8000

Ausgabe

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   

Webhooks konfigurieren

Zurück im Vonage API Dashboard, unter Ihren Apps, schalten Sie die Option Nachrichten und legen Sie die öffentliche URL Ihres Servers von ngrok als Endpunkt für eingehende Nachrichten und Ereignisse fest. Sie sollte wie folgt aussehen: https://xyz.ngrok.com/inbound für eingehende Nachrichten und https://xyz.ngrok.com/status für Status. Wenn Sie mehr über Webhooks erfahren möchten, finden Sie in unserer Vonage-Dokumentation.

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

Einrichten der Vonage Messages API WhatsApp Sandbox

Wir verwenden dieWhatsApp-Sandkastenfür dieses Tutorial, die eine Testumgebung darstellt. Sie können ein WhatsApp-Geschäftskonto verwenden, sobald Sie bereit sind, Ihre Anwendung in Produktion zu geben. Neben WhatsApp können Sie diese Anwendung auch in Kanäle wie Viber, Facebook Messenger und Instagram integrieren - mit ein paar Zeilen Code und Anpassungen bei der Einrichtung.

Erstellen einer WhatsApp-Sandbox für die Nachrichten-API

Navigieren Sie zur Vonage-Nachrichten-API-Sandbox-Seite und richten Sie Ihre Messages API WhatsApp Sandbox ein.

WebHooks hinzufügen

Fügen Sie die von Ngrok generierte URL zu Ihrer Anwendung und der Nachrichten-API-Sandboxan, fügen Sie /webhooks/inbound-message und /webhooks/message-status, an und klicken Sie auf "Webhooks speichern".

Two fields, one for inbound and outbound URLs.Webhooks

Umgebungsvariablen

Wir müssen eine .env fileerstellen und die benötigten Umgebungsvariablen hinzufügen. Einige dieser Variablen haben wir bereits erstellt, aber ich werde erklären, wo sie zu finden sind.

# Vonage API keys

VONAGE_APPLICATION_ID=

VONAGE_PRIVATE_KEY=

VONAGE_WHATSAPP_NUMBER=

VONAGE_API_SIGNATURE_SECRET=

# Server port (optional; default is 8000)

PORT=8000

Die VONAGE_WHATSAPP_NUMBER befindet sich auf der Nachrichten-Sandbox-Seite. Es handelt sich um die Nummer, an die Sie eine WhatsApp-Nachricht senden werden. Für Sandbox-Tests lautet die Nummer 14157386102.

Die VONAGE_APPLICATION_ID befindet sich in der Anwendung, die Sie erstellt haben.

Application ID found on the application.Application id

Die VONAGE_PRIVATE_KEY ist der Pfad zu der Datei private.key Datei, die beim Erstellen Ihrer Anwendung erzeugt wurde.

VONAGE_API_SIGNATURE_SECRET ist das zum Signieren der Anfrage verwendete Geheimnis, das dem Signaturgeheimnis entspricht, das mit dem in den JWT-Ansprüchen enthaltenen api_key verbunden ist. Sie können Ihr Signaturgeheimnis in den Dashboard-Einstellungen.

> HINWEIS: Verwenden Sie bei der Eingabe einer Telefonnummer kein führendes + oder 00, sondern beginnen Sie mit der Landesvorwahl, z. B.16600700000

Der Port ist derjenige, auf dem unser Express-Server laufen wird. Ich habe ihn auf 8000 gesetzt, aber Sie können ihn gerne ändern.

Installieren Sie die Abhängigkeiten

Wir verwenden das Vonage Server SDK, Vonage Messages SDK für Node.js, Vonage JWT SDK für Node.js, Express, und Dotenv. Installieren Sie sie mit diesem Befehl:

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

Implementierung der Codelogik

Erstellen Sie eine server.js Datei.

Fordern Sie die Pakete, die wir für dieses Projekt verwenden werden, an und initialisieren Sie sie.

// 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());

Initialisieren Sie einen neuen Vonage-Client; die aus process.env gelesenen Werte sind die Umgebungsvariablen, die Sie zuvor zu Ihrem .env file.

Die apiHost ist die URL der Sandbox-Umgebung für den Messaging-Dienst von Vonage.

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

Wir haben eine JWT-Verifizierungsfunktion, um zu überprüfen, ob die eingehende Nachricht von Vonage stammt. Sie können mehr erfahren über Verifizierung der Anfrage.

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

Die Unterhaltung wird durch das Senden einer WhatsApp-Nachricht durch den Benutzer eingeleitet. Lassen Sie uns eine Funktion erstellen, die eine WhatsApp-Nachricht mit dem Text "Nachricht erhalten" an den Benutzer zurückschickt.

// 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

   );

 }

};

Erstellen Sie einen /inbound Endpunkt zur Verarbeitung der eingehenden Nachricht, der als Webhook im Vonage-Dashboard hinzugefügt wurde. Es wird protokolliert, wenn eine Nachricht empfangen und an den in der Sandbox zugelassenen Benutzer zurückgeschickt wird: "Nachricht erhalten".

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.");

 }

});

Erstellen Sie einen /status Endpunkt, der die Anfragedaten protokolliert, prüft, ob der Benutzer mit einem JWT autorisiert ist, und dann mit einer Erfolgsmeldung antwortet.

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

  console.log(req.body);

  verifyJWT(req);

  console.log('Received status update');

  res.status(200).send();

});

Der Server lauscht auf dem angegebenen Port.

// Start the server

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

app.listen(PORT, () => {

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

});

Testen Sie Ihren Code

Danach können Sie testen, ob Sie eine Nachricht von Ihrer WhatsApp-Sandbox an Ihre zugelassene WhatsApp-Nummer senden können. Führen Sie in dem Verzeichnis, in dem die Datei gespeichert ist, einen Befehl aus:

> $ 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

Jetzt sollte die Antwort auf die Testnachricht in WhatsApp auf Ihrem zugelassenen Gerät erscheinen. Jetzt können Sie verschiedene Arten von Nachrichten testen und mehr über folgende Themen erfahren WhatsApp-Konzepte.

Schlussfolgerung

WhatsApp wird weltweit stark genutzt; ich habe den Play Store auf meinem Android-Telefon überprüft, und es ist eine der am häufigsten heruntergeladenen Apps im Vereinigten Königreich. Als ich im Urlaub in meinem Heimatland Brasilien war, fiel mir auf, wie sehr es sich zwischen Geschäften verbreitete; ich konnte Açaí kaufen, den Kundendienst kontaktieren, überprüfen, ob Geschäfte geöffnet waren, und mit Freunden und Familie sprechen. Die Möglichkeiten, über WhatsApp Nachrichten zu senden und zu empfangen, sind endlos.

Haben Sie Fragen oder Anmerkungen? Treten Sie unserer florierenden Entwickler-Community auf Slackoder folgen Sie uns auf X (früher Twitter), oder abonnieren Sie unseren Entwickler-Newsletter. Bleiben Sie mit uns in Verbindung, teilen Sie Ihre Fortschritte mit uns und halten Sie sich über die neuesten Nachrichten, Tipps und Veranstaltungen für Entwickler auf dem Laufenden!

Weitere Lektüre

Share:

https://a.storyblok.com/f/270183/400x400/3f6b0c045f/amanda-cavallaro.png
Amanda CavallaroAdvokat für Entwickler