WADebug: Fehlerbehebungstool für WhatsApp Business API

Aktuelle Version: 0.1.5

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.

Unten ist dargestellt, welche verschiedenen Arten von Setups von WADebug unterstützt werden. Durchführen von Prüfungen bezieht sich auf die verschiedenen Aktionen zur Verifizierung des Setups des WhatsApp Business API-Clients. Abrufen von Protokollen bezieht sich auf den Befehl, alle Containerprotokolle abzurufen.

Art von SetupDurchführen von PrüfungenAbrufen von Protokollen

Einzelne Instanz vor Ort

Unterstützt (Anleitung)

Unterstützt (Anleitung)

Hochverfügbarkeit/MultiConnect vor Ort

Nicht unterstützt

Unterstützt (Anleitung)

AWS

Nicht unterstützt

Unterstützt (Anleitung)

Kubernetes

Nicht unterstützt

Nicht unterstützt

In diesem Dokument werden folgende Themen behandelt:

Installieren von WADebug

WADebug ist ein in Python geschriebenes Befehlszeilen-Tool. Installiere die Software mit pip:

pip3 install wadebug

Upgrade:

pip3 install wadebug --upgrade

Deinstallation:

pip3 uninstall wadebug

Mit dem folgenden Befehl kannst du überprüfen, ob wadebug installiert ist:

wadebug --help

Durchführen von Prüfungen

WADebug bietet verschiedene Aktionen an, mit denen du deine Einrichtung der WhatsApp Business API überprüfen kannst. Standardmäßig werden alle verfügbaren Aktionen ausgeführt. Wenn der Status problem oder warning zurückgegeben wird, werden eine Beschreibung, Details und mögliche Abhilfemaßnahmen angezeigt, um dir die Fehlerbehebung deines Setups zu erleichtern. Außerdem wird eine Anleitung für den Upload der Protokolle zu Facebook angezeigt, falls du Hilfe brauchst.

Führe den folgenden Befehl auf dem Computer auf, der die Docker-Container für die WhatsApp Business API hostet, um das Tool zu verwenden:

wadebug

Wenn eine Aktion zu wadebug_error führt, bedeutet das, dass ein Problem mit dem Tool selbst vorliegt. Sollte ein solches Problem auftreten, melde diesen Bug bitte über Direct Support.



Konfigurationsdatei

Damit WADebug alle Prüfungen durchführt, muss sich im aktuellen Verzeichnis eine Konfigurationsdatei (wadebug.conf.yml) befinden.

Wird wadebug ohne die Konfigurationsdatei ausgeführt, bietet dir das Tool an, ein Skelett der Datei für dich zu erstellen, in dem du die Konfigurationswerte eintragen kannst. Wenn keine Konfigurationsdatei gefunden wird oder keine Konfigurationswerte festgelegt sind, werden bestimmte Aktionen aus Mangel an Informationen übersprungen.

Beispiel für eine Konfigurationsdatei:

  
    # configurations related to the MySQL database
    db:
      # hostname of the MySQL database
      host: # for example, "0.0.0.0"
      # host port that the MySQL database uses
      # to connect to database container created by docker-compose scripts, use 33060
      port: # for example, 33060
      # username to connect to the MySQL database
      user: # for example, "root"
      # password of the username that is used to connect to the MySQL database
      password: # for example, "your_database_password"

    # configurations related to WhatsApp Business API
    webapp:
      # url accessible from the host running wadebug
      baseUrl: # https://localhost:9090
      # WhatsApp Business API user account credentials to call Support API
      user: # for example, "wadebug"
      # WhatsApp Business API user account credentials to call Support API
      password: # for example, "secretdebugger"
  

Auflisten möglicher Aktionen

Mit dem folgenden Befehl kannst du die verfügbaren Aktionen überprüfen:

wadebug ls

Teilweise Ausführung

Mit diesem Befehl kannst du eine Teilmenge der verfügbaren Aktionen ausführen:

wadebug partial check_software_version check_mysql_version

JSON-Modus

wadebug bietet zwei Modi: den interaktiven Modus und den JSON-Modus.

Der interaktive Modus ist der Standardmodus. In diesem Modus werden grafische Tabellen mit Ergebnissen und Hinweisen angezeigt, du wirst zur Erstellung der Konfigurationsdatei aufgefordert, usw.
Der JSON-Modus ist hilfreich, wenn du wadebug in eine Automatisierungs-Pipeline integrieren möchtest, um deine Einrichtung der WhatsApp Business API regelmäßig oder z. B. bei jedem Versionsupgrade zu überprüfen.

Um wadebug im JSON-Modus auszuführen, kannst du das Flag --json an jeden beliebigen wadebug-Befehl anfügen:

wadebug --json

Daraufhin wird eine gültige JSON-Antwort zurückgegeben:

{
   "containers_status":{
      "class":"CheckContainersAreUp",
      "user_facing_name":"containers_status",
      "result":"OK"
   },
   "check_mysql_connection":{
      "class":"CheckMySQLConnection",
      "user_facing_name":"check_mysql_connection",
      "result":"OK"
   },
   "check_software_version":{
      "class":"CheckSoftwareVersion",
      "user_facing_name":"check_software_version",
      "result":"OK"
   },
   "check_mysql_version":{
      "class":"CheckMySQLVersion",
      "user_facing_name":"check_mysql_version",
      "result":"OK"
   },
   "check_network":{
      "class":"CheckNetworkAction",
      "user_facing_name":"check_network",
      "result":"OK"
   },
   "check_mysql_permissions":{
      "class":"CheckMySQLPermissions",
      "user_facing_name":"check_mysql_permissions",
      "result":"OK"
   },
   "check_mysql_password":{
      "class":"CheckMySQLPassword",
      "user_facing_name":"check_mysql_password",
      "result":"OK"
   },
   "check_db_settings_exist":{
      "class":"CheckDbSettingsExist",
      "user_facing_name":"check_db_settings_exist",
      "result":"OK"
   },
   "check_webapp_port":{
      "class":"CheckWebappPortAction",
      "user_facing_name":"check_webapp_port",
      "result":"OK"
   }
}    
    

Erfassung von Nutzungsdaten und Opt-Out

Bei jeder Ausführung von wadebug werden Nutzungsdaten (inklusive ausgeführter Aktionen und zurückgegebener Ergebnisse) an Facebook übertragen, um das Tool zu verbessern und den WhatsApp-Supportprozess über Direct Support zu beschleunigen.

Falls du keine Nutzungsdaten mit Facebook teilen möchtest, kannst du wadebug mit dem Flag --do-not-send-usage ausführen.

wadebug partial check_network --do-not-send-usage

Dabei werden zwar die Problembehebungsergebnisse weiterhin lokal angezeigt, aber dein Erlebnis bei der Interaktion mit unserem Support kann beeinträchtigt werden.

Abrufen von Protokollen

wadebug bietet eine praktische Funktion, um alle Containerprotokolle abzurufen und optional an Facebook zu übermitteln, um die Untersuchungen unseres Supportteams zu unterstützen.

Abrufen der neuesten Protokolle

So kannst du die neuesten Protokolle abrufen und unter wadebug_logs/ im aktuellen Verzeichnis speichern:

wadebug logs

Wichtige Änderungen:

  • Bis Version 0.1.4: Der Befehl wadebug logs ruft von jedem Container die letzten 10.000 Protokollzeilen ab.
  • Ab Version v0.1.5: Der Befehl wadebug logs ruft von jedem Container die letzten drei Protokollstunden ab.

Abrufen von Protokollen ab einem bestimmten Datum-/Uhrzeitwert

[Neu seit Version 0.1.5] Um 3 Protokollstunden ab einem bestimmten Datum-/Uhrzeitwert (Zeitzone GMT) abzurufen, verwende die Option --since. Beispiel: Mit dem folgenden Befehl werden Protokolle von 2020-01-07 3:00:02 GMT bis 2020-01-07 6:00:02 GMT abgerufen:

wadebug logs --since='2020-01-07 3:00:02'

Senden von Protokollen

Um Protokolle an Facebook zu senden, musst du das Flag --send anhängen. Als Teil der Antwort erhältst du eine run_id, die du in Direct Support angeben kannst, um Untersuchungen zu beschleunigen:

wadebug logs --send
wadebug logs --since='2020-01-07 3:00:02' --send

Abrufen von Protokollen aus einem Setup mit Hochverfügbarkeit und Multiconnect

Beim Hochverfügbarkeits-/Multiconnect-Modus, bei dem Container auf einem oder mehreren Hosts installiert werden, musst du dich bei jedem Host anmelden, WADebug installieren und die oben angegebenen wadebug logs-Befehle ausführen.

Hilfe anfordern

Wenn du Hilfe bei der Fehlerbehebung des WhatsApp Business API-Setup benötigst, öffne ein Direct Support-Ticket mit der run_id, die nach der Ausführung von wadebug zurückgegeben wird. Auf diese Weise erhalten wir Informationen zu den ausgeführten Aktionen und den entsprechenden Ergebnissen.

A report of this run has been uploaded to Facebook.  You can reference run_id (A5jedVKsdI_ZojRwL1_-MOd) in Direct Support (https://business.facebook.com/direct-support) tickets
  	

Containerprotokolle sind sehr nützlich für die Fehlerbehebung, um Containerprotokolle zu erfassen und an Facebook zu senden. Führe wadebug logs mit dem Flag --send aus.

wadebug logs --send

und gib die zurückgegebene run_id an

Container logs have been uploaded to Facebook.  You can reference run_id (AcClyxkRJk3w1dEr8OAmsTn) in Direct Support (https://business.facebook.com/direct-support) tickets
  	

Änderungsprotokoll

15. Januar 2020 (0.1.5)

  • Support für Python 2 eingestellt 🎉
  • wadebug logs ruft jetzt die Protokolle der letzten 3 Stunden anstatt die letzten 10.000 Protokollzeilen ab
  • Option --since zu wadebug logs hinzugefügt, die 3 Protokollstunden abruft, beginnend mit dem angegebenen Datum-/Uhrzeitwert
  • [Fehlerkorrektur] Fehler in JSON-Modus wird schnell ausgelöst, wenn inkompatible Parameter verwendet werden

3. September 2019 (Version 0.1.4)

  • Eine neue und übersichtlichere UI für WADebug
  • [Fehlerkorrektur] Drucken des falschen Ports korrigiert, wenn in der Aktion check_network ein Fehler beim Verbinden auftritt
  • [Fehlerkorrektur] Fehlende MySQL-Rechteanforderungen in Aktion check_mysql_permissions hinzugefügt

26. April 2019 (Version 0.1.3)

  • Neue Elemente zur Konfigurationsdatei hinzugefügt, die für neue Aktionen erforderlich sind
  • Webhook-Systemdiagnosen hinzugefügt
  • WADebug-Upgradeaufforderung hinzugefügt, wenn eine neue Version auf PyPi verfügbar ist
  • Support-Endpunkt-Antwort zu hochgeladenen Protokollen hinzugefügt, um die Fehlerbehebung zu erleichtern
  • WADebug-Absturzprotokolle werden jetzt auf Facebook hochgeladen

28. Dez. 2018 (Version 0.1.2)

  • Beschränkung der Größe der hochgeladenen Protokolle
  • Erfassung von Core Dumps der Coreapp bei einem Absturz
  • Neuen Befehl hinzugefügt, um Protokolle ohne Upload abzurufen
  • enum34 als erforderliches Modul für < Python 3.4 hinzugefügt

23. Oktober 2018 (Version 0.1.1)

  • Erste Version