WADebug: инструмент отладки для WhatsApp Business API

Текущая версия: 0.1.5

WADebug — это инструмент командной строки для поиска потенциальных проблем настройки WhatsApp Business API, который также упрощает работу со службой поддержки WhatsApp.

Ниже перечислены различные конфигурации, которые поддерживает WADebug. К категории Выполнение проверок относятся команды, которые позволяют подтвердить правильность настройки клиента WhatsApp Business API. К категории Получение журналов относятся команды, которые позволяют получать журналы контейнеров.

КонфигурацияВыполнение проверокПолучение журналов

Локальный отдельный экземпляр

Поддерживается (см. инструкции)

Поддерживается (см. инструкции)

Локальный режим повышенной доступности /распределения нагрузки

Не поддерживается

Поддерживается (см. инструкции)

AWS

Не поддерживается

Поддерживается (см. инструкции)

Kubernetes

Не поддерживается

Не поддерживается

В этом документе рассматриваются следующие темы:

Установка WADebug

WADebug — это инструмент командной строки, написанный на языке Python. Установка с помощью pip:

pip3 install wadebug

Обновление:

pip3 install wadebug --upgrade

Удаление:

pip3 uninstall wadebug

Проверить, установлен ли WADebug, можно с помощью следующей команды:

wadebug --help

Выполнение проверок

В WADebug предусмотрено несколько действий для проверки настройки WhatsApp Business API. По умолчанию выполняются все доступные действия. Если возвращен статус problem или warning, для ускорения отладки будут показаны описание, подробные сведения и возможные способы устранения ошибки. Кроме того, выдается напоминание о том, как загрузить журналы на Facebook.

Чтобы воспользоваться инструментом, выполните на устройстве, на котором располагаются контейнеры Docker WhatsApp Business API, следующую команду:

wadebug

Если возвращается wadebug_error, проблема заключается в самом инструменте. О таких ошибках следует сообщать в прямую поддержку.



Файл конфигурации

Для проведения полной проверки WADebug необходим файл конфигурации wadebug.conf.yml в текущем каталоге.

При запуске wadebug без файла конфигурации инструмент предложит создать скелет файла, чтобы вы могли указать значения. Если файл конфигурации отсутствует или значения не заданы, некоторые действия пропускаются по причине нехватки информации.

Вот пример файла конфигурации:

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

Список доступных действий

Чтобы проверить доступные действия, выполните следующую команду:

wadebug ls

Частичное выполнение

Чтобы выполнить только некоторые из доступных действий, используйте следующую команду:

wadebug partial check_software_version check_mysql_version

Режим JSON

В wadebug имеется два режима: интерактивный и режим JSON.

Интерактивный режим используется по умолчанию. В нем отображаются таблицы результатов и уведомления, предлагается создать файл конфигурации и т. д.
Режим JSON удобен, если wadebug интегрируется в автоматический процесс для периодической проверки настройки WhatsApp Business API или при обновлении версии WhatsApp Business API.

Для запуска wadebug в режиме JSON отправьте любую доступную команду wadebug с флагом --json:

wadebug --json

Будет возвращен действительный ответ JSON:

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

Сбор данных об использовании и отказ от него

Каждый раз при запуске wadebug данные об использовании инструмента (включая выполненные действия и полученные результаты) отправляются в Facebook, где используются для улучшения работы инструмента и ускорения поддержки WhatsApp через службу прямой поддержки.

Если вы не хотите отправлять данные об использовании инструмента в Facebook, запустите wadebug с флагом --do-not-send-usage

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

Учтите, что вы будете получать результаты отладки, однако качество поддержки может существенно снизиться.

Получение журналов

wadebug предусматривает удобный способ получить журналы всех контейнеров и при необходимости отправить их команде поддержки Facebook для ускорения отладки.

Получение последних журналов

Чтобы получить последние журналы в папке wadebug_logs/ в текущем каталоге:

wadebug logs

Важные изменения:

  • В версии 0.1.4 и более старых команда wadebug logs извлекает из журналов каждого контейнера последние 10 тысяч строк.
  • Начиная с версии 0.1.5 команда wadebug logs извлекает из журналов каждого контейнера данные за последние 3 часа.

Получение журналов за период с указанных даты и времени

(Начиная с версии 0.1.5) Чтобы получить журналы за 3 часа с указанных даты и времени (в часовом поясе GMT), используйте параметр --since. Например, следующая команда возвращает журналы за период с 07.01.2020 3:00:02 GMT по 07.01.2020 6:00:02 GMT:

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

Отправка журналов

Чтобы отправить журналы в Facebook, добавьте флаг --send. Для более быстрого поиска решения полученное в ответе значение run_id можно указать в заявке в прямую поддержку:

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

Получение журналов из конфигурации с повышенной доступностью и распределением нагрузки

Если используется режим повышенной доступности и распределения нагрузки, необходимо войти на каждый хост, на котором установлены контейнеры, установить WADebug и выполнить перечисленные выше команды wadebug logs.

Обращение за помощью

Чтобы получить поддержку при настройке WhatsApp Business API, подайте заявку в прямую поддержку и укажите значение run_id, полученное после запуска wadebug. Таким образом мы получим список выполненных действий и полученных результатов.

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
  	

Журналы контейнеров заметно упрощают процесс отладки. Для сбора и отправки журналов в Facebook выполните команду wadebug logs с флагом --send.

wadebug logs --send

и укажите возвращенное значение run_id

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

Журнал изменений

15 января 2020 г. (версия 0.1.5)

  • Прекращена поддержка Python 2 🎉.
  • Команда wadebug logs теперь возвращает журналы за последние 3 часа, а не последние 10 тысяч строк.
  • Чтобы получить журналы за 3 часа с указанных даты и времени, добавьте к команде wadebug logs параметр --since.
  • [Исправление ошибки] Сбой в режиме JSON при использовании несовместимых параметров.

3 сентября 2019 г. (версия 0.1.4)

  • Новый, более удобный пользовательский интерфейс WADebug.
  • [Исправлена ошибка] Если при выполнении действия проверка_сети происходит ошибка подключения, теперь выводится правильный порт
  • [Исправлена ошибка] Добавление недостающих требований привилегий MySQL для действия проверка_разрешений_mysql

26 апреля 2019 г. (версия 0.1.3)

  • Добавлены новые элементы файла конфигурации, необходимые для новых действий.
  • Добавлены проверки работоспособности Webhook.
  • Добавлен запрос на обновление WADebug, если на PyPi имеется новая версия.
  • Добавлен ответ конечной точки support для загруженных журналов (для упрощения отладки).
  • Журналы сбоев WADebug теперь загружаются на Facebook.

28 декабря 2018 г. (версия 0.1.2)

  • Ограничен размер получаемых журналов.
  • Создаются образы ядра Coreapp на случай сбоев.
  • Добавлена новая команда для получения журналов без загрузки.
  • Модуль enum34 теперь необходим для версий Python до 3.4.

23 октября 2018 г. (версия 0.1.1)

  • Первый выпуск.