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 分享使用情況數據,請執行含有 --do-not-send-usage 旗幟的 wadebug

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,請執行含有 --send 旗幟的 wadebug logs

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 系統健康檢查
  • 加入 WADebug 升級提示,通知用戶 PyPi 提供可供使用的新版本
  • 在已上載記錄加入支援端點回應,以便解決疑難
  • WADebug 當機記錄現已上載至 Facebook

2018 年 12 月 28 日(0.1.2 版)

  • 限制檢索記錄的大小
  • 擷取核心應用程式的核心轉儲資料,以防當機
  • 加入新指令,在無需上載的情況下檢索記錄
  • 加入 < Python 3.4 所需的 enum34 模組

2018 年 10 月 23 日(0.1.1 版)

  • 初始版本