Starte in wenigen Minuten einen anpassbaren, geschäftsspezifischen und voll funktionsfähigen KI-Chatbot auf deinem WhatsApp. Unterstützt jetzt GPT-4o (multimodal) und verbesserte externe Datenlade- und Remote-API-Aufrufe (RAG)
Verwandle deine WhatsApp-Nummer in wenigen Minuten mit diesem Tutorial in einen leistungsstarken, von ChatGPT angetriebenen AI-Chatbot, unter Verwendung von Node.js, ChatGPT (GPT-4o model) und der Wassenger API.
Wenn du diesem Tutorial folgst, wirst du in der Lage sein, in wenigen Minuten einen voll funktionsfähigen, ChatGPT-ähnlichen KI-Chatbot auf deinem Computer oder Cloud-Server laufen zu lassen, der als virtueller Kundensupport-Assistent für einen spezifischen geschäftlichen Zweck fungiert.
Du kannst den AI-Bot einfach anpassen und anweisen, sein Verhalten, seine Rolle, seinen Zweck und seine Wissensgrenzen zu ändern. Außerdem ist der AI-Bot konversationsbewusst basierend auf deinem vorherigen Nachrichtenverlauf mit dem Nutzer auf WhatsApp, was kontextspezifisch genauere Antworten ermöglicht.
Der Chatbot kann viele Sprachen verstehen und beantworten und wurde darauf trainiert, sich wie ein virtueller Kundensupport-Assistent für geschäftliche Zwecke zu verhalten.
Zusätzlich kannst du domänenspezifisches Wissen über dein Unternehmen in Echtzeit augmentieren, indem du Funktionsaktionen verwendest, die dem AI-Bot erlauben, beliebig mit deinen Code-Funktionen oder Remote-APIs zu kommunizieren, um Informationen abzurufen und dem AI-Modell bereitzustellen. Ein Beispiel findest du hier.
Der Code für dieses Tutorial ist auf GitHub verfügbar💻
🤩 🤖 Wassenger ist eine komplette WhatsApp API-Lösung. Melde dich für eine 7-tägige kostenlose Testversion an und lege in wenigen Minuten los!
Demo-Konversation auf WhatsApp, betrieben vom ChatGPT-Chatbot mithilfe dieses Tutorials
Inhalt
- Wie es funktioniert
- Funktionen
- Bot-Verhalten
- Voraussetzungen
- Projektstruktur
- Installation
- Konfiguration
- Anpassung
- Externe Daten und APIs aufrufen (RAG)
- Bot starten
- Verwendung
- Fragen
🤑 💰 Verdiene 30% Provision, indem du Nutzer an Wassenger empfiehlst. Hol dir jetzt deinen Empfehlungslink. Bedingungen gelten.
Wie es funktioniert
1. Startet einen Webdienst, der sich automatisch mit der Wassenger API und deiner WhatsApp-Nummer verbindet
2. Erstelle einen Tunnel mit Ngrok, um Webhook-Ereignisse auf deinem Computer empfangen zu können (oder du kannst stattdessen eine dedizierte Webhook-URL verwenden, wenn du das Bot-Programm auf deinem Cloud-Server betreibst).
3. Registriert den Webhook-Endpunkt automatisch, um eingehende Nachrichten zu empfangen.
4. Verarbeitet und beantwortet empfangene Nachrichten mithilfe eines ChatGPT-gestützten AI-Modells, das mit benutzerdefinierten Anweisungen trainiert wurde.
5. Du kannst beginnen, mit dem AI-Bot zu interagieren, indem du Nachrichten an die mit Wassenger verbundene WhatsApp-Nummer sendest.
Funktionen
Dieses Tutorial stellt eine vollständige, ChatGPT-gestützte KI-Chatbot-Implementierung in Node.js bereit, die:
- Einen voll ausgestatteten Chatbot auf deiner WhatsApp-Nummer bietet, verbunden mit Wassenger
- Automatisch auf alle eingehenden Nachrichten von beliebigen Nutzern antwortet
- Jeglichen Text in natürlicher Sprache verstehen und in 90+ verschiedenen menschlichen Sprachen antworten kann
- Jedem Nutzer erlaubt, eine Unterhaltung mit einem Menschen anzufordern, woraufhin der Chat einem Agenten zugewiesen wird und der Bot-Flow beendet wird
- Das AI-Bot-Verhalten kann leicht in der Konfigurationsdatei angepasst werden (open config.js)
Bot-Verhalten
Der AI-Bot antwortet eingehenden Nachrichten immer basierend auf folgenden Kriterien:
- Der Chat gehört einem Nutzer (Gruppenchats werden immer ignoriert)
- Der Chat ist keinem Agenten innerhalb von Wassenger zugewiesen
- Der Chat hat keine der blacklisted Labels (siehe config.js)
- Die Nummer des Chat-Nutzers wurde nicht auf die Blacklist gesetzt (siehe config.js)
- Der Chat oder Kontakt wurde nicht archiviert oder blockiert
- Wenn ein Chat von einem Agenten abgewiesen 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 key — Kostenlos registrieren
- Wassenger API key — Kostenlos registrieren
- Verbinde deine WhatsApp persönliche oder Business-Nummer mit Wassenger
- Registriere dich für ein kostenloses Ngrok-Konto, um einen Webhook-Tunnel zu erstellen (nur erforderlich, wenn du das Programm lokal auf deinem Computer ausführst)
Projektstruktur
Durchsuche 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)
|- store.js -> the bot source code in a single file
|- package.json -> node.js package manifest required to install dependencies
|- node_modules -> where the project dependencies will be installed, managed by npm
Installation
Wenn du git installiert hast, führe den folgenden Befehl im Terminal aus:
git clone https://github.com/wassengerhq/whatsapp-chatgpt-bot.git
Wenn du kein git hast, lade die Projektquellen hier herunter und entpacke sie.
So sieht der von Wassenger optimierte kooperative Web-Chat aus. Jetzt kostenlos anmelden
🤑 💰 Verdiene 30% Provision, indem du Nutzer an Wassenger empfiehlst. Hol dir jetzt deinen Empfehlungslink. Bedingungen gelten.
Konfiguration
Öffne dein bevorzugtes Terminal und wechsle in das Projektverzeichnis, in dem sich package.json befindet:
cd whatsapp-chatgpt-bot/
Installiere aus diesem Ordner die Abhängigkeiten, indem du ausführst:
npm install
Öffne mit deinem bevorzugten Code-Editor die Datei config.js und folge den untenstehenden Schritten.
Setze deinen Wassenger API-Schlüssel
Gib deinen Wassenger API-Schlüssel ein
Hier kannst du dich kostenlos registrieren und dann den API-Schlüssel hier abrufen:
// Required. Specify the Wassenger API key to be used // You can obtain it here: https://app.wassenger.com/apikeys apiKey: env.API_KEY || 'ENTER API KEY HERE',
Setze deinen OpenAI API-Schlüssel
Gib deinen OpenAI API-Schlüssel ein
Registriere dich kostenlos bei OpenAI und rufe dann den API-Schlüssel hier ab:
// Required. Specify the OpenAI API key to be used // You can sign up for free here: https://platform.openai.com/signup // Obtain your API key here: https://platform.openai.com/account/api-keys openaiKey: env.OPENAI_API_KEY || 'ENTER OPENAI API KEY HERE',
Setze dein Ngrok-Token (optional)
Wenn du das Programm auf deinem lokalen Computer ausführen musst, benötigt das Programm einen Tunnel mit Ngrok, um Webhook-Ereignisse für eingehende WhatsApp-Nachrichten zu verarbeiten.
Registriere dich für ein kostenloses Ngrok-Konto und rufe wie hier erklärt dein Auth-Token ab: https://ngrok.com/docs/agent/#authtokens.
Setze das Token in config.js in Zeile 90:
// Ngrok tunnel authentication token. // Required if webhook URL is not provided. // sign up for free and get one: https://ngrok.com/signup // Learn how to obtain the auth token: https://ngrok.com/docs/agent/#authtokens ngrokToken: env.NGROK_TOKEN || 'ENTER NGROK TOKEN HERE',
Wenn du das Programm auf einem öffentlich erreichbaren Cloud-Server ausführst, musst du Ngrok nicht verwenden. Stattdessen setze deine Server-URL im Feld
webhookUrlinconfig.js.
Anpassung
Du kannst das Verhalten des Chatbots anpassen, indem du eine Reihe von Anweisungen in natürlicher Sprache definierst, denen die AI folgen soll.
Lies die Kommentare im Code für weitere Anweisungen.
Außerdem kannst du den Code leicht an spezifischere Anforderungen anpassen. Die Möglichkeiten sind nahezu unbegrenzt!
Um mit der Anpassung fortzufahren, öffne config.js mit deinem bevorzugten Editor und setze die Bot-Anweisungen, Willkommens- und Standardnachrichten nach deinen Vorlieben:
// Default message when the user sends an unknown message. const unknownCommandMessage = `I'm sorry, I can only understand text. Can you please describe your query? If you would like to chat with a human, just reply with *human*.`
// Default welcome message. Change it as you need. const welcomeMessage = `Hey there 👋 Welcome to this ChatGPT-powered AI chatbot demo using *Wassenger API*! I can also speak many languages 😁`
// AI bot instructions to adjust its behaviour. Change it as you need. // Use concise and clear instructions. const botInstructions = `You are a smart virtual customer support assistant that works for Wassenger. You can identify yourself as Molly, the Wassenger chatbot assistant. You will be chatting with random customers who may contact you with general queries about the product. Wassenger is a cloud solution that offers WhatsApp API and multi-user live communication services designed for businesses and developers. Wassenger also enables customers to automate WhatsApp communication and build chatbots. You are an expert in customer support. Be polite, be gentle, be helpful and emphatic. Politely reject any queries that are not related to customer support or Wassenger itself. Strictly stick to your role as a customer support virtual assistant for Wassenger. If you can't help with something, ask the user to type *human* in order to talk with customer support.`
// Default help message. Change it as you need. const defaultMessage = `Don't be shy 😁 try asking anything to the AI chatbot, using natural language! Example queries: 1️⃣ Explain me what is Wassenger 2️⃣ Can I use Wassenger to send automatic messages? 3️⃣ Can I schedule messages using Wassenger? 4️⃣ Is there a free trial available? Type *human* to talk with a person. The chat will be assigned to an available member of the team. Give it a try! 😁`
Öffne die vollständige Konfigurationsdatei mit allen verfügbaren Optionen
Externe Daten und APIs aufrufen (RAG)
Mit Funktionsaufrufen kannst du dem AI-Modell leicht kontextuelle, Echtzeit- und nutzerspezifische Informationen zuführen, damit es bessere und genauere Antworten mithilfe von Retrieval-Augmented Generation (RAG) Techniken generiert.
Im Hintergrund nutzt es die OpenAI Tool Function Calling feature.
Wenn das AI-Modell bestimmte Informationen benötigt, weist es an, eine oder mehrere Funktionen auszuführen, um zusätzliche Informationen abzurufen. Beispielsweise kannst du in einer Funktion eine externe CRM-API oder Datenbank abfragen, um kundenspezifische Informationen zu erhalten — etwa E-Mail-Adresse, Benutzername, Lieferadresse usw. — und diese Informationen dann als Text oder JSON dem AI-Modell für die präzise, nutzerspezifische Antwortgenerierung bereitstellen.
Der Einsatz von Tool-Funktionen ist mächtig und ermöglicht es dir, komplexe und domänenspezifische Anwendungsfälle für einen AI-Agenten-Bot zu erstellen.
Hier ein Beispiel für eine RAG-Implementierung mit mehreren Tool-Funktionen:
// 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 } },
// Sample function to verify the current date and time { name: 'verifyMeetingAvaiability', description: 'Verify if a given date and time is available for a meeting before booking it', parameters: { type: 'object', properties: { date: { type: 'string', format: 'date-time', description: 'Date of the meeting' } }, required: ['date'] }, run: async ({ parameters, response, data, device, messages }) => { console.log('=> verifyMeetingAvaiability call parameters:', parameters) // Example: you can make an API call to verify the date and time availability and return the confirmation or rejection message const date = new Date(parameters.date) if (date.getUTCDay() > 5) { return 'Not available on weekends' } if (date.getHours() < 9 || date.getHours() > 17) { return 'Not available outside business hours: 9 am to 5 pm' } return 'Available' } },
// Sample function to determine the current date and time { name: 'bookSalesMeeting', description: 'Book a sales or demo meeting with the customer on a specific date and time', parameters: { type: 'object', properties: { date: { type: 'string', format: 'date-time', description: 'Date of the meeting' } }, required: ['date'] }, run: async ({ parameters, response, data, device, messages }) => { console.log('=> bookSalesMeeting call parameters:', parameters) // Make an API call to book the meeting and return the confirmation or rejection message return 'Meeting booked successfully. You will receive a confirmation email shortly.' } },
// Sample function to determine the current date and time { name: 'currentDateAndTime', description: 'What is the current date and time', run: async ({ parameters, response, data, device, messages }) => { return new Date().toLocaleString() } } ]
Bot starten
Du kannst das Bot-Programm jetzt direkt in deinem Browser mit StackBlitz ausführen:
WhatsApp ChatGPT-powered Edit descriptio.npr.new
Verwendung
Starte das Bot-Programm:
node main
Starte das Bot-Programm auf einem benutzerdefinierten Port:
PORT=80 node main
Starte das Bot-Programm für ein spezifisches, mit Wassenger verbundenes Gerät:
DEVICE=WHATSAPP_DEVICE_ID node main
Starte das Bot-Programm im Produktionsmodus:
NODE_ENV=production node main
Starte den Bot mit einem existierenden 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 deinem Server läuft und über HTTPS aus dem Netzwerk erreichbar sein, damit eine sichere Verbindung möglich ist.
Fragen
Kann ich die AI so trainieren, dass sie sich individuell verhält?
Ja! Du kannst der AI maßgeschneiderte Anweisungen geben, um das Verhalten, die Identität und mehr des Bots zu bestimmen.
Um deine individuellen Anweisungen festzulegen, gib den Text in config.js > botInstructions ein.
Kann ich der AI beibringen, nicht auf irrelevante Themen zu antworten?
Ja! Durch das Definieren einer klaren und expliziten Anweisungssammlung kannst du der AI beibringen, sich an ihre Rolle zu halten und höflich nicht auf Themen zu antworten, die nicht relevant sind.
Zum Beispiel kannst du Folgendes in deine Anweisungen aufnehmen:
You are a smart virtual customer support assistant who works for Wassenger.
Be polite, be gentle, be helpful and emphatic.
Politely reject any queries that are not related to your customer support role or Wassenger itself.
Strictly stick to your role as customer support virtual assistant for Wassenger.
Kann ich die Antworten und das Verhalten des Chatbots anpassen?
Auf jeden Fall! Der Code ist frei verfügbar und du kannst ihn so anpassen, wie du es benötigst.
Du brauchst nur etwas JavaScript/Node.js-Wissen, und du kannst ChatGPT jederzeit bitten, dir beim Schreiben des benötigten Codes zu helfen.
Wie verhindere ich, dass der Bot auf bestimmte Chats antwortet?
Du solltest einfach die spezifischen Chats einem beliebigen Agenten im Wassenger Web-Chat zuweisen oder die API verwenden.
Alternativ kannst du in config.js das Feld skipChatWithLabels mit Blacklist-Labels befüllen und dann eines dieser Labels zu dem spezifischen Chat hinzufügen, den der Bot ignorieren soll. Du kannst Labels Chats mit dem Wassenger Web-Chat oder über die API zuweisen.
Muss ich Ngrok verwenden?
Nein, musst du nicht. Ngrok wird nur für Entwicklungs-/Testzwecke verwendet, wenn das Programm auf deinem lokalen Computer ausgeführt wird. Wenn du das Programm auf einem Cloud-Server betreibst, brauchst du Ngrok höchstwahrscheinlich nicht, sofern dein Server über eine öffentliche Domain (z. B. bot.company.com) oder eine öffentliche IP aus dem Internet erreichbar ist.
In diesem Fall musst du beim Start des Bot-Programms die vollständige URL deines Servers angeben, die mit /webhook endet, z. B.:
WEBHOOK_URL=https://bot.company.com:8080/webhook node main
Hinweis:
https://bot.company.com:8080muss auf das Bot-Programm selbst zeigen, das auf deinem Server läuft und über HTTPS aus dem Netzwerk erreichbar sein, damit eine sichere Verbindung möglich ist.
Was passiert, wenn das Programm fehlschlägt?
Bitte prüfe die Fehlermeldungen im Terminal und stelle sicher, dass du das Programm mit den erforderlichen Berechtigungen ausführst, um es z. B. auf Port 8080 auf localhost zu starten.
Wie vermeide ich, dass bestimmte Chats vom Bot beantwortet werden?
Standardmäßig ignoriert der Bot Nachrichten aus Gruppenchats sowie blockierte und archivierte Chats/Kontakte.
Darüber hinaus kannst du bestimmte Telefonnummern und Chats mit Labels auf eine Blacklist oder Whitelist setzen, die vom Bot verarbeitet werden sollen oder nicht.
Siehe die Optionen numbersBlacklist, numbersWhitelist und skipChatWithLabels in config.js für weitere Informationen.
Kann ich diesen Bot auf meinem Server betreiben?
Absolut! Deploye oder übertrage den Quellcode des Programms auf deinen Server und führe dort den Startbefehl aus.
Die Voraussetzungen sind überall gleich, unabhängig davon, wo du den Bot ausführst.
Vergiss außerdem nicht, die Umgebungsvariable WEBHOOK_URL mit der öffentlich erreichbaren URL deines Servers zu definieren, wie zuvor beschrieben.








