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 的設定。根據預設,它會執行所有可用的動作。如果系統傳回 problemwarning 狀態,會顯示說明、詳細資料和可能的排解方式,以協助您解決設定相關問題。也會顯示提示,讓您知道需要協助時如何將記錄上傳至 Facebook。

若要使用這項工具,請在託管 WhatsApp Business API Docker 容器的機器上執行下列命令:

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 模式。

互動模式為預設模式;使用這個模式時,系統會顯示視覺化結果表格、通知、建立設定檔案的提示等。
如果您想將 wadebug 整合至自動化管道,以便定期或在每次升級 WhatsApp Business API 版本時驗證 WhatsApp Business API 設定,則適合使用 JSON 模式。

若要在 JSON 模式下執行 wadebug,請將 --json 標示傳送至任何可用的 wadebug 命令:

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 命令會從每個容器擷取最後 1 萬行的記錄
  • 0.1.5 版和以上版本:wadebug logs 命令會從每個容器擷取最近 3 小時的記錄

擷取特定日期時間起算的記錄

[0.1.5 版新功能] 若要擷取特定日期時間(格林威治標準時間時區)起算的 3 小時記錄,請使用 --since 選項。例如:下列命令會擷取 2020-01-07 3:00:02(格林威治標準時間)2020-01-07 6:00:02(格林威治標準時間)期間的記錄:

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 設定問題時需要協助,請使用執行 wadebug 後傳回的 run_id 來開啟直接支援問題單。這樣一來,我們就能看到您所執行的動作和個別結果的報告。

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
  	

變更記錄

2020 年 1 月 15 日(0.1.5 版)

  • 停止支援 Python 2 🎉
  • wadebug logs 現在會擷取過去 3 小時的記錄,而非最後 1 萬行記錄
  • wadebug logs 中新增 --since 選項,以便擷取指定的日期時間值起算的 3 小時記錄
  • [故障修正] 在 JSON 模式下使用不相容的參數時會快速出現失敗訊息

2019 年 9 月 3 日(0.1.4 版)

  • 提供全新且更簡潔的 WADebug 用戶介面
  • [故障修正] 修正在 check_network 動作中出現連線錯誤時會列印錯誤連接埠的問題
  • [故障修正] 在 check_mysql_permissions 動作中加入缺少的 MySQL 權限要求

2019 年 4 月 26 日(0.1.3 版)

  • 新增新動作所需的新設定檔案項目
  • 新增 Webhook 系統健康檢查
  • 新增 PyPi 提供新版本時的 WADebug 升級提示
  • 為上傳的記錄新增支援端點回應,以便簡化疑難排解程序
  • WADebug 當機記錄現在也會上傳至 Facebook

2018 年 12 月 28 日(0.1.2 版)

  • 限制擷取的記錄大小
  • 在當機時擷取核心應用程式的 coredump
  • 新增新命令,以便擷取記錄但不上傳
  • 新增 enum34,作為 Python 3.4 以下版本的必要模組

2018 年 10 月 23 日(0.1.1 版)

  • 初次發行