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

Помощь оператора

LCC.assist позволяет скрипту устройства отправить в центральную консоль запрос о помощи оператора. Скрипт может приложить снимок экрана и пояснение, дождаться ответа оператора и продолжить выполнение.

Типы запросов​

ТипAPIПодходящие сценарииТипичная обработка в скрипте
Текстовый ответLCC.assist.ask_text()Коды CAPTCHA и 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: объект ImageObject из XXTouch; 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.

На стороне скрипта предусмотрены два уровня очистки:

  • При тайм-ауте ожидания 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>/, если идентификатор запроса является UUID.

Список API​