Перейти к основному содержимому

Общие параметры и объекты результата

На этой странице описаны общие для API серии LCC.assist параметры options, объекты задач и результатов, а также состояния ошибок.

Поля options​

ПолеТипЗначение по умолчаниюОписание
typestring"text"Тип запроса. Распознаются "text"/"text-reply", "point"/"pick-point" и "control"/"device-control"; удобные обёртки задают его автоматически.
titlestring"脚本请求人工辅助"Заголовок карточки в центральной консоли.
text / promptstring""Инструкция для оператора. Описывайте конкретное действие, а не пишите «дополнительная информация».
timeoutnumber300Секунды ожидания; при создании задачи также используются как срок её действия на бэкенде.
pollIntervalMsnumber1000Интервал опроса в миллисекундах; значения меньше 250 считаются равными 250.
screenshotLocalPathstringЛокальный файл снимка устройства; SDK загрузит его в files/_temp/assist/lua-script/<udid>/<request-id>/... центральной консоли.
screenshotPathstringОтносительный путь к изображению в корне files центральной консоли.
screenshotImage / imageImageObjectОбъект изображения XXTouch. SDK экспортирует его в data URL и записывает в input.imageSrc.
screenshotImageData / imageDatastringДвоичные данные PNG/JPEG. SDK преобразует их в data URL и записывает в input.imageSrc.
screenshotImageFormat / imageFormatstring"jpeg"Формат экспорта screenshotImage: "jpeg" или "png".
screenshotImageQuality / imageQualitynumber0.7Качество JPEG при экспорте screenshotImage, от 0.0 до 1.0.
screenshotImageMimeType / imageMimeTypestringОпределяется автоматическиMIME-тип screenshotImageData; для данных PNG/JPEG обычно передавать его не нужно.
imageRecttableИспользуется для отображения координат обрезанного изображения обратно на устройство, например { left = 100, top = 200, width = 300, height = 120 }.
inputtable{}Дополнительные структурированные данные, передаваемые в центральную консоль. 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 означают, что результат оператора не получен.