API 參考
快速入門

帳號生命週期

一個帳號帶有三個彼此獨立的狀態:status(由你掌控的業務開關)、GET /v1/accounts/{id}/auth 回傳的認證狀態,以及 runtime_status(即時連線狀態)。webhook 載荷以 auth_status 與 runtime_status 暴露後兩者——注意 REST 帳號物件本身並沒有名為 auth_status 的欄位。

認證狀態機

  • pending_auth

    帳號建立後的初始狀態;尚未啟動任何流程。

  • awaiting_qr_scan

    QR 流程進行中;auth_payload 帶有要顯示的 QR 內容。

  • awaiting_code

    驗證碼流程進行中;WhatsApp 場景下把 auth_payload 裡的 verify_code 輸入到手機上。

  • awaiting_password

    渠道在驗證碼之後還要求二階段驗證密碼。

  • authorized

    認證完成。執行環境會自動啟動。

  • failed

    流程失敗;last_error 帶有原因。重新發起流程即可重試。

轉換
1
pending_authawaiting_qr_scan

POST /auth/qr/start 開始 QR 流程。

2
pending_authawaiting_code

POST /auth/start 開始驗證碼流程。

3
awaiting_codeawaiting_password

渠道要求二階段驗證密碼。

4
awaiting_qr_scanauthorized

渠道確認掃碼完成。

5
awaiting_codeauthorized

驗證碼(或 WhatsApp 配對)被接受。

6
awaiting_passwordauthorized

密碼被接受。

7
authorizedpending_auth

渠道使會話失效——觸發 account.auth.required 事件,需要重新發起流程。

8
awaiting_*failed

渠道在任一等待步驟回報失敗(account.auth.failed 事件)。

9
awaiting_*pending_auth

POST /auth/cancel 放棄進行中的流程。

執行環境狀態機

  • unknown

    帳號建立後的初始狀態;平台缺少來自渠道的最新回報時也會處於此狀態——呼叫 /runtime/refresh 重新同步。

  • starting

    啟動進行中;渠道正在把會話帶上線。

  • running

    已連線,可正常收發訊息。

  • reconnecting

    連線中斷,自動或手動重連進行中。

  • disconnected

    渠道回報會話離線;重連或重新啟動即可恢復。

  • stopping

    停止進行中。

  • stopped

    未連線。停止完成後的狀態。

  • error

    執行環境遇到無法復原的錯誤;last_error 帶有原因。

轉換
1
unknownstarting

授權成功後自動啟動。

2
stoppedstarting

顯式呼叫 POST /runtime/start。

3
startingrunning

渠道會話上線(account.started 事件)。

4
runningreconnecting

連線中斷,或呼叫了 POST /runtime/reconnect。

5
reconnectingrunning

連線重新建立。

6
runningdisconnected

渠道回報會話離線(account.status.updated 事件)。

7
disconnectedrunning

POST /runtime/reconnect 或 /runtime/start 將其帶回線上。

8
runningstopping

POST /runtime/stop 開始優雅停止。

9
stoppingstopped

停止完成。

10
*error

任意時點發生無法復原的渠道錯誤。

11
*unknown

缺少渠道的最新回報;POST /runtime/refresh 重新同步狀態值。

備註

  • 帳號的 status 由你掌控(建立時或透過 PATCH 設定的業務開關)。另外兩個狀態由平台持有且唯讀:認證狀態透過 GET /v1/accounts/{id}/auth 讀取(看其 status 欄位),runtime_status 直接掛在帳號物件上。
  • 授權成功會自動啟動執行環境——之後再呼叫 POST /runtime/start 也無害,等同 no-op。
  • 處於 authorized 狀態時,POST /auth/start、/auth/qr/start 與 /auth/session 會被以 409 account_already_authorized 拒絕。確實需要重走流程時,請先呼叫 POST /auth/cancel。
  • account.auth.required 事件表示渠道已使會話失效:認證狀態脫離 authorized,auth_payload 帶有重新認證所需的材料(例如新的 QR)。
  • 每次執行環境變化都會以 account.status.updated 事件推送,同時攜帶 auth_status 與 runtime_status——請透過 webhook 同步本地副本,而不是輪詢。