一部の MoreLogin 操作は、基盤となるブラウザー、クラウドフォン、ファイル、アプリ、または RPA の実行が最終状態に達する前に処理を受け付けます。送信成功のレスポンスはリクエストが受理されたことを意味し、要求した状態にすでに到達したことを常に意味するわけではありません。
| 状態 | 意味 | クライアントの対応 |
|---|---|---|
| 送信済み | API がコマンドを受理、またはタスクを作成した | 返された ID と requestId を保存する。同じ書き込みをすぐに再送しない |
| 待機中または実行中 | 下流の処理がまだ進行している | 文書化された状態/結果エンドポイントを間隔を広げながらポーリングする |
| 成功 | 対象のリソースまたはタスクが成功の終了状態に達した | ポーリングを止めて次の処理に進む |
| 失敗 | 状態/結果エンドポイントが失敗または終了状態のビジネスエラーを報告した | 自動リトライを停止し、ID、失敗内容、requestId を保持する |
| 結果不明 | 書き込みがタイムアウトした、または使用可能なレスポンスなしに接続が閉じた | 再試行するかを判断する前に、リソース/タスクの現在状態を照会する |
- 約 1 秒から始め、2、4、8 秒と間隔を広げ、上限は 15〜30 秒とします。
- ジッターを加え、複数のクライアントが同時にポーリングしないようにします。
- 文書化された終了状態に達したら停止し、無期限にポーリングしないでください。
data: nullを待機中と解釈するのは、そのエンドポイントが明示的にそう記載している場合のみです。- 書き込みの通信タイムアウトは失敗の証拠にはなりません。
| ワークフロー | 送信する操作 | 観測する操作 | 終了状態 |
|---|---|---|---|
| クラウドブラウザーの開始/停止 | POST /cloudbrowser/start または /cloudbrowser/stop | POST /cloudbrowser/page | ランタイムが目的の状態になる、または停止後に消える |
| クラウドフォンの電源 | POST /cloudphone/powerOn または /cloudphone/powerOff | POST /cloudphone/page | envStatus=4 は起動済み、envStatus=2 は停止済み。1 は作成失敗 |
| クラウドフォンのファイルアップロード | 署名付き URL にアップロードし、その後 POST /cloudphone/uploadFile | POST /cloudphone/uploadFileResult | status=1 は成功、status=2 は失敗。data: null と status=0 は待機中 |
| クラウドフォンのダウンロード | POST /cloudphone/download | POST /cloudphone/download/result | status=20 成功、30 失敗、40 キャンセル。10 は実行中 |
| アプリのインストール | POST /cloudphone/app/install | POST /cloudphone/app/installedList | 対象パッケージがインストール済みアプリ一覧に現れる |
| RPA のスケジュール/実行 | POST /cloudphone/rpa/task/save または /onceTask/save | POST /cloudphone/rpa/task/page、/subTask/page、/subTask/detail/{id} | taskState=2 完了または 3 キャンセル。handleResult を確認(0 失敗、1 成功) |
| ライブ配信 | POST /cloudphone/live/start または /live/end | POST /cloudphone/live/status | 配信の開始または停止が状態で確認できる |
| クラウドストレージのアップロード | POST /cloudstorage/upload/init の後にオブジェクトストアへ PUT | 必要な PUT がすべて成功した後に POST /cloudstorage/upload/complete | 完了リクエストが成功する。オブジェクトのアップロード成功前に complete を呼ばないこと |
Local API の対応する操作は、文書化されている箇所で /api プレフィックスを使います。操作ごとの指針はエンドポイントの再試行と完了マトリクスを参照してください。
try:
submit_operation()
except TimeoutError:
# The write may already have succeeded.
current = query_current_state()
if current.is_terminal_success:
pass
elif current.is_pending:
poll_until_terminal()
else:
decide_whether_retry_is_safe(current)公開 API には現在、汎用の冪等キーヘッダーは定義されていません。したがってリソース ID、タスク ID、状態照会、requestId が安全な復旧に不可欠です。