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
| Tipo | API | Escenario adecuado | Tratamiento habitual del script |
|---|---|---|---|
| Respuesta de texto | LCC.assist.ask_text() | Códigos de verificación, códigos SMS, contraseñas y tokens de un solo uso | Introduce result.text en el campo de entrada actual |
| Selección de coordenadas | LCC.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 inesperado | Llama directamente a touch.tap(result.x, result.y) |
| Control remoto manual | LCC.assist.request_control() | Controles deslizantes, verificación CAPTCHA, inicio de sesión, comprobaciones de seguridad y diálogos de permisos, entre otros flujos inestables | Espera 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 centralfiles/_temp/assist/lua-script/<udid>/<request-id>/....screenshotPath: si la imagen ya está bajo la raízfilesdel control central, pasa directamente la ruta relativa.screenshotImage: objetoImageObjectde 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 imagendata:image/...,http(s)://...o/api/..., puede pasarla eninputpara 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 devuelvenil, "timeout", task. - Al finalizar el script,
XXTLanControl.luallama acancel_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
- Parámetros comunes y objetos devueltos
- Crear una solicitud de asistencia humana
LCC.assist.create() - Esperar el resultado de la asistencia humana
LCC.assist.wait() - Crear y esperar una solicitud
LCC.assist.request() - Solicitar una respuesta de texto
LCC.assist.ask_text() - Solicitar la selección de coordenadas
LCC.assist.pick_point() - Solicitar control remoto manual
LCC.assist.request_control() - Cancelar una solicitud específica
LCC.assist.cancel() - Cancelar las solicitudes del script actual
LCC.assist.cancel_all()