WADebug: ferramenta de solução de problemas da WhatsApp Business API

Versão atual: 0.1.5

A WADebug é uma ferramenta de linha de comando que ajuda a encontrar possíveis problemas na configuração da WhatsApp Business API e a aumentar a eficiência dos pedidos de ajuda ao suporte do WhatsApp.

Confira abaixo a compatibilidade da WADebug com diferentes tipos de configurações. Executar verificações se refere a comandos que iniciam diversas ações para verificar a configuração do cliente da WhatsApp Business API. Recuperar registros se refere ao comando para obter todos os registros de contêiner.

Tipo de configuraçãoExecutar verificaçõesRecuperar registros

Instância única no local

Compatível (instruções)

Compatível (instruções)

Multiconexão/alta disponibilidade no local

Não compatível

Compatível (instruções)

AWS

Não compatível

Compatível (instruções)

Kubernetes

Não compatível

Não compatível

Este documento abrange o seguinte:

Instalar a WADebug

A WADebug é uma ferramenta de linha de comando escrita em Python. Instale a ferramenta usando "pip":

pip3 install wadebug

Para atualizar:

pip3 install wadebug --upgrade

Para desinstalar:

pip3 uninstall wadebug

Para confirmar se a WADebug está instalada, execute:

wadebug --help

Executar verificações

A WADebug tem um conjunto de ações para verificar a configuração da WhatsApp Business API. Por padrão, ela executa todas as ações disponíveis. Se for retornado um status problem ou warning, a descrição, os detalhes e os possíveis métodos de mitigação serão exibidos para ajudar você com a solução de problemas de configuração. Você também verá um lembrete sobre como carregar registros no Facebook caso precise de ajuda.

Para usar a ferramenta, execute o seguinte comando na máquina que hospeda os contêineres do docker da WhatsApp Business API:

wadebug

Se uma ação resultar em wadebug_error, isso indica que houve um problema com a ferramenta em si. Caso você encontre esse tipo de problema, relate o erro via Suporte Direto.



Arquivo de configuração

A WADebug requer um arquivo de configuração (wadebug.conf.yml) no diretório atual para executar verificações completas.

Ao executar wadebug sem o arquivo de configuração, a ferramenta exibirá um comando interativo para que você crie um arquivo-esqueleto e o preencha com os valores de configuração. Caso nenhum arquivo seja encontrado ou nenhum valor de configuração seja definido, algumas ações serão ignoradas devido à falta de informações.

Exemplo de arquivo de configuração:

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

Como listar as ações possíveis

Para verificar as ações disponíveis, execute o comando a seguir:

wadebug ls

Execução parcial

Digite o comando a seguir para executar somente um subconjunto das ações disponíveis:

wadebug partial check_software_version check_mysql_version

Modo JSON

A wadebug conta com dois modos: interativo e JSON.

O modo interativo é o padrão. Quando ele for usado, serão apresentadas tabelas de visualização de resultados e avisos, um comando interativo para criar o arquivo de configuração etc.
O modo JSON é útil para integrar a wadebug a um fluxo de automação, de modo a validar a configuração da WhatsApp Business API de forma periódica ou toda vez que sua versão da API for atualizada, por exemplo.

Para executar wadebug no modo JSON, inclua a sinalização --json em qualquer comando wadebug disponível:

wadebug --json

Uma resposta JSON válida será retornada:

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

Coleta de dados de uso e recusa

Toda vez que wadebug for executada, os dados de uso (incluindo as ações executadas e os resultados retornados) serão enviados ao Facebook para ajudar a melhorar a ferramenta, além de acelerar o processo de suporte do WhatsApp via Suporte Direto.

Se não quiser compartilhar dados de uso com o Facebook durante a utilização da ferramenta, execute wadebug com a sinalização --do-not-send-usage.

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

Lembre-se de que, apesar de continuar a ver os resultados da solução de problemas de forma local, sua experiência com nosso suporte poderá ser prejudicada.

Recuperar registros

A wadebug oferece uma maneira conveniente de recuperar todos os registros de contêiner e, opcionalmente, enviá-los ao Facebook para auxiliar as investigações de nossa equipe de suporte.

Recuperar registros mais recentes

Para recuperar os registros mais recentes em wadebug_logs/ no diretório atual:

wadebug logs

Alterações importantes

  • Versão 0.1.4 e inferiores: o comando wadebug logs recupera as últimas 10 mil linhas de registros de cada contêiner.
  • Versão 0.1.5 e superiores: o comando wadebug logs recupera as últimas 3 horas de registros de cada contêiner.

Recuperar registros a partir de determinada data e hora

[Novidade a partir da v0.1.5] Para recuperar 3 horas de registros a partir de uma data e hora específica (fuso horário GMT), use a opção --since. Por exemplo, o comando a seguir recuperará os registros de 2020-01-07 3:00:02 GMT a 2020-01-07 6:00:02 GMT:

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

Enviar registros

Para enviar registros ao Facebook, inclua a sinalização --send. Como parte da resposta, você receberá um run_id que pode ser mencionado no Suporte Direto para agilizar as investigações.

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

Como recuperar registros da configuração de alta disponibilidade/multiconexão

No modo de alta disponibilidade/multiconexão, em que os contêineres são instalados em um host ou mais, será necessário acessar cada host, instalar a WADebug e executar os comandos wadebug logs mencionados acima.

Solicitar ajuda

Para obter ajuda com a solução de problemas da configuração da WhatsApp Business API, abra um tíquete do Suporte Direto com o run_id que foi retornado após a execução de wadebug. Assim, podemos ver um relatório das ações executadas e os resultados correspondentes.

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
  	

Os registros de contêiner são extremamente úteis para a solução de problemas. Execute wadebug logs com a sinalização --send para coletar e enviar os registros ao Facebook.

wadebug logs --send

Além disso, forneça o run_id retornado.

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

Registro de alterações

15 de janeiro de 2020 (0.1.5)

  • Torna obsoleta a compatibilidade com Python 2🎉.
  • wadebug logs agora recupera 3 horas de registros, e não as últimas 10 mil linhas.
  • Adiciona a opção --since a wadebug logs, que recupera 3 horas de registros a partir da data e hora especificada.
  • [Correção de erro] Fail fast no modo JSON caso parâmetros incompatíveis sejam usados.

3 de setembro de 2019 (v0.1.4)

  • Interface do usuário nova e simplificada para a WADebug.
  • [Correção de erro] Corrige a porta incorreta impressa quando houver um erro de conexão na ação check_network.
  • [Correção de erro] Adiciona requisitos de privilégio de MySQL ausentes à ação check_mysql_permissions.

26 de abril de 2019 (v0.1.3)

  • Adiciona itens novos de arquivo de configuração necessários para novas ações.
  • Adiciona verificações de integridade de webhooks.
  • Adiciona prompt de atualização da WADebug quando uma nova versão estiver disponível em PyPi.
  • Adiciona resposta de ponto de extremidade de suporte aos registros atualizados para facilitar a solução de problemas.
  • Os registros de falha da WADebug agora são carregados no Facebook.

28 de dezembro de 2018 (v0.1.2)

  • Limita o tamanho dos registros recuperados.
  • Coleta coredumps do coreapp em caso de falha.
  • Adiciona um novo comando para recuperar os registros sem necessidade de carregamento.
  • Adiciona enum34 como módulo obrigatório para versões anteriores a Python 3.4.

23 de outubro de 2018 (v0.1.1)

  • Versão inicial