Skip to content
Back to Blog

WhatsApp GPT 4o AI-Chatbot in C Vollständiges Tutorial

Ein vielseitiger, anpassbarer WhatsApp AI-Chatbot in C# 🔷, der Text 📝, Audio 🎵 und Bilder 🖼️ verstehen kann und deinen Kund:innen 💬 direkt auf WhatsApp ✅ alles rund um dein Geschäft 🏢 beantworten kann. Angetrieben von OpenAI GPT4o 🚀 (andere Modelle sind ebenfalls nutzbar) und der Wassenger WhatsApp API 🔗.

Unterstützt jetzt GPT-4o mit Text‑ + Audio‑ + Bildeingabe 📝🎵🖼️, Audio‑Antworten 🔊 sowie verbessertes RAG + MCP mit Function Calling 🛠️ und Unterstützung für externe API‑Aufrufe 🌐

Finde weitere AI‑Chatbot‑Implementierungen in Python, Node.js und PHP

🚀 Starte kostenlos mit der Wassenger WhatsApp API in wenigen Minuten, indem du deine bestehende WhatsApp‑Nummer verbindest und deinen API‑Schlüssel erhältst

Funktionen

  • 🤖 Voll ausgestatteter Chatbot für deine mit Wassenger verbundene WhatsApp‑Nummer
  • 💬 Automatische Antworten auf eingehende Nachrichten von Nutzer:innen
  • 🌍 Mehrsprachige Unterstützung — versteht und antwortet in 90+ Sprachen
  • 🎤 Audioein-/-ausgabe — Transkription und Text‑zu‑Sprache‑Funktionen
  • 🖼️ Bildverarbeitung — kann Bilder analysieren und interpretieren
  • 👥 Übergabe an Menschen — ermöglicht Nutzer:innen, menschliche Hilfe anzufordern
  • ⚙️ Anpassbares AI‑Verhalten und Anweisungen
  • 🔧 Function Calling zur Integration externer Daten
  • 📊 Speicherverwaltung mit Gesprächsverlauf und Rate‑Limiting
  • 🚦 Intelligentes Routing mit Webhook‑Verarbeitung und Fehlerbehandlung
  • 🔒 Sicher mit ordentlicher Fehlerbehandlung und Protokollierung
  • 🔄 Modernes C# mit .NET 9, Dependency Injection und async/await‑Mustern

Inhalt

Schnellstart

  • Repository klonen:
git clone https://github.com/wassengerhq/whatsapp-chatgpt-bot-csharp.git cd whatsapp-chatgpt-bot-csharp
cp.env.example.env # Edit.env file with your API keys(see Configuration section)
  • Bot starten (lokaler Entwicklungsmodus):
cd src/WhatsAppChatBot dotnet run

Voraussetzungen

Konfiguration

Bearbeite die .env‑Datei mit deinen API‑Zugangsdaten:

# Required: Wassenger API key
API_KEY=your_wassenger_api_key_here
# Required: OpenAI API key
OPENAI_API_KEY=your_openai_api_key_here
# OpenAI model to use(gpt-4o, gpt-4, gpt-3.5-turbo)
OPENAI_MODEL=gpt-4o
# Required for local development: Ngrok auth token
NGROK_TOKEN=your_ngrok_token_here
# Optional: Specific WhatsApp device ID
DEVICE=
# Optional: Webhook URL for production deployment
WEBHOOK_URL=https://yourdomain.com/webhook
# Server configuration
PORT=8080
LOG_LEVEL=Information
# Development mode(auto-initializes services)
DEV=true

API‑Schlüssel einrichten

Wassenger API‑Schlüssel:

  • Registriere dich bei Wassenger (kostenlose Testphase verfügbar)
  • Gehe zu API Keys
  • Erstelle einen neuen API‑Schlüssel und kopiere ihn in API_KEY in der .env

OpenAI API‑Schlüssel:

  • Registriere dich bei OpenAI (kostenlose Guthaben verfügbar)
  • Gehe zu API Keys
  • Erstelle einen neuen API‑Schlüssel und kopiere ihn in OPENAI_API_KEY in der .env

Ngrok Token (für lokale Entwicklung):

Bot‑Anpassung

Bearbeite src/WhatsAppChatBot/Config/BotConfig.cs, um Folgendes anzupassen:

  • Bot‑Anweisungen und Persönlichkeit
  • Begrüßungs‑ und Hilfenachrichten
  • Unterstützte Funktionen (Audio, Bilder usw.)
  • Ratenlimits und Kontingente
  • Whitelist-/Blacklist‑Nummern
  • Labels und Metadaten‑Einstellungen

Verwendung

Lokale Entwicklung

Starte den Entwicklungsserver:

cd src/WhatsAppChatBot dotnet run

Der Bot wird:

  • Einen lokalen HTTP‑Server auf Port 8080 starten
  • Optional automatisch einen Ngrok‑Tunnel erstellen
  • Den Webhook bei Wassenger registrieren
  • Mit der Verarbeitung von WhatsApp‑Nachrichten beginnen

Sende eine Nachricht an deine mit Wassenger verbundene WhatsApp‑Nummer, um den Bot zu testen.

Produktiv‑Bereitstellung

Setze die Umgebungsvariablen auf deinem Server:

export WEBHOOK_URL=https://yourdomain.com/webhook
export API_KEY=your_wassenger_api_key
export OPENAI_API_KEY=your_openai_api_key
export PRODUCTION=true

Builden und ausführen:

dotnet build -c Release dotnet run - configuration Release

Stelle sicher, dass dein Server POST‑Anfragen an /webhook empfangen kann

Bereitstellung

Du kannst diesen Bot auf jeder Cloud‑Plattform bereitstellen, die .NET 8 unterstützt.

Docker‑Bereitstellung

# Build the Docker image
docker build -t whatsapp-chatbot.
# Run the container
docker run -d \
--name whatsapp-chatbot \
-p 8080:8080 \
-e API_KEY=your_wassenger_api_key \
-e OPENAI_API_KEY=your_openai_api_key \
-e WEBHOOK_URL=https://yourdomain.com/webhook \
-e PRODUCTION=true \
whatsapp-chatbot

Render

# Create render.yaml for automated deployment
cat > render.yaml << EOF
services:
- type: web
name: whatsapp-chatbot
env: docker
dockerfilePath:./Dockerfile
envVars:
- key: API_KEY
value: your_wassenger_api_key
- key: OPENAI_API_KEY
value: your_openai_api_key
- key: PRODUCTION
value: true
- key: PORT
value: 8080
EOF
# Connect your GitHub repo to Render and deploy automatically
# Or deploy manually:
# 1.Push to GitHub
# 2.Connect repo in Render dashboard
# 3.Set environment variables in Render UI

Heroku

# Login and create app
heroku login
heroku create your-whatsapp-bot
# Set environment variables
heroku config:set API_KEY=your_wassenger_api_key
heroku config:set OPENAI_API_KEY=your_openai_api_key
heroku config:set PRODUCTION=true
# Create heroku.yml for container deployment
cat > heroku.yml << EOF
build:
docker:
web: Dockerfile
run:
web: dotnet run --configuration Release
EOF
# Set stack to container
heroku stack:set container
# Deploy
git add.
git commit -m "Deploy to Heroku"
git push heroku main

Railway

# Install Railway CLI
npm install -g @railway/cli
# Login and deploy
railway login
railway new
# Deploy with environment variables
railway add --name API_KEY --value your_wassenger_api_key
railway add --name OPENAI_API_KEY --value your_openai_api_key
railway add --name PRODUCTION --value true
# Deploy from current directory
railway up

Fly.io

# Install flyctl
curl -L https://fly.io/install.sh | sh
# Initialize and configure
flyctl auth login
flyctl launch --name whatsapp-chatbot
# Create fly.toml configuration
cat > fly.toml << EOF
app = "whatsapp-chatbot"
primary_region = "iad"
[build]
dockerfile = "Dockerfile"
[env]
PRODUCTION = "true"
PORT = "8080"
[[services]]
http_checks = []
internal_port = 8080
processes = ["app"]
protocol = "tcp"
script_checks = []
[[services.ports]]
force_https = true
handlers = ["http"]
port = 80
[[services.ports]]
handlers = ["tls", "http"]
port = 443
EOF
# Set secrets
flyctl secrets set API_KEY=your_wassenger_api_key
flyctl secrets set OPENAI_API_KEY=your_openai_api_key
# Deploy
flyctl deploy

Azure App Service

# Create resource group
az group create --name rg-whatsapp-bot --location "East US"
# Create App Service plan
az appservice plan create --name asp-whatsapp-bot --resource-group rg-whatsapp-bot --sku B1 --is-linux
# Create web app
az webapp create --resource-group rg-whatsapp-bot --plan asp-whatsapp-bot --name your-app-name --runtime "DOTNETCORE:8.0"
# Configure app settings
az webapp config appsettings set --resource-group rg-whatsapp-bot --name your-app-name --settings \
API_KEY=your_wassenger_api_key \
OPENAI_API_KEY=your_openai_api_key \
PRODUCTION=true
# Deploy
dotnet publish -c Release
cd src/WhatsAppChatBot/bin/Release/net9.0/publish
zip -r../../../../../deploy.zip.
az webapp deployment source config-zip --resource-group rg-whatsapp-bot --name your-app-name --src deploy.zip

Architektur

Die C#‑Implementierung folgt modernen .NET‑Mustern und Clean Architecture:

src/
├── WhatsAppChatBot/
│ ├── Api/ # API clients
│ │ ├── OpenAIClient.cs # OpenAI API integration
│ │ └── WassengerClient.cs # Wassenger API integration
│ ├── Bot/ # Core bot logic
│ │ ├── ChatBot.cs # Main bot processing
│ │ └── FunctionHandler.cs # Function calling system
│ ├── Config/ # Configuration management
│ │ └── BotConfig.cs # Centralized configuration
│ ├── Controllers/ # HTTP layer
│ │ └── WebhookController.cs # API endpoints and webhook handling
│ ├── Models/ # Data models
│ │ ├── OpenAIModels.cs # OpenAI API models
│ │ ├── WassengerModels.cs # Wassenger API models
│ │ └── WebhookModels.cs # Webhook and general models
│ ├── Services/ # Business services
│ │ ├── MemoryStore.cs # In-memory caching and state
│ │ └── NgrokTunnel.cs # Development tunnel management
│ ├── Program.cs # Application entry point
│ ├── appsettings.json # Application configuration
│ └── WhatsAppChatBot.csproj # Project file
├──.env.example # Environment template
├── Dockerfile # Docker configuration
└── README.md

Tests

Das Projekt enthält eingebaute Health‑Checks und Validierungen:

API‑Verbindungstest

# Test the API endpoints
curl http://localhost:8080/

Webhook‑Test

# Simulate a webhook request
curl -X POST http://localhost:8080/webhook \
-H "Content-Type: application/json" \
-d '{
"event": "message:in:new", 
"data": {
"chat": {"id": "test", "fromNumber": "123", "type": "chat"}, 
"fromNumber": "123", 
"body": "Hello"
}
}'

Sende‑Nachricht‑Test

curl -X POST http://localhost:8080/message \
-H "Content-Type: application/json" \
-d '{
"phone": "1234567890", 
"message": "Test message", 
"device": "your-device-id"
}'

Entwicklung

Projektstruktur

Die Lösung folgt den Prinzipien der Clean Architecture:

  • Controllers: Verarbeiten HTTP‑Anfragen und ‑Antworten
  • Services: Geschäftslogik und Integration externer Dienste
  • Models: Data Transfer Objects und Domain‑Modelle
  • Configuration: Zentrale Konfigurationsverwaltung
  • Dependency Injection: Eingebaute .NET DI‑Container

Wichtige Klassen

  • ChatBot - Hauptlogik des Bots mit Nachrichtenfilterung und Routing
  • OpenAIClient - OpenAI API‑Integration mit Chat, Audio und Bildunterstützung
  • WassengerClient - Wassenger API‑Integration für WhatsApp‑Nachrichten
  • FunctionHandler - AI‑Function‑Calling‑System für externe Integrationen
  • WebhookController - HTTP‑Routing und Webhook‑Verarbeitung
  • BotConfig - Zentrale Konfigurationsverwaltung über Umgebungsvariablen
  • MemoryStore - In‑Memory‑Caching und Gesprächszustandsverwaltung
  • NgrokTunnel - Development‑Tunneling für lokale Tests

Ausführung in der Entwicklung

# Run with hot reload
dotnet watch run
# Run with specific environment
dotnet run --environment Development
# Run tests(if you add them)
dotnet test

NuGet‑Pakete hinzufügen

dotnet add package PackageName

Anpassung

Bot‑Anweisungen

Bearbeite das AI‑Verhalten in Config/BotConfig.cs:

private const string DefaultBotInstructions =
"You are a helpful assistant...";

Funktionsaufrufe

Füge benutzerdefinierte Funktionen in Bot/FunctionHandler.cs hinzu:

["getBusinessHours"] = new()
{
Name = "getBusinessHours", 
Description = "Get business operating hours", 
Parameters = new { type = "object", properties = new { } }, 
Handler = GetBusinessHours
}

Ratenlimits

Passe die Limits in Config/BotConfig.cs an:

public class LimitsConfig
{
public int MaxInputCharacters { get; set; } = 1000;
public int MaxOutputTokens { get; set; } = 1000;
public int ChatHistoryLimit { get; set; } = 20;
//...more limits
}

Neue API‑Integrationen hinzufügen

  1. Erstelle einen neuen Client im Api/‑Ordner
  2. Definiere Modelle in Models/
  3. Registriere ihn in Program.cs via Dependency Injection
  4. Nutze ihn im ChatBot oder erstelle neue Services

API‑Endpunkte

  • GET / - Bot‑Informationen und Status
  • POST /webhook - Webhook für eingehende WhatsApp‑Nachrichten
  • POST /message - Endpoint zum Senden von Nachrichten
  • GET /sample - Sendet eine Beispielnachricht
  • GET /files/{id} - Temporäre Dateidownloads

Swagger‑Dokumentation

Im Entwicklungsmodus besuchen:

Fehlerbehebung

Häufige Probleme

  1. „Keine aktiven WhatsApp‑Nummern“
  • Überprüfe deinen Wassenger API‑Schlüssel
  • Stelle sicher, dass du ein verbundenes WhatsApp‑Gerät in Wassenger hast
  1. „WhatsApp‑Nummer ist nicht online“
  • Stelle sicher, dass dein WhatsApp‑Gerät verbunden und online im Wassenger‑Dashboard ist
  1. Webhook empfängt keine Nachrichten
  • Prüfe, ob deine Webhook‑URL aus dem Internet erreichbar ist
  • Überprüfe Firewall‑Einstellungen
  • Prüfe die Logs auf Fehler bei der Webhook‑Registrierung
  1. OpenAI‑API‑Fehler
  • Überprüfe, ob dein OpenAI API‑Schlüssel gültig ist
  • Stelle sicher, dass der Modellname korrekt ist
  • Prüfe die Nutzung und Abrechnung deines OpenAI‑Kontos

Debug‑Modus

Aktiviere detailliertes Logging, indem du es in der .env setzt:

LOG_LEVEL=Debug

Oder in appsettings.Development.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug"
    }
  }
}

Häufige Umgebungsprobleme

  • Port bereits in Verwendung: Ändere PORT in der .env
  • Ngrok nicht gefunden: Installiere ngrok oder setze NGROK_PATH
  • .NET‑Version: Stelle sicher, dass das .NET 8.0 SDK installiert ist

Ressourcen

Mitwirken

  1. Forke das Repository
  2. Erstelle einen Feature‑Branch (git checkout -b feature/amazing-feature)
  3. Nimm deine Änderungen vor
  4. Füge Tests hinzu, falls anwendbar
  5. Committe deine Änderungen (git commit -m 'Add some amazing feature')
  6. Push auf den Branch (git push origin feature/amazing-feature)
  7. Öffne einen Pull Request

Entwicklungsrichtlinien

  • Folge den C#‑Coding‑Konventionen
  • Verwende async/await für alle I/O‑Operationen
  • Füge XML‑Dokumentation für öffentliche APIs hinzu
  • Inkludiere Unit‑Tests für neue Funktionalität
  • Aktualisiere das README für neue Features

Performance & Skalierbarkeit

Diese C#‑Implementierung bietet mehrere Vorteile:

  • Hohe Performance: .NET 8 Runtime‑Optimierungen und kompilierter Code
  • Speicher‑Effizienz: Korrekte Disposal‑Muster und Speicherverwaltung
  • Nebenläufige Verarbeitung: Async/await und Task‑basierte Verarbeitung
  • Skalierbar: Eingebaute Dependency Injection und Service‑Lifetime‑Verwaltung
  • Produktionsreif: Umfassendes Logging, Fehlerbehandlung und Health‑Checks

Sicherheitsfunktionen

  • Eingabevalidierung: Alle Webhook‑Eingaben werden validiert
  • Ratenbegrenzung: Eingebaute Nachrichtenquoten und Gesprächsbegrenzungen
  • Sichere Konfiguration: Verwaltung von Geheimnissen über Umgebungsvariablen
  • Fehlerbehandlung: Umfassende Exception‑Behandlung ohne Informationsleckage
  • HTTP‑Sicherheit: Moderne ASP.NET Core Sicherheits‑Defaults

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger.

Browse more

Tutorials, guides and case studies on running WhatsApp at team scale.

Ready for the official WhatsApp Business API?See what Meta charges — and keep your current number.
WhatsApp API pricing