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
- Funktionen
- Schnellstart
- Voraussetzungen
- Konfiguration
- APIâSchlĂŒssel einrichten
- BotâAnpassung
- Verwendung
- Lokale Entwicklung
- ProduktivâBereitstellung
- Bereitstellung
- Docker
- Render
- Heroku
- Railway
- Fly.io
- Azure App Service
- Architektur
- Tests
- Entwicklung
Schnellstart
- Repository klonen:
git clone https://github.com/wassengerhq/whatsapp-chatgpt-bot-csharp.git cd whatsapp-chatgpt-bot-csharp
- .NET 8 SDK installieren:
- Herunterladen von: https://dotnet.microsoft.com/download/dotnet/8.0
- Installation ĂŒberprĂŒfen:
dotnet --version - Umgebung konfigurieren:
cp.env.example.env # Edit.env file with your API keys(see Configuration section)
- Bot starten (lokaler Entwicklungsmodus):
cd src/WhatsAppChatBot dotnet run
Voraussetzungen
- .NET 9.0 SDK oder neuer
- WhatsApp persönliche oder BusinessâNummer
- Wassenger APIâKeyâââKostenlos registrieren
- OpenAI APIâKeyâââKostenlos registrieren
- Ngrok Account (fĂŒr lokale Entwicklung)âââKostenlos registrieren
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_KEYin 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_KEYin der.env
Ngrok Token (fĂŒr lokale Entwicklung):
- Registriere dich bei Ngrok (kostenlos)
- Hole dein AuthâToken aus dem Dashboard
- Kopiere es in
NGROK_TOKENin der.env
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 RoutingOpenAIClient- OpenAI APIâIntegration mit Chat, Audio und BildunterstĂŒtzungWassengerClient- Wassenger APIâIntegration fĂŒr WhatsAppâNachrichtenFunctionHandler- AIâFunctionâCallingâSystem fĂŒr externe IntegrationenWebhookController- HTTPâRouting und WebhookâVerarbeitungBotConfig- Zentrale Konfigurationsverwaltung ĂŒber UmgebungsvariablenMemoryStore- InâMemoryâCaching und GesprĂ€chszustandsverwaltungNgrokTunnel- 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
- Erstelle einen neuen Client im
Api/âOrdner - Definiere Modelle in
Models/ - Registriere ihn in
Program.csvia Dependency Injection - Nutze ihn im
ChatBotoder erstelle neue Services
APIâEndpunkte
GET /- BotâInformationen und StatusPOST /webhook- Webhook fĂŒr eingehende WhatsAppâNachrichtenPOST /message- Endpoint zum Senden von NachrichtenGET /sample- Sendet eine BeispielnachrichtGET /files/{id}- TemporĂ€re Dateidownloads
SwaggerâDokumentation
Im Entwicklungsmodus besuchen:
Fehlerbehebung
HĂ€ufige Probleme
- âKeine aktiven WhatsAppâNummernâ
- ĂberprĂŒfe deinen Wassenger APIâSchlĂŒssel
- Stelle sicher, dass du ein verbundenes WhatsAppâGerĂ€t in Wassenger hast
- âWhatsAppâNummer ist nicht onlineâ
- Stelle sicher, dass dein WhatsAppâGerĂ€t verbunden und online im WassengerâDashboard ist
- 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
- 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
PORTin der.env - Ngrok nicht gefunden: Installiere ngrok oder setze
NGROK_PATH - .NETâVersion: Stelle sicher, dass das .NET 8.0 SDK installiert ist
Ressourcen
- .NET Documentation
- ASP.NET Core Documentation
- Wassenger Documentation
- OpenAI API Documentation
- C# Language Reference
- GitHub Issues
Mitwirken
- Forke das Repository
- Erstelle einen FeatureâBranch (
git checkout -b feature/amazing-feature) - Nimm deine Ănderungen vor
- FĂŒge Tests hinzu, falls anwendbar
- Committe deine Ănderungen (
git commit -m 'Add some amazing feature') - Push auf den Branch (
git push origin feature/amazing-feature) - Ă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





