Общие параметры и объекты результата
На этой странице описаны общие для API серии LCC.assist параметры options, объекты задач и результатов, а также состояния ошибок.
Поля options
| Поле | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
type | string | "text" | Тип запроса. Распознаются "text"/"text-reply", "point"/"pick-point" и "control"/"device-control"; удобные обёртки задают его автоматически. |
title | string | "脚本请求人工辅助" | Заголовок карточки в центральной консоли. |
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 | Качество JPEG при экспорте screenshotImage, от 0.0 до 1.0. |
screenshotImageMimeType / imageMimeType | string | Определяется автоматически | MIME-тип screenshotImageData; для данных 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 содержит соответствующее значение Lua. Например, отправлено:
{"allowed":true,"reason":"人工确认"}
Скрипт получит:
{ allowed = true, reason = "人工确认" }
Если оператор вручную отправляет обычный текст, не являющийся JSON:
{ note = "普通文本内容" }
Пустое значение не отправляет задачу, и скрипт продолжает ожидание.
Ошибки и состояния
При сбое ожидания возвращается:
nil, err, task
Распространённые значения err:
"cancelled": запрос отменён пользователем или скриптом."expired": срок действия задачи на бэкенде истёк."timeout": ожидание скрипта истекло, SDK попытался отменить задачу."not found": задача не существует, возможно, после перезапуска бэкенда или очистки.- Другие строки: текст ошибки сети, загрузки снимка или ответа API бэкенда.
Только состояние submitted возвращает result. Состояния cancelled, expired и timeout означают, что результат оператора не получен.