Führen Sie einen geschäftsspezifischen WhatsApp-Chatbot aus, der Text, Bilder und Sprachnachrichten verstehen und den Nutzern mit Text- und Sprachnachrichten antworten kann. Betrieben von GPT-4o, Node.js und der Wassenger API.
Wenn Sie diesem Tutorial folgen, können Sie in wenigen Minuten einen voll funktionsfähigen, sprachfähigen ChatGPT-ähnlichen KI-Chatbot auf Ihrem Computer oder Cloud-Server betreiben. Der Chatbot ist so konzipiert, dass er als virtueller Kundensupport-Assistent für spezifische Geschäftsanforderungen arbeitet und mit Nutzern über Text- und Sprachnachrichten auf WhatsApp kommuniziert.
Der Chatbot kann Text, Bilder und Sprachnachrichten in vielen Sprachen verstehen und mit Text- und Sprachnachrichten antworten, trainiert als virtueller Kundensupport-Assistent mit vordefinierten Anweisungen und Wissen.
Sie können den KI-Bot einfach anpassen, erweitern und anweisen, sein Verhalten, seine Rolle, seinen Zweck und seine Wissensgrenzen an Ihren Anwendungsfall anzupassen. Der KI-Bot ist konversationsbewusst auf Basis Ihrer vorherigen WhatsApp-Nachrichtenhistorie mit dem Nutzer, was kontextbezogenere und genauere Antworten ermöglicht.
Zusätzlich können Sie domänenspezifisches Wissen über Ihr Unternehmen und Ihre Kunden in Echtzeit leicht erweitern, indem Sie Funktions-Tools verwenden, die dem KI-Bot erlauben, externe Informationen aus Remote-APIs, Datenbanken oder Dateien abzurufen und die KI mit detaillierten, nutzer- oder kontextspezifischen Informationen zu versorgen.
👉 👉 Der Code für dieses Tutorial ist auf GitHub verfügbar 💻
👉 👉 Video-Tutorial auf YouTube verfügbar
Inhalt
- Funktionen
- Wie es funktioniert
- Bot-Verhalten
- Voraussetzungen
- Projektstruktur
- Installation
- Konfiguration
- Anpassung
- Externe Daten und APIs aufrufen (RAG)
- Bot starten
- Verwendung
- Fragen
- Partnerprogramm
🤩 🤖 Wassenger ist eine komplette WhatsApp Team-Chat- und API-Lösung. Melden Sie sich für eine 7-tägige kostenlose Testversion an und legen Sie in wenigen Minuten los!
Funktionen
Dieses Tutorial bietet eine komplette, sprachfähige, von ChatGPT angetriebene KI-Chatbot-Implementierung in Node.js, die:
- Einen voll ausgestatteten, sprachfähigen Chatbot auf Ihrer mit Wassenger verbundenen WhatsApp-Nummer bereitstellt.
- Eingehende Nutzernachrichten automatisch verarbeitet (Text, Bild und Sprache) und mit Text und Sprache antwortet.
- Gesprochene Sprache versteht in über 90 verschiedenen menschlichen Sprachen und entsprechend basierend auf spezifischen, vorher trainierten Anweisungen antwortet.
- Nutzern erlaubt, den Wunsch zu äußern, mit einem Menschen zu sprechen, in welchem Fall der Chat einem Team-Agenten zugewiesen wird und der Bot-Flow verlassen wird.
- Das Verhalten des KI-Chatbots leicht in der Konfigurationsdatei anpassbar ist (siehe
config.js).
Wie es funktioniert
- Startet einen Webdienst, der sich automatisch mit der Wassenger API und Ihrer WhatsApp-Nummer verbindet.
- Erstellt einen Tunnel mit Ngrok, um Webhook-Ereignisse auf Ihrem Computer zu empfangen (oder Sie können eine dedizierte Webhook-URL verwenden, wenn Sie das Programm in der Cloud ausführen).
- Registriert den Webhook-Endpunkt automatisch, um eingehende Nachrichten zu empfangen.
- Verarbeitet eingehende Text-, Bild- und Sprachnachrichten von WhatsApp und antwortet mit Sprachnachrichten unter Verwendung eines GPT-4o (multimodal) Modells, das mit kundenspezifischen geschäftsspezifischen Anweisungen vortrainiert wurde.
- Weist Chats automatisch verfügbaren Team-Agenten zu, wenn der Nutzer dies verlangt oder der Chatbot nicht helfen kann.
Bot-Verhalten
Der KI-Bot antwortet auf eingehende Nachrichten basierend auf folgenden Kriterien:
- Der Chat ist niemandem Agenten zugewiesen in Wassenger.
- Der Chat enthält keine der gesperrten Labels (siehe
config.js). - Die Telefonnummer des Chat-Nutzers steht nicht auf der Blacklist (siehe
config.js). - Der Chat oder Kontakt ist nicht archiviert oder blockiert.
- Der Chat ist keine Gruppe oder Kanal.
- Wenn ein Chat von einem Agenten freigegeben wird, übernimmt der Bot ihn erneut und antwortet automatisch auf neue eingehende Nachrichten.
Voraussetzungen
- Node.js >= v16 — Hier herunterladen
- WhatsApp (persönliche oder Business-) Nummer
- OpenAI API-Schlüssel — Kostenlos registrieren
- Wassenger API-Schlüssel — Kostenlos registrieren
- Verbinden Sie Ihre WhatsApp-Nummer mit Wassenger (kostenlose Testphase)
- Ngrok Account (optional) — Kostenlos registrieren
Projektstruktur
Durchsuchen Sie die Quell-Dateien auf GitHub
|– bot.js -> The bot source code in a single file
|– config.js -> Configuration file to customize credentials and bot behavior
|– actions.js -> Functions to perform actions through the Wassenger API
|– server.js -> Initializes the web server to process webhook events
|– main.js -> Initializes the bot server and creates the webhook tunnel(when applicable)
|– speech.js -> Handles voice message transcription and synthesis
|– package.json -> Node.js package manifest required to install dependencies
|– node_modules -> Where the project dependencies will be installed, managed by npm
Installation
Wenn Sie Git installiert haben, führen Sie den folgenden Befehl im Terminal aus:
git clone https://github.com/wassengerhq/whatsapp-chatgpt-bot.git
Wenn Sie kein Git haben, laden Sie die Projekt-Quelldateien hier herunter und entpacken Sie sie.
Konfiguration
Öffnen Sie Ihr bevorzugtes Terminal und wechseln Sie in das Projektverzeichnis, in dem sich die Datei package.json befindet:
cd whatsapp-chatgpt-bot/
Installieren Sie von diesem Ordner aus die Abhängigkeiten, indem Sie ausführen:
npm install
Öffnen Sie mit Ihrem bevorzugten Code-Editor die Datei config.js und befolgen Sie die folgenden Schritte:
Setzen Sie Ihren Wassenger API-Schlüssel
Geben Sie Ihren Wassenger API-Schlüssel ein.
Sie können sich hier kostenlos registrieren, um Ihren Wassenger API-Schlüssel zu erhalten:
// Required.Specify the Wassenger API key to be used
const apiKey = process.env.API_KEY || 'ENTER API KEY HERE',
Setzen Sie Ihren OpenAI API-Schlüssel
Geben Sie Ihren OpenAI API-Schlüssel ein.
Melden Sie sich bei OpenAI kostenlos an und erhalten Sie dann hier den API-Schlüssel:
// Required.Specify the OpenAI API key to be used
const openaiKey = process.env.OPENAI_API_KEY || 'ENTER OPENAI API KEY HERE',
Setzen Sie Ihr Ngrok-Token (optional)
Wenn Sie das Programm auf Ihrem lokalen Computer ausführen müssen, muss das Programm einen Tunnel mit Ngrok erstellen, um Webhook-Ereignisse für eingehende WhatsApp-Nachrichten zu verarbeiten.
Registrieren Sie sich bei Ngrok für ein kostenloses Konto und erhalten Sie Ihr Auth-Token wie hier erklärt.
Setzen Sie das Token in config.js:
// Ngrok tunnel authentication token.
// Required if webhook URL is not provided.
const ngrokToken = process.env.NGROK_TOKEN || 'ENTER NGROK TOKEN HERE',
Wenn Sie das Programm auf einem Cloud-Server ausführen, der öffentlich aus dem Internet erreichbar ist, müssen Sie Ngrok nicht verwenden. Setzen Sie stattdessen Ihre Server-URL in config.js > webhookUrl Feld.
Aktivieren Sie die Audio-Ein- und Ausgabefunktion
In config.js gehen Sie zur Deklaration features in Zeile 67 und setzen audioInput und audioOutput auf true, wie unten angezeigt:
// Chatbot features.Edit as needed.
const features = {
// Enable or disable knowledge data loading for AI model training(pdfs, docs, csv, etc)
knowledge: true,
// Enable or disable text input processing
audioInput: true,
// Enable or disable audio voice responses.
// By default the bot will only reply with an audio messages if the user sends an audio message first.
audioOutput: true,
// Reply only using audio voice messages instead of text.
// Requires "features.audioOutput" to be true.
audioOnly: false,
// Audio voice to use for the bot responses.Requires "features.audioOutput" to be true.
// Options: 'alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer'
// More info: https://platform.openai.com/docs/guides/text-to-speech
voice: 'echo',
// Audio voice speed from 0.25 to 2.Requires "features.audioOutput" to be true.
voiceSpeed: 1,
// Enable or disable image input processing
// Note: image processing can significnantly increase the AI token processing costs compared to text
imageInput: true
};
Aktivieren des rein-audio Antwortmodus
Wenn Sie möchten, dass der Chatbot ausschließlich mit Audionachrichten antwortet, setzen Sie audioOnly auf true:
// Chatbot features.Edit as needed.
const features = {
// Enable or disable knowledge data loading for AI model training(pdfs, docs, csv, etc)
knowledge: true,
// Enable or disable text input processing
audioInput: true,
// Enable or disable audio voice responses.
// By default the bot will only reply with an audio messages if the user sends an audio message first.
audioOutput: true,
// Reply only using audio voice messages instead of text.
// Requires "features.audioOutput" to be true.
audioOnly: true,
// Audio voice to use for the bot responses.Requires "features.audioOutput" to be true.
// Options: 'alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer'
// More info: https://platform.openai.com/docs/guides/text-to-speech
voice: 'echo',
// Audio voice speed from 0.25 to 2.Requires "features.audioOutput" to be true.
voiceSpeed: 1,
// Enable or disable image input processing
// Note: image processing can significnantly increase the AI token processing costs compared to text
imageInput: true
};
Anpassung
Sie können das Verhalten des Chatbots anpassen, indem Sie eine Reihe von Anweisungen in natürlicher Sprache definieren, denen die KI folgen soll.
Lesen Sie die Kommentare im Code für weitere Anweisungen.
Außerdem können Sie den Code leicht an spezifischere Anforderungen anpassen. Die Möglichkeiten sind nahezu unbegrenzt!
Um mit der Anpassung fortzufahren, öffnen Sie config.js mit Ihrem bevorzugten Code-Editor und legen Sie die Bot-Anweisungen, Willkommens- und Standardnachrichten entsprechend Ihren Präferenzen fest.
Externe Daten und APIs aufrufen (RAG)
Mit Funktionsaufrufen können Sie das KI-Modell einfach mit kontextuellen, Echtzeit- und nutzerspezifischen Informationen versorgen, um bessere und genauere Antworten unter Verwendung von Retrieval-Augmented Generation (RAG) Techniken zu generieren. Im Hintergrund wird die OpenAI Tool Function Calling Funktion verwendet.
Wenn das KI-Modell bestimmte Informationen benötigt, um eine Antwort zu generieren, wird es anweisen, eine oder mehrere Funktionen auszuführen, um zusätzliche Informationen abzurufen. Beispielsweise können Sie in einer Funktion eine externe CRM-API oder Datenbank abfragen, um kundenspezifische Informationen zu erhalten, mit denen der KI-Agent chattet, wie E-Mail-Adresse, Benutzername, Versandadresse usw., und diese Informationen dann als Text oder JSON an das KI-Modell zurückgeben, damit es kontextbewusste, nutzerspezifische Antworten generieren kann.
Die Verwendung von Tool-Funktionen ist sehr flexibel und ermöglicht Ihnen den Aufbau komplexer und domänenspezifischer Anwendungsfälle für einen KI-Agenten-Bot.
Siehe die Datei [functions.js](https://github.com/wassengerhq/whatsapp-chatgpt-bot/blob/master/functions.js) für mehrere Beispiele, wie man Tool-Funktionen für das Laden externer KI-Daten (RAG) verwendet und definiert:
// Tool functions to be consumed by the AI when needed.
// Edit as needed to cover your business use cases.
// Using it you can instruct the AI to inform you to execute arbitrary functions
// in your code based in order to augment information for a specific user query.
// For example, you can call an external CRM in order to retrieve, save or validate
// specific information about the customer, such as email, phone number, user ID, etc.
// Learn more here: https://platform.openai.com/docs/guides/function-calling
const functions = [
// Sample function to retrieve plan prices of the product
// Edit as needed to cover your business use cases
{
name: 'getPlanPrices',
description:
'Get available plans and prices information available in Wassenger',
parameters: { type: 'object', properties: {} },
// Function implementation that will be executed when the AI requires to call this function
// The function must return a string with the information to be sent back to the AI for the response generation
// You can also return a JSON or a prompt message instructing the AI how to respond to a user
// Functions may be synchronous or asynchronous.
//
// The bot will inject the following parameters:
// - parameters: function parameters provided by the AI when the function has parameters defined
// - response: AI generated response object, useful to evaluate the AI response and take actions
// - data: webhook event context, useful to access the last user message, chat and contact information
// - device: WhatsApp number device information provided the by the Wassenger API
// - messages: an list of previous messages in the same user chat
run: async ({ parameters, response, data, device, messages }) => {
// console.log('=> data:', response)
// console.log('=> response:', response)
const reply = [
'*Send & Receive messages + API + Webhooks + Team Chat + Campaigns + CRM + Analytics*',
'',
'- Platform Professional: 30, 000 messages + unlimited inbound messages + 10 campaigns / month',
'- Platform Business: 60, 000 messages + unlimited inbound messages + 20 campaigns / month',
'- Platform Enterprise: unlimited messages + 30 campaigns',
'',
'Each plan is limited to one WhatsApp number.You can purchase multiple plans if you have multiple numbers.',
'',
'*Find more information about the different plan prices and features here:*',
'https://wassenger.com/#pricing'
].join('\n');
return reply;
}
},
// Sample function to load user information from a CRM
{
name: 'loadUserInformation',
description: 'Find user name and email from the CRM',
parameters: {
type: 'object',
properties: {}
},
run: async ({ parameters, response, data, device, messages }) => {
// You may call an remote API and run a database query
const reply =
'I am sorry, I am not able to access the CRM at the moment.Please try again later.';
return reply;
}
}
];
Bot starten
Starten Sie das Bot-Programm:
node main
Starten Sie das Bot-Programm auf einem benutzerdefinierten Port:
PORT=80 node main
Starten Sie das Bot-Programm für ein bestimmtes, mit Wassenger verbundenes Gerät:
DEVICE=WHATSAPP_DEVICE_ID node main
Starten Sie das Bot-Programm im Produktionsmodus:
NODE_ENV=production node main
Starten Sie den Bot mit einem vorhandenen Webhook-Server ohne Ngrok-Tunnel:
WEBHOOK_URL=https://bot.company.com:8080/webhook node main
Hinweis:
https://bot.company.com:8080muss auf das Bot-Programm selbst zeigen, das auf Ihrem Server läuft, und über HTTPS aus dem Netzwerk erreichbar sein für eine sichere Verbindung.
Fragen
Kann ich die KI so trainieren, dass sie sich individuell verhält?
Ja! Sie können der KI angepasste Anweisungen geben, um das Verhalten, die Identität und mehr des Bots zu bestimmen.
Um Ihre angepassten Anweisungen festzulegen, geben Sie den Text in config.js > botInstructions ein.
Kann ich der KI untersagen, zu nicht relevanten Themen zu antworten?
Ja! Durch das Definieren einer klaren und expliziten Anweisungssammlung können Sie der KI beibringen, bei ihrer Rolle zu bleiben und höflich Themen abzulehnen, die nicht relevant sind.
Zum Beispiel können Sie Folgendes in Ihre Anweisungen aufnehmen:
You are a smart virtual customer support assistant who works for Wassenger.
Be polite, gentle, helpful, and empathetic.
Politely reject any queries that are not related to your customer support role or Wassenger itself.
Strictly stick to your role as a customer support virtual assistant for Wassenger.Copiar código
Kann ich die Antworten und das Verhalten des Chatbots anpassen?
Auf jeden Fall! Der Code ist kostenlos verfügbar und Sie können ihn so anpassen, wie Sie es benötigen.
Sie benötigen lediglich einige Kenntnisse in JavaScript/Node.js, und Sie können immer ChatGPT bitten, Ihnen beim Schreiben des benötigten Codes zu helfen.
Wie verhindere ich, dass der Bot auf bestimmte Chats antwortet?
Weisen Sie einfach die spezifischen Chats einem Agenten im Wassenger Web-Chat oder über die API zu.
Alternativ können Sie in config.js im Feld skipChatWithLabels gesperrte Labels setzen und dann eines dieser Labels dem spezifischen Chat hinzufügen, der vom Bot ignoriert werden soll. Sie können Labels Chats über den Wassenger Web-Chat oder über die API zuweisen.
Muss ich Ngrok verwenden?
Nein, müssen Sie nicht. Ngrok wird nur für Entwicklungs-/Testzwecke verwendet, wenn das Programm von Ihrem lokalen Computer ausgeführt wird. Wenn Sie das Programm auf einem Cloud-Server ausführen, benötigen Sie Ngrok höchstwahrscheinlich nicht, wenn Ihr Server über das Internet unter einer öffentlichen Domain (z. B. bot.company.com) oder einer öffentlichen IP erreichbar ist.
In diesem Fall müssen Sie beim Starten des Bot-Programms die vollständige URL Ihres Servers angeben, die mit /webhook endet, zum Beispiel:
WEBHOOK_URL=https://bot.company.com:8080/webhook node main
Hinweis: https://bot.company.com:8080 muss auf das Bot-Programm selbst zeigen, das auf Ihrem Server läuft, und über HTTPS aus dem Netzwerk erreichbar sein für eine sichere Verbindung.
Was passiert, wenn das Programm ausfällt?
Bitte prüfen Sie die Fehlermeldung im Terminal und stellen Sie sicher, dass Sie das Programm mit ausreichenden Berechtigungen ausführen, um es auf Port 8080 auf localhost zu starten.
Wie vermeide ich, dass bestimmte Chats vom Bot beantwortet werden?
Standardmäßig ignoriert der Bot Nachrichten, die in Gruppen-Chats, blockierten oder archivierten Chats/Kontakten gesendet werden.
Darüber hinaus können Sie spezifische Telefonnummern und Chats mit Labels auf eine Blacklist oder Whitelist setzen, damit sie vom Bot verarbeitet oder ignoriert werden.
Siehe die Optionen numbersBlacklist, numbersWhitelist und skipChatWithLabels in config.js für weitere Informationen.
Kann ich diesen Bot auf meinem eigenen Server betreiben?
Absolut! Deployen oder übertragen Sie den Programm-Quellcode auf Ihren Server und führen Sie den Startbefehl von dort aus.
Die Voraussetzungen sind überall die gleichen, egal wo Sie den Bot ausführen.
Vergessen Sie außerdem nicht, die Umgebungsvariable WEBHOOK_URL mit der öffentlich zugänglichen URL Ihres Servers zu definieren, wie zuvor beschrieben.
Partnerprogramm
🤑 💰 Verdienen Sie 30% Provision, indem Sie Nutzer an Wassenger verweisen. Holen Sie sich jetzt Ihren Empfehlungslink. Es gelten die Bedingungen.






