人工輔助
LCC.assist 用於讓裝置腳本向中控端發起人工輔助請求。腳本可以附帶截圖和說明文字,阻塞等待人工提交結果,然後繼續執行。
請求類型
| 類型 | API | 適合場景 | 腳本通常怎麼處理 |
|---|---|---|---|
| 文字回覆 | LCC.assist.ask_text() | 驗證碼、簡訊驗證碼、密碼、單次權杖 | 將 result.text 輸入到目前輸入框 |
| 選擇座標 | LCC.assist.pick_point() | 需要人工判斷點哪裡,例如圖形按鈕、異常彈窗按鈕 | 直接 touch.tap(result.x, result.y) |
| 人工遠端控制 | LCC.assist.request_control() | 滑桿、人機驗證、登入、安全驗證、權限彈出視窗等不穩定流程 | 等人工遠端控制完成後重新截圖繼續判斷 |
給操作人員看的說明要具體可執行,不要寫“補充資訊”這類抽象說明。建議寫成“請遠端控制完成目前驗證後按一下完成”“請輸入截圖中的驗證碼”“請點選確認按鈕中心”。
截圖來源
輔助請求可以用多種方式帶圖:
screenshotLocalPath:裝置本機圖片路徑,SDK 會上傳到中控files/_temp/assist/lua-script/<udid>/<request-id>/...。screenshotPath:圖片已經在中控files根目錄下時,直接傳相對路徑。screenshotImage:XXTouchImageObject,SDK 會轉成 data URL,不需要先儲存到檔案。screenshotImageData:PNG/JPEG 圖片二進位資料,SDK 會轉成 data URL。input.imageSrc:腳本已經有data:image/...、http(s)://...或/api/...圖片地址時,可放在input中原樣傳遞給前端顯示。
input.imageSrc 不會被 SDK 覆蓋。未傳 input.imageSrc 且未傳路徑截圖時,SDK 才會把 screenshotImage 或 screenshotImageData 轉成 input.imageSrc。
生命週期
一個請求從 pending 開始,中控端開啟工具後會變為 active,提交結果後變為 submitted。使用者取消、腳本主動取消、等待逾時或過期會進入 cancelled / expired。
腳本側有兩層清理:
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 的目錄。