有人支援
LCC.assist は、デバイス側スクリプトから集中管理側へ有人支援を依頼するために使用します。スクリプトにスクリーンショットと説明文を添付し、担当者から結果が送信されるまで待機してから、実行を再開できます。
リクエストタイプ
| タイプ | API | 適した場面 | スクリプトでの一般的な処理 |
|---|---|---|---|
| テキスト入力 | LCC.assist.ask_text() | 確認コード、SMS コード、パスフレーズ、ワンタイムトークン | result.text を現在の入力欄へ入力する |
| 座標選択 | LCC.assist.pick_point() | 画像ボタンや予期しないダイアログのボタンなど、タップ位置を人が判断する必要がある場合 | touch.tap(result.x, result.y) を直接実行する |
| 有人リモート操作 | LCC.assist.request_control() | スライダー、CAPTCHA、ログイン、セキュリティ検証、権限ダイアログなどの不安定なフロー | リモート操作の完了後にスクリーンショットを取り直して判定を続ける |
担当者向けの説明には、具体的に実行できる操作を記述し、「補足情報」のような抽象的な表現は避けてください。「リモート操作で現在の認証を完了してから、完了をクリックしてください」「スクリーンショットの確認コードを入力してください」「確認ボタンの中央を選択してください」のような記述を推奨します。
スクリーンショットの指定方法
支援リクエストには、次の方法で画像を添付できます。
screenshotLocalPath:デバイス上の画像のローカルパスです。SDK が集中管理サーバーのfiles/_temp/assist/lua-script/<udid>/<request-id>/...へアップロードします。screenshotPath:画像がすでに集中管理サーバーのfilesルートディレクトリにある場合、その相対パスを直接渡します。screenshotImage:XXTouch のImageObjectです。SDK が data URL に変換するため、事前にファイルへ保存する必要はありません。screenshotImageData:PNG/JPEG 画像のバイナリデータです。SDK が data URL に変換します。input.imageSrc:スクリプトがすでにdata:image/...、http(s)://...、/api/...のいずれかの画像アドレスを持っている場合、inputに設定してフロントエンドへそのまま渡して表示できます。
SDK は input.imageSrc を上書きしません。input.imageSrc もパス指定のスクリーンショットも渡されていない場合に限り、SDK は screenshotImage または screenshotImageData を input.imageSrc に変換します。
ライフサイクル
リクエストは pending から始まり、集中管理側でツールを開くと active、結果を送信すると submitted になります。ユーザーによるキャンセル、スクリプトからの取り消し、待機のタイムアウト、期限切れの場合は cancelled / expired になります。
スクリプト側では 2 段階でクリーンアップします。
LCC.assist.request()の待機がタイムアウトすると、今回のリクエストを取り消し、nil, "timeout", taskを返します。- スクリプト終了時、
XXTLanControl.luaはcancel_all()を呼び出し、現在のスクリプトでまだ完了していないリクエストを取り消します。
集中管理側は、あるデバイスのスクリプト停止状態を受信したときも、そのデバイスで source = "lua-script" かつ pending / active のままになっているリクエストを取り消します。他のデバイスのリクエストは取り消さず、送信済みのリクエストも変更しません。
タスクは集中管理サーバーの現在のメモリ内タスクストレージに保存されるため、バックエンドの再起動後に未完了タスクは保持されません。
リクエストで input.imageSrc、screenshotImage、screenshotImageData のいずれかを使用してインライン画像を渡した場合、タスクが送信済み、キャンセル、期限切れのいずれかになると、集中管理サーバーはインライン画像の内容を解放し、タスク状態、結果、その他の構造化情報だけを保持します。
ソフトウェアが異常終了してから再度開かれた場合、未完了タスク自体は復元されません。起動時に、スクリプトの支援リクエストが files/_temp/assist/lua-script/ へアップロードしたスクリーンショットを削除します。また、旧バージョンが files/assist/lua-script/ または files/assist/<udid>/<request-id>/ へアップロードした、リクエスト ID が UUID のディレクトリも互換性のため削除します。
API 一覧
- 共通引数と戻りオブジェクト
- 有人支援リクエストを作成する
LCC.assist.create() - 有人支援の結果を待機する
LCC.assist.wait() - リクエストを作成して待機する
LCC.assist.request() - テキスト入力を依頼する
LCC.assist.ask_text() - 座標の選択を依頼する
LCC.assist.pick_point() - 有人リモート操作を依頼する
LCC.assist.request_control() - 指定したリクエストを取り消す
LCC.assist.cancel() - 現在のスクリプトのリクエストを取り消す
LCC.assist.cancel_all()