共通引数と戻りオブジェクト
このページでは、LCC.assist 系列の API で共通して使用する options、タスクオブジェクト、結果オブジェクト、エラー状態について説明します。
options のフィールド
| フィールド | 型 | 既定値 | 説明 |
|---|---|---|---|
type | string | "text" | リクエストタイプです。"text"/"text-reply"、"point"/"pick-point"、"control"/"device-control" のいずれも認識されます。便利なラッパー関数では自動設定されます。 |
title | string | "脚本请求人工辅助" | 集中管理側に表示するカードのタイトルです。この既定値は SDK で固定された簡体字中国語の文字列です。 |
text / prompt | string | "" | 担当者向けの説明です。具体的な操作を記述し、「補足情報」のような表現は避けてください。 |
timeout | number | 300 | 待機時間(秒)です。タスク作成時には、バックエンドでの有効期限にも使用されます。 |
pollIntervalMs | number | 1000 | ポーリング間隔(ミリ秒)です。250 未満は 250 として処理されます。 |
screenshotLocalPath | string | デバイス上のローカルなスクリーンショットファイルです。SDK が集中管理サーバーの files/_temp/assist/lua-script/<udid>/<request-id>/... へアップロードします。 | |
screenshotPath | string | 集中管理サーバーの files ルートディレクトリにすでにある画像の相対パスです。 | |
screenshotImage / image | ImageObject | XXTouch の画像オブジェクトです。SDK が data URL としてエクスポートし、input.imageSrc に設定します。 | |
screenshotImageData / imageData | string | PNG/JPEG 画像のバイナリデータです。SDK が data URL に変換して input.imageSrc に設定します。 | |
screenshotImageFormat / imageFormat | string | "jpeg" | screenshotImage のエクスポート形式です。"jpeg" または "png" を選択できます。 |
screenshotImageQuality / imageQuality | number | 0.7 | screenshotImage を JPEG としてエクスポートするときの品質です。範囲は 0.0~1.0 です。 |
screenshotImageMimeType / imageMimeType | string | 自動認識 | screenshotImageData の MIME タイプです。通常、PNG/JPEG データでは指定する必要はありません。 |
imageRect | table | 切り抜き画像をデバイス座標へ対応付けるときに使用します。例:{ left = 100, top = 200, width = 300, height = 120 }。 | |
input | table | {} | 集中管理側へそのまま渡す追加の構造化情報です。SDK は requestType と scriptRequestId を追加します。 |
screenshotLocalPath は screenshotPath より優先されます。screenshotLocalPath を渡した場合、SDK はファイルをアップロードし、アップロード後のパスを使用します。
input.imageSrc も screenshotLocalPath / screenshotPath も渡されていない場合、SDK は screenshotImage または screenshotImageData を input.imageSrc へ変換しようとします。ImageObject は呼び出し側が管理し、SDK は自動的に destroy() しません。
ImageObject を直接渡す
local img = screen.image()
local result, err = LCC.assist.request_control({
title = "有人対応が必要",
text = "リモート操作で現在の確認を完了してから「完了」をクリックしてください",
screenshotImage = img,
screenshotImageQuality = 0.6,
})
if img.destroy then
img:destroy()
end
画像データを直接渡す
local img = screen.image()
local data = img:png_data()
if img.destroy then
img:destroy()
end
local result, err = LCC.assist.request_control({
title = "有人対応が必要",
text = "リモート操作で現在の確認を完了してから「完了」をクリックしてください",
screenshotImageData = data,
})
画像アドレスを直接渡す
local result, err = LCC.assist.request_control({
title = "有人対応が必要",
text = "リモート操作で現在の確認を完了してから「完了」をクリックしてください",
input = {
imageSrc = "data:image/jpeg;base64,...",
},
})
input.imageSrc はファイルをアップロードせず、screenshotPath にも書き込みません。
メモリを長時間占有しないように、タスクが送信済み、キャンセル、期限切れのいずれかになると、集中管理サーバーはタスクの input から imageSrc を削除します。リクエストの処理中は画像が通常どおり表示されます。
タスクオブジェクト
task は集中管理側に保存される支援タスクです。主なフィールドは次のとおりです。
{
id = "assist_xxx",
kind = "text-reply",
title = "確認コードを入力",
prompt = "スクリーンショットを確認して確認コードを入力してください",
status = "pending",
deviceId = "デバイス UDID",
source = "lua-script",
screenshotPath = "assist/...",
input = {},
result = nil,
createdAt = 1781196058792,
updatedAt = 1781196058792,
expiresAt = 1781196358792,
}
時刻フィールドはミリ秒単位のタイムスタンプです。スクリプトが作成したリクエストには、deviceId = device.udid() と source = "lua-script" が自動的に書き込まれます。
結果オブジェクト
テキスト入力が成功した場合:
{ kind = "text-reply", text = "1234" }
座標選択が成功した場合:
{
kind = "pick-point",
x = 123,
y = 456,
imageX = 123,
imageY = 456,
color = "AABBCC",
}
x と y はデバイスの物理座標で、touch.tap にそのまま使用できます。imageX と imageY はスクリーンショット内の座標です。
有人リモート操作で「完了」をクリックした場合:
{ kind = "device-control", completed = true }
有人リモート操作で「結果を手動送信」を展開し、有効な JSON を送信した場合、result はその JSON に対応する Lua の値になります。たとえば、次の内容を送信します。
{"allowed":true,"reason":"有人確認"}
スクリプトは次の値を受け取ります。
{ allowed = true, reason = "有人確認" }
有人リモート操作で JSON 以外の通常テキストを手動送信した場合:
{ note = "通常のテキスト内容" }
空の内容を手動送信してもタスクは送信されず、スクリプトは待機を続けます。
エラーと状態
待機に失敗した場合は、次の値を返します。
nil, err, task
主な err:
"cancelled":ユーザーまたはスクリプトがキャンセルしました。"expired":バックエンドのタスクが期限切れになりました。"timeout":スクリプトの待機がタイムアウトし、SDK がタスクの取り消しを試みました。"not found":タスクが存在しません。バックエンドが再起動したか、タスクが削除された可能性があります。- その他の文字列:ネットワーク、スクリーンショットのアップロード、バックエンドインターフェースから返されたエラーテキストです。
result が返されるのは submitted 状態だけです。cancelled、expired、timeout のいずれも、有人対応の結果を取得できなかったものとして扱ってください。