
Teilen Sie:
Software Developer who loves building awesome tools and products. I currently work with Laravel, PHP and Vue.
Erstellen eines WhatsApp-Währungsumrechnungs-Bots mit Node.js
Lesedauer: 8 Minuten
In diesem Tutorial sehen wir uns an, wie man einen einfachen WhatsApp-Chat-Bot mit Node.js und Vonage erstellt. Der Bot wird dafür verantwortlich sein, eine beliebige Anzahl von Einheiten in einer Basiswährung in das Äquivalent in der bevorzugten Währung umzurechnen.
Der Bot wird unter Verwendung der Vonage Messages API zusammen mit Expressund dem Node Framework erstellt.
Hier ist ein Beispiel, wie ich mit dem Bot chatte:

Voraussetzungen
Ngrok die es Ihnen ermöglicht, Ihren lokalen Webserver dem Internet auszusetzen. Um mehr darüber zu erfahren, wie Sie Ihre lokale Umgebung mit Ngrok einrichten, können Sie in unserer Dokumentation nachlesen.
Entweder einen WhatsApp Business Account oder die Messages API Sandbox einrichten, wie wir es in diesem Tutorial tun werden, um Numbers auf die Whitelist zu setzen.
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.
Einrichten Ihrer Anwendung
Beginnen Sie damit, das Repository auf Ihren lokalen Rechner zu klonen: https://github.com/Dotunj/vonage-whatsapp-bot.
Weiter cd in das Verzeichnis des Projekts und führen Sie den folgenden Befehl aus, um die Abhängigkeiten des Projekts zu installieren:
Bau des Bots
Immer wenn unser Bot eine Nachricht auf WhatsApp erhält, stellt Vonage eine HTTP-Post-Anfrage an einen Endpunkt. Die Anfrage enthält eine Nutzlast für die Nachricht.
app.post("/webhooks/inbound-message", (req, res) => {
eventEmitter.emit("inbound-message", req.body);
return res.send("Received Webhook successfully");
});
Oben haben wir eine Route definiert bei /webhooks/inbound-message definiert, die das inbound-message Ereignis mit Hilfe des Node.js Event-Moduls auslöst und dann eine 200-Antwort an Vonage zurückgibt.
Das Node.js Event-Modul enthält die EventEmitter Klasse, die zum Auslösen und Verarbeiten von Ereignissen verwendet wird. Sie können mehr über die Behandlung und Verteilung von Ereignissen in Node.js erfahren hier.
eventEmitter.on("inbound-message", (body) => {
performCurrencyConversion(body).catch((err) => console.log(err));
});
Jedes Mal, wenn das inbound-message Ereignis ausgelöst wird, wird auch die eventEmitter.on() Methode ebenfalls ausgelöst. Diese Funktion registriert eine Listener-Funktion, die einfach die performCurrencyConversion() Methode aufruft und die Nutzlast der Nachricht übergibt.
function standardResponse() {
let response = "Welcome to the WhatsApp Bot For Currency Conversion \n";
response += "Please use the following format to chat with the Bot \n";
response += "Convert 5 USD to CAD \n";
response +=
"Where 5 is the number of units to convert, USD is the base currency and CAD is the currency you would like to convert to.";
return response;
}Die Funktion standardResponse Funktion ist eine generische Antwort, die den Benutzer darüber informiert, wie er mit dem Bot kommunizieren kann.
Die Methode performCurrencyConversion() Methode ist dafür verantwortlich, den Inhalt der an den Bot gesendeten Nachricht zu entschlüsseln und eine Antwort an den Benutzer zurückzuschicken.
Der Inhalt der empfangenen Nachricht wird in ein Array umgewandelt mit split(). Auf der Grundlage unseres vereinbarten Nachrichtenformats sollte die Anzahl der im Array enthaltenen Elemente 5 betragen.
Wenn der Inhalt der Nachricht in ein Array aufgeteilt wurde und die Anzahl der Elemente in diesem Array weniger als 5 beträgt, wird eine Standardantwort an den Benutzer zurückgeschickt, in der er darüber informiert wird, wie er den Bot nutzen kann.
Wenn die Überprüfung der Länge des Nachrichteninhalts erfolgreich war, können wir jetzt sicher davon ausgehen, dass die Elemente im ersten, zweiten und vierten Index des Arrays die Einheiten, die Basiswährung und die Währung sind, in die Sie umrechnen möchten.
Konvertieren mit Coinbase
Da wir nun die Basiswährung und die Währung, in die Sie konvertieren wollen, haben, können wir überprüfen, ob diese Währungscodes gültig sind und von Coinbase.
Die Coinbase API bietet Endpunkte für den Umgang mit Währungen und Wechselkursen. Sie können mehr über die Coinbase-API hier.
async function getCurrencyCode(baseCurrency, toCurrency) {
try {
const currency = await axios.get(`${coinbaseUrl}/currencies`);
const currencyCode = currency.data.data;
const isSupportedCurrencyCodes = currencyCode.filter(
(c) => c.id === baseCurrency || c.id === toCurrency
);
if (isSupportedCurrencyCodes.length < 2) return;
return isSupportedCurrencyCodes;
} catch (error) {
console.error(error);
}
}
An dieser Stelle kommt die getCurrencyCode() Funktion ins Spiel.
Sie akzeptiert die baseCurrency zusammen mit dem toCurrency und macht dann einen API-Aufruf an https://api.coinbase.com/v2/currencies um eine Liste aller unterstützten Währungen zu erhalten. Anschließend wird geprüft, ob sowohl die baseCurrency und der toCurrency Codes in der Liste der unterstützten Währungen gefunden werden können.
Wenn keine oder eine der beiden Währungen gefunden werden kann, wird eine Antwort an den Benutzer zurückgeschickt, in der er aufgefordert wird, einen gültigen Währungscode anzugeben.
Nach der Validierung der Währungscodes mit der Funktion getCurrencyCode() Funktion, wird die getBaseExchangeRate() Methode aufgerufen.
async function getBaseExchangeRate(baseCurrency, toCurrency) {
try {
const response = await axios.get(
`${coinbaseUrl}/exchange-rates?currency=${baseCurrency}`
);
const rates = response.data.data.rates;
const baseRate = rates[toCurrency];
return baseRate;
} catch (error) {
console.error(error);
}
}Diese Methode akzeptiert die baseCurrency zusammen mit dem toCurrency auch.
Anschließend wird ein API-Aufruf an den https://api.coinbase.com/v2/exchange-rates Endpunkt, der den baseCurrency Code als Wert des currency Abfrageparameters übergeben.
Dieser Endpunkt gibt die Kurse für eine Einheit der Basiswährung zurück. Als nächstes müssen wir nur noch den entsprechenden Kurs für die toCurrency.
Hier ist ein Beispiel für die Antwort, die beim Aufruf des Endpunkts mit USD als baseCurrency:
"data": {
"currency": "USD",
"rates": {
"AED": "3.673015",
"AFN": "77.06341",
"ALGO": "1.5885623510722797",
"ALL": "104.873298",
"AMD": "481.616228",
"ANG": "1.794578",
"AOA": "589.0",
"ARS": "73.1365",
...Nachdem wir den Basiskurs ermittelt haben, müssen wir nur noch die Einheiten mit dem Basiskurs multiplizieren, um den entsprechenden Betrag in der Währung zu erhalten, in die der Nutzer umrechnen möchte, und den Wert dann auf zwei Dezimalstellen runden. Anschließend wird eine Antwort an den Benutzer gesendet, die ihn über den Wechselkurs informiert.
Die Funktion sendWhatsAppMessage() Funktion sendet eine Antwort über WhatsApp an den Nutzer zurück.
Eine HTTP POST-Anfrage wird an den https://messages-sandbox.nexmo.com/v0.1/messages Endpunkt unter Angabe der from, to, und message Feldes.
Das Feld from ist die Nummer der WhatsApp-API-Sandbox. Ich werde Ihnen in Kürze zeigen, wie Sie diese Nummer erhalten, und wir werden sie als Teil unserer Umgebungsvariablen hinzufügen. Das Feld to Feld ist die Nummer, von der die ursprüngliche Nachricht gesendet wurde, und wird aus der Nutzlast der Nachricht ermittelt.
Um sich bei der API zu authentifizieren, geben wir unseren Vonage-API-Schlüssel und unseren geheimen Schlüssel an. Wir werden diese Werte ebenfalls in Kürze abrufen und sie als Teil unserer Umgebungsvariablen hinzufügen.
Ngrok einrichten
Da unsere Anwendung derzeit lokal ist, gibt es für Vonage keine Möglichkeit, POST-Anforderungen an den soeben erstellten Endpunkt zu senden, wenn unser Bot eine Nachricht erhält. Wir können Ngrok verwenden, um eine temporäre öffentliche URL einzurichten, damit unsere Anwendung über das Web zugänglich ist.
Um die Anwendung zu starten, führen Sie den folgenden Befehl über das Terminal aus:
Führen Sie bei laufender Anwendung den folgenden Befehl in einem zweiten Terminalfenster aus, um ngrok zu starten:
In diesem Befehl, 3000 den Port an, den Ihre Express-Anwendung gerade abhört.
Sie sollten nun einen Bildschirm sehen, der der folgenden Abbildung ähnelt:

Beachten Sie die zweite Weiterleitungs-URL, da diese für die Konfiguration unseres Vonage-Webhooks verwendet wird.
Einrichten der WhatsApp-Sandbox
Wir nutzen die Vonage WhatsApp Sandbox für diese Demo, da Ihr Unternehmen von WhatsApp zugelassen werden muss, bevor Sie die API in der Produktion verwenden können.
Gehen Sie zur Messages API Sandbox, um Ihre WhatsApp-Nummer auf die Whitelist zu setzen, damit wir den Bot testen können.

Um Ihre WhatsApp-Nummer hinzuzufügen, damit Sie mit dem Empfangen und Senden von Nachrichten beginnen können, können Sie den QR-Code über WhatsApp scannen oder auf den Link klicken, der Ihnen angezeigt wird, und auf der vorausgefüllten Nachricht auf "Senden" klicken. Notieren Sie sich die WhatsApp-Sandbox-Nummer, da wir sie in Kürze zu unserer Umgebungsvariablen hinzufügen werden.
Als Nächstes konfigurieren Sie auf demselben Bildschirm die URL für den Inbound-Webhook, indem Sie die Ngrok-URL einfügen, die wir zuvor notiert haben. Vergessen Sie nicht, am Ende der URL den Zusatz /webhooks/inbound-message am Ende der URL.

Gehen Sie zu Ihren Dashboard-Einstellungen Seite und notieren Sie sich Ihre API Key und API Secret.
Hinzufügen von Umgebungsvariablen
Da wir alle Umgebungsvariablen, die unser Bot benötigen wird, mit ihren Werten notiert haben, können wir sie nun zu unserem Projekt hinzufügen. Erstellen Sie im Stammverzeichnis Ihres Projekts eine .env Datei und fügen Sie die folgenden Werte hinzu:
VONAGE_API_KEY=xxxx
VONAGE_API_SECRET=xxxx
VONAGE_FROM_NUMBER=xxxxVergessen Sie nicht, xxxx durch die tatsächlichen Werte zu ersetzen, die wir zuvor notiert haben.
Prüfung
Sie können die Funktionalität des Bots testen, indem Sie von Ihrem Smartphone aus über WhatsApp Nachrichten an ihn senden.
Schlussfolgerung
In diesem Tutorial haben wir gesehen, wie wir einen einfachen WhatsApp-Chatbot für die Durchführung von Währungsumrechnungen unter Verwendung der von Coinbase bereitgestellten Wechselkurse erstellen können. Dieses Tutorial kann als Ausgangspunkt dienen, um zu lernen, wie man mit der Messages API von Vonage Nachrichten über WhatsApp empfängt und sendet.
