メインコンテンツへ移動

有人支援

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 一覧​