In diesem Dokument wird gezeigt, wie du eine Einzelinstanz des WhatsApp Business API-Client in einer Produktionsumgebung einrichtest.
Wenn du dies noch nicht getan hast, empfehlen wir dir, eine Einzelinstanz des WhatsApp Business API-Client auf einem Entwicklercomputer einzurichten und dich dabei an die Anweisungen Entwickler-Setup: Einzelinstanz zu halten. So kannst du das Setup testen, bevor du dieses Dokument zur Einrichtung des WhatsApp Business API-Client in der Produktion befolgst.
Prüfe zum Abschluss deiner Ersteinrichtung unsere Anforderungen und befolge diese Schritte:
biz
-Verzeichnis für die Setup-Skripts erstellenWA_API_VERSION
festlegenNachdem das Setup deiner Instanz vollständig abgeschlossen ist, kannst du die Instanz upgraden. Mit diesen Schritten kannst du den Client deinstallieren.
Wenn du bereits ein Entwickler-Setup ausgeführt hast und in der Produktionsumgebung dieselbe Telefonnummer verwenden möchtest, lies bitte den Migrationsleitfaden, bevor du mit den Schritten in diesem Dokument fortfährst.
Der Inhalt dieses Dokuments basiert auf der Annahme einer Neuinstallation mit einer neuen Telefonnummer.
Voraussetzungen:
Entweder MySQL 5.7.xx oder PostgreSQL 13.x/12.x/11.x ist erforderlich.
Dein Datenbankpasswort sollte keines der folgenden Zeichen enthalten: ?{}&~!()^=
Andernfalls wird das Setup wahrscheinlich fehlschlagen.
Es besteht zudem ein bekanntes Kompatibilitätsproblem mit MySQL 8. Von der Verwendung der neusten Version wird abgeraten; wir arbeiten aktiv an der Behebung des Problems.
To install Docker Desktop on your developer machine:
The remaining steps are based on macOS and should be very similar for Linux or Windows 10.
To install Docker using macOS:
Docker Compose is a plugin that is bundled with Docker Desktop and should have installed automatically. For more information about using or Docker Compose, see Overview of Docker Compose. If for some reason Docker Compose was not installed, you can install it by following the instructions located at Install Docker Compose.
biz
-Verzeichnis für die Setup-Skripts erstellenFühre den folgenden Code an deinem bevorzugten Speicherort für den WhatsApp Business API-Client aus:
mkdir ~/biz; cd ~/biz;
Klone die Konfigurationsdateien prod-docker-compose.yml
und db.env
aus dem Verzeichnis Installation im GitHub-Repository WhatsApp-Business-API-Setup-Scripts in das ~/biz
-Verzeichnis, das du in Schritt 1 erstellt hast.
WA_API_VERSION
-Umgebungsvariable festlegenDie WA_API_VERSION
-Umgebungsvariable sollte auf die aktuelle Version festgelegt werden. Verwende hierfür:
export WA_API_VERSION=current-whatsapp-version
Ändere die Datenbankumgebungsvariablen in der Datei db.env
unter dem Verzeichnis ~/biz
entsprechend deiner MySQL/PostgreSQL-Konfiguration.
WA_DB_ENGINE=MYSQL | PGSQL WA_DB_HOSTNAME=your-database-server WA_DB_PORT=your-database-server-port WA_DB_USERNAME=your-database-username WA_DB_PASSWORD=your-database-password
Das lolale Medienvolume (standardmäßig whatsappMedia:/usr/local/wamedia
), das in der Datei prod-docker-compose.yml
definiert ist, wird zum Speichern von Mediendateien verwendet. Das Volume ist standardmäßig in einem Verzeichnis des Docker-Computers gemountet. Du kannst das Medienvolume auch in einem Host-Verzeichnis mounten. Um den Mount-Punkt des Medienvolume zu ändern, ändere die Volumedefinition im Bereich services
von whatsappMedia
in den Pfad des Hostverzeichnisses, das du verwendest.
services: wacore: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ... waweb: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ...
Führe zum Starten des WhatsApp Business API-Client mit einem Webapp-Container und einem Coreapp-Container Folgendes aus:
docker-compose -f prod-docker-compose.yml up -d
Die Ausgabe sollte in etwa wie folgt aussehen:
Creating biz_wacore_1 ... done Creating biz_waweb_1 ... done
Du kannst prüfen, ob alle Container den Status UP aufweisen. Führe hierzu Folgendes aus:
docker-compose -f prod-docker-compose.yml ps
Die Ausgabe sollte in etwa wie folgt aussehen:
Name Command State Ports ------------------------------------------------------------------------------------------------- biz_wacore_1 /opt/whatsapp/bin/wait_on_ ... Up 6250/tcp, 6251/tcp, 6252/tcp, 6253/tcp biz_waweb_1 /opt/whatsapp/bin/wait_on_ ... Up 0.0.0.0:9090->443/tcp
Standardmäßig wird der Webapp-Container auf Port 9090
ausgeführt.
Du kannst unsere Postman-Sammlung herunterladen und konfigurieren, um mit der WhatsApp Business API zu interagieren, wenn du die Befehlszeile nicht verwenden möchtest.
Du kannst auf dem WhatsApp Business API-Client eine Systemdiagnose durchführen. Führe dazu einen API-Aufruf an den Node health
durch.
Die Ausgabe sollte in etwa wie folgt aussehen:
{ "health": { "gateway_status": "unregistered" } }
Die Antwort zeigt als gateway_status
gateway_status
unregistered
an, da der WhatsApp Business API-Client noch nicht registriert wurde.
Du kannst den WhatsApp Business API-Client über einen API-Aufruf an den Node account
registrieren.
Führe auf dem WhatsApp Business API-Client eine zweite Systemdiagnose durch. Führe dazu nach Abschluss der Registrierung einen API-Aufruf an den Node health
durch.
Die Ausgabe sollte in etwa wie folgt aussehen:
{ "health": { "gateway_status": "connected" } }
Der gateway_status
connected
gibt an, dass der Coreapp-Container eine Verbindung zum WhatsApp-Server herstellen kann, um Kontakte zu prüfen und Nachrichten zu senden.
Wir empfehlen dir, Überwachung für deinen Produktions-WhatsApp Business API-Client einzurichten.
Während des Upgrade-Prozesses musst du mit Ausfallzeiten rechnen.
Es wird dringend empfohlen, vor dem Upgrade eine Sicherung der aktuellen Anwendungseinstellungen durchzuführen, damit die Anwendung anschließend schnell wieder einsatzbereit ist. Beachte dabei die Dokumentation zu Sicherung und Wiederherstellung.
Es ist grundsätzlich ratsam, Aktualisierungen zu Zeiten mit geringer Aktivität durchzuführen.
WA_API_VERSION
-Umgebungsvariable in die neue Version ändernDie WA_API_VERSION
-Umgebungsvariable sollte auf die neue Version geändert werden. Verwende hierfür:
export WA_API_VERSION=new-whatsapp-version
Starte die Docker-Container neu, indem du folgenden Code ausführst:
docker-compose -f prod-docker-compose.yml up -d
v2.23.x
und höher durchführensteht dir nun ein Datenbankaktualisierungsdienst zur Verfügung, mit dem du deine Datenbank bei ausgeführter Anwendung aktualisieren kannst, um Ausfallzeiten zu vermeiden.
Die Datei dbupgrade-compose.yml beinhaltet Felder mit Angaben zur Containerversion.
Beispiel:
services: dbupgrade: image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}
Führe zur Aktualisierung einer Installation den Container „dbupgrade-service“ aus, während für die WA_API_VERSION
-Umgebungsvariable die aktuellste Version angegeben ist:
WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d
Hinweis: Wenn du mit einer Orchestrierung arbeitest, mit welcher der Container beim Beenden unabhängig vom Exit-Code neu gestartet wird, solltest du die Umgebungsvariable EXIT_ON_SUCCESS
auf FALSE
setzen, wenn du den Dienst startest. So vermeidest du, dass der Container beendet wird, wenn der Exit-Code 0
lautet.
Verläuft die Datenbankaktualisierung erfolgreich, wird der Container mit dem Code 0
beendet. Du kannst mit dem folgenden Docker-Befehl den Status nachverfolgen:
docker wait your-database-upgrade-container-name
Hiermit wird der Exit-Code des dbupgrade-service-Containers ausgegeben.
Starte die Coreapp- und Webapp-Docker-Container neu, während für die Umgebungsvariable WA_API_VERSION
die aktuellste Version angegeben ist:
WA_API_VERSION=new-whatsapp-version docker-compose -f prod-docker-compose.yml up -d
2.29.3
und höher durchführenWenn du ein Upgrade von v2.29.1
, v2.29.2
durchführst oder beim Upgrade auf diese Versionen Probleme aufgetreten sind und du aus Stabiliätsgründen ein Rollback durchführen musstest, empfehlen wir dir ein Upgrade auf v2.29.3
durchzuführen und dann auf dem Webapp-Docker-Container den folgenden Befehl ausführen:
chown -R root your-media-directory/incoming your-media-directory/outgoing your-media-directory/shared
Sofern du das standardmäßige Medienverzeichnis nicht geändert hast, lautet dieses /usr/local/wamedia
.
Hinweis:
v2.29.1
und v2.29.2
.Es wird dringend empfohlen, vor der Deinstallation eine Sicherung der aktuellen Anwendungseinstellungen durchzuführen. Beachte dabei die Dokumentation zu Sicherung und Wiederherstellung.
Wenn du deine Entwicklungsumgebung durch Entfernung aller Container zurücksetzen musst, führe den folgenden Befehl über das Verzeichnis aus, das die Datei docker-compose.yml
enthält:
docker-compose -f prod-docker-compose.yml down
Die Ausgabe sollte in etwa wie folgt aussehen:
Stopping biz_waweb_1 ... done Stopping biz_wacore_1 ... done Removing biz_waweb_1 ... done Removing biz_wacore_1 ... done
Um zusätzlich zu den Containern alle in der Datei docker-compose.yml
definierten Volumes zu entfernen, führe den Befehl down
mit dem Parameter -v
aus:
docker-compose -f prod-docker-compose.yml down -v
Wir empfehlen WADebug für eine effektivere Fehlerbehebung. WADebug ist ein Befehlszeilen-Tool, das dich bei der Suche nach potenziellen Problemen im Zusammenhang mit dem WhatsApp Business API-Setup unterstützt und es dem WhatsApp-Support erleichtert, dir zu helfen.
Für den Fall, dass WADebug nicht verwendet werden kann oder bei Ausführung des Tools Fehler ausgegeben werden, führe zur Sammlung von Protokollen aus allen Containern den folgenden Befehl aus:
docker-compose -f prod-docker-compose.yml logs > debug_output.txt
Hänge zum Sammeln von Protokollen eines bestimmten Dienstes den Dienstnamen (waweb
oder wacore
) an den docker-compose logs
-Befehl an:
docker-compose -f prod-docker-compose.yml logs waweb > debug_output.txt
Du findest die Protokolle in der debug_output.txt
-Datei im aktuellen Verzeichnis.
Diese Software verwendet Code von FFmpeg, der unter der LGPLv2.1 lizenziert ist. Die dazugehörige Quelle kann hier heruntergeladen werden.