WADebug : outil de résolution des erreurs pour l’API WhatsApp Business

Version : 0.1.5

WADebug est un outil de ligne de commande qui facilite l’identification des problèmes potentiels liés à la configuration de l’API WhatsApp Business et l’optimisation des demandes d’aide auprès de l’assistance WhatsApp.

L’assistance de WADebug pour les différents types de configurations est indiquée ci-dessous. L’exécution de vérifications comprend des commandes qui effectuent différentes actions pour vérifier la configuration du client de l’API WhatsApp Business. La récupération des journaux est une commande permettant de récupérer tous les journaux de conteneurs.

Type de configurationExécution de vérificationsRécupération des journaux

Instance unique sur site

Prise en charge (instructions)

Prise en charge (instructions)

Haute disponibilité/Multiconnect sur site

Pas de prise en charge

Prise en charge (instructions)

AWS

Pas de prise en charge

Prise en charge (instructions)

Kubernetes

Pas de prise en charge

Pas de prise en charge

Sommaire du document :

Installer WADebug

WADebug est un outil de ligne de commande basé sur Python. Installez-le à l’aide de pip :

pip3 install wadebug

Pour effectuer la mise à niveau :

pip3 install wadebug --upgrade

Pour effectuer la désinstallation :

pip3 uninstall wadebug

Pour vérifier que WADebug est installé, vous pouvez exécuter :

wadebug --help

Exécution de vérifications

WADebug dispose d’un ensemble d’actions pour vérifier la configuration de l’API WhatsApp Business. Par défaut, la commande exécute toutes les actions disponibles. Si l’état problem ou l’état warning est renvoyé, la commande affiche la description, les détails et les méthodes d’atténuation possibles pour vous aider à résoudre les problèmes liés à votre configuration. Il vous est également rappelé comment importer les journaux dans Facebook si vous avez besoin d’aide.

Pour utiliser l’outil, exécutez la commande suivante à partir de la machine hébergeant les conteneurs dockers de l’API WhatsApp Business :

wadebug

Si une action génère wadebug_error, cela indique qu’il y a eu un problème avec l’outil lui-même. Dans ce cas, signalez le bug via l’Assistance directe.



Fichier de configuration

Un fichier de configuration (wadebug.conf.yml) doit se trouver dans le répertoire courant pour que WADebug puisse exécuter des vérifications complètes.

Lorsque vous exécutez wadebug sans le fichier de configuration, l’outil vous demande de créer un fichier squelette pour que vous puissiez remplir les valeurs de configuration. Si aucun fichier de configuration n’existe ou si aucune valeur de configuration n’est définie, certaines actions sont ignorées par manque d’informations.

Exemple de fichier de configuration :

  
    # 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"
  

Liste des actions possibles

Pour vérifier les actions disponibles, exécutez la commande suivante :

wadebug ls

Exécution partielle

Pour exécuter uniquement un sous-ensemble d’actions disponibles, saisissez cette commande :

wadebug partial check_software_version check_mysql_version

Mode JSON

wadebug offre deux modes : le mode interactif et le mode JSON.

Le mode interactif est le mode par défaut. Lorsqu’il est activé, les tableaux de résultats et les avis s’affichent à l’écran, vous êtes invité à créer un fichier de configuration, etc.
Le mode JSON est utile lorsque vous souhaitez intégrer wadebug dans un pipeline d’automatisation afin de valider la configuration de l’API WhatsApp Business régulièrement ou chaque fois que vous mettez à niveau la version de l’API WhatsApp Business, par exemple.

Pour exécuter wadebug en mode JSON, transmettez l’indicateur --json à toute commande wadebug disponible :

wadebug --json

Une réponse JSON valide est alors envoyée :

{
   "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"
   }
}    
    

Collecte des données d’utilisation et désactivation

Chaque fois que wadebug s’exécute, les données d’utilisation (notamment les actions exécutées et les résultats renvoyés) sont envoyées à Facebook dans le but d’améliorer l’outil et d’accélérer le processus d’assistance WhatsApp via l’Assistance directe.

Si vous ne voulez pas partager les données d’utilisation avec Facebook lorsque vous utilisez l’outil, exécutez wadebug avec l’indicateur --do-not-send-usage

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

Gardez à l’esprit que même si vous bénéficiez toujours des résultats de dépannage localement, la qualité de vos interactions avec notre service d’assistance risque d’être amoindrie.

Récupération des journaux

wadebug est utile pour récupérer tous les journaux de conteneurs et les envoyer éventuellement à Facebook afin de faciliter les investigations de notre équipe d’assistance.

Récupération des journaux les plus récents

Pour récupérer les journaux les plus récents sous wadebug_logs/ dans le répertoire courant :

wadebug logs

Modifications importantes :

  • v0.1.4 et versions antérieures : la commande wadebug logs récupère les 10 000 dernières lignes de journaux de chaque conteneur
  • v0.1.5 et versions ultérieures : la commande wadebug logs récupère les 3 dernières heures de journaux de chaque conteneur

Récupération des journaux à partir d’une date et d’une heure précises

[Nouveau à partir de v0.1.5] Pour récupérer 3 heures de journaux à partir d’une date et d’une heure précises (fuseau horaire GMT), utilisez l’option --since. Par exemple, la commande suivante récupère les journaux du 07/01/2020 3:00:02 GMT au 07/01/2020 6:00:02 GMT :

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

Envoi des journaux

Pour envoyer les journaux à Facebook, vous devez ajouter l’indicateur --send. La réponse de la commande comporte un run_id que vous pouvez transmettre à l’Assistance directe pour accélérer les investigations :

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

Récupération des journaux à partir d’une configuration Haute disponibilité/Multiconnect

En mode Haute disponibilité/Multiconnect, dans lequel les conteneurs sont installés sur un ou plusieurs hôtes, vous devez vous connecter à chaque hôte, installer WADebug et exécuter la commande wadebug logs ci-dessus.

Demander de l’aide

Si vous avez besoin d’aide pour résoudre les erreurs liées à la configuration de l’API WhatsApp Business, ouvrez un ticket auprès de l’Assistance directe en indiquant le run_id obtenu à l’issue de l’exécution de wadebug. Cela nous permet de consulter un rapport sur les actions exécutées et leurs résultats respectifs.

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
  	

Les journaux de conteneurs sont très utiles pour résoudre les erreurs. Pour récupérer et envoyer des journaux de conteneurs à Facebook, exécutez wadebug logs avec l’indicateur --send.

wadebug logs --send

Fournissez ensuite le run_id renvoyé.

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

Changelog

15 janvier 2020 (0.1.5)

  • Fin de la prise en charge de Python 2 🎉
  • wadebug logs récupère désormais les 3 dernières heures de journaux au lieu des 10 000 dernières lignes
  • Ajout de l’option --since à wadebug logs qui récupère 3 heures de journaux à partir de la valeur d’horodatage spécifiée
  • [Correctif] Échec rapide en mode JSON lorsque des paramètres incompatibles sont utilisés

3 septembre 2019 (v0.1.4)

  • Nouvelle interface d’utilisation plus claire pour WADebug
  • [Correctif] Impression du port correct en cas d’erreur lors d’une connexion avec l’action check_network
  • [Correctif] Ajout des droits MySQL requis manquants dans l’action check_mysql_permissions

26 avril 2019 (v0.1.3)

  • Ajout de nouveaux éléments au fichier de configuration requis par les nouvelles actions
  • Ajout de contrôles d’état des webhooks
  • Ajout de l’invite de mise à niveau de WADebug lorsqu’une nouvelle version est disponible sur PyPi
  • Ajout de la réponse du point de terminaison d’assistance aux journaux importés pour faciliter la résolution des erreurs
  • Les journaux de plantage de WADebug sont désormais importés dans Facebook

28 décembre 2018 (v0.1.2)

  • Récupération de la taille limite des journaux
  • Capture des journaux de vidage de coreapp en cas de plantage
  • Ajout d’une nouvelle commande pour récupérer les journaux sans importation
  • Ajout d’enum34 en tant que module requis pour < Python 3.4

23 octobre 2018 (v0.1.1)

  • Publication initiale