Saltar al contenido principal

Asistencia humana

LCC.assist permite que los scripts del dispositivo envíen solicitudes de asistencia humana al control central. El script puede adjuntar una captura y una explicación, esperar de forma bloqueante a que una persona envíe el resultado y continuar la ejecución.

Tipos de solicitud​

TipoAPIEscenario adecuadoTratamiento habitual del script
Respuesta de textoLCC.assist.ask_text()Códigos de verificación, códigos SMS, contraseñas y tokens de un solo usoIntroduce result.text en el campo de entrada actual
Selección de coordenadasLCC.assist.pick_point()Cuando una persona debe decidir dónde hacer clic, por ejemplo en un botón gráfico o de un diálogo inesperadoLlama directamente a touch.tap(result.x, result.y)
Control remoto manualLCC.assist.request_control()Controles deslizantes, verificación CAPTCHA, inicio de sesión, comprobaciones de seguridad y diálogos de permisos, entre otros flujos inestablesEspera a que termine el control remoto manual, vuelve a tomar una captura y continúa la evaluación

Las instrucciones para el operador deben ser concretas y ejecutables; no escribas mensajes abstractos como «información adicional». Se recomienda usar frases como «Toma el control remoto, completa la verificación actual y haz clic en Completado», «Introduce el código de la captura» y «Selecciona el centro del botón de confirmación».

Fuentes de capturas de pantalla​

Las solicitudes de asistencia pueden incluir imágenes de varias formas:

  • screenshotLocalPath: ruta de imagen local del dispositivo; el SDK la sube al control central files/_temp/assist/lua-script/<udid>/<request-id>/....
  • screenshotPath: si la imagen ya está bajo la raíz files del control central, pasa directamente la ruta relativa.
  • screenshotImage: objeto ImageObject de XXTouch; el SDK lo convierte en una data URL, sin necesidad de guardarlo primero en un archivo.
  • screenshotImageData: datos binarios de imagen PNG/JPEG; el SDK los convierte en una data URL.
  • input.imageSrc: si el script ya dispone de una dirección de imagen data:image/..., http(s)://... o /api/..., puede pasarla en input para mostrarla en la interfaz.

input.imageSrc no será sobrescrito por el SDK. Solo cuando no se proporciona input.imageSrc ni una captura por ruta, el SDK convierte screenshotImage o screenshotImageData en input.imageSrc.

Ciclo de vida​

Una solicitud comienza en pending, pasa a active cuando el control central abre la herramienta y a submitted cuando se envía el resultado. Si la cancela el usuario o el script, se agota el tiempo de espera o expira, pasa a cancelled / expired.

El script realiza dos niveles de limpieza:

  • Cuando se agota el tiempo de espera de LCC.assist.request(), cancela esta solicitud y devuelve nil, "timeout", task.
  • Al finalizar el script, XXTLanControl.lua llama a cancel_all() para cancelar las solicitudes del script actual que sigan incompletas.

Cuando el control central recibe el estado detenido de un script de un dispositivo, también cancela las solicitudes de ese dispositivo con source = "lua-script" que sigan en pending / active; no cancela solicitudes de otros dispositivos ni modifica las ya enviadas.

El almacenamiento de tareas reutiliza el almacenamiento de tareas en memoria actual del control central; las tareas incompletas no se conservan tras reiniciar el backend.

Si una solicitud incluye una imagen insertada mediante input.imageSrc, screenshotImage o screenshotImageData, el control central libera su contenido cuando la tarea pasa a enviada, cancelada o expirada, y conserva únicamente el estado, el resultado y otra información estructurada de la tarea.

Si el software se cierra de forma inesperada y se vuelve a abrir, las tareas incompletas no se restauran. Al iniciarse, limpia las capturas subidas por las solicitudes de asistencia del script en files/_temp/assist/lua-script/ y también elimina las rutas heredadas de files/assist/lua-script/ o files/assist/<udid>/<request-id>/ cuyo ID de solicitud sea un UUID.

Lista de API​