Assistência humana
LCC.assist permite que scripts no dispositivo iniciem solicitações de assistência humana no controle central. O script pode incluir uma screenshot e instruções, aguardar bloqueado até que uma pessoa envie o resultado e então continuar a execução.
Tipos de solicitação
| Tipo | API | Cenário adequado | Como o script normalmente processa |
|---|---|---|---|
| Resposta de texto | LCC.assist.ask_text() | CAPTCHA, código SMS, senha e token de uso único | insira result.text na caixa de entrada atual |
| Seleção de coordenadas | LCC.assist.pick_point() | quando uma pessoa precisa decidir onde tocar, como em um botão gráfico ou botão de uma janela inesperada | chame diretamente touch.tap(result.x, result.y) |
| Controle remoto humano | LCC.assist.request_control() | fluxos instáveis como controles deslizantes, verificações antirobô, login, verificações de segurança e janelas de permissão | aguarde a conclusão do controle remoto humano, capture a tela novamente e continue a análise |
As instruções para a pessoa que vai operar devem ser concretas e executáveis; não use descrições abstratas como "informações adicionais". Prefira textos como "controle remotamente o dispositivo, conclua a verificação atual e clique em Concluído", "digite o código da screenshot" ou "clique no centro do botão de confirmação".
Fontes de screenshots
Uma solicitação de assistência pode incluir uma imagem de várias formas:
screenshotLocalPath: caminho de uma imagem local do dispositivo; o SDK a envia parafiles/_temp/assist/lua-script/<udid>/<request-id>/...no controle central.screenshotPath: quando a imagem já está na raizfilesdo controle central, passe diretamente seu caminho relativo.screenshotImage:ImageObjectdo XXTouch; o SDK o converte em um data URL, sem exigir que a imagem seja salva antes em um arquivo.screenshotImageData: dados binários de imagem PNG/JPEG; o SDK os converte em um data URL.input.imageSrc: quando o script já tem um endereço de imagemdata:image/...,http(s)://...ou/api/..., coloque-o eminputpara repassá-lo ao front-end.
O SDK não sobrescreve input.imageSrc. Ele só converte screenshotImage ou screenshotImageData em input.imageSrc quando input.imageSrc e uma screenshot por caminho não foram informados.
Ciclo de vida
Uma solicitação começa em pending, passa a active quando alguém abre a ferramenta no controle central e a submitted depois que o resultado é enviado. O cancelamento pelo usuário, o cancelamento pelo script, o tempo limite de espera ou a expiração levam a cancelled / expired.
No lado do script, há duas camadas de limpeza:
- quando a espera de
LCC.assist.request()atinge o tempo limite, a solicitação atual é revogada enil, "timeout", taské retornado; - quando o script termina,
XXTLanControl.luachamacancel_all()para revogar as solicitações ainda não concluídas do script atual.
Quando o controle central recebe o status de que um script foi parado em um dispositivo, ele também revoga as solicitações desse dispositivo com source = "lua-script" que ainda estejam em pending / active; não cancela solicitações de outros dispositivos nem altera solicitações já enviadas.
A armazenagem de tarefas usa o armazenamento em memória atual do controle central; tarefas não concluídas não são mantidas depois que o back-end é reiniciado.
Se uma solicitação incluir uma imagem embutida por meio de input.imageSrc, screenshotImage ou screenshotImageData, o controle central liberará o conteúdo da imagem quando a tarefa passar para o estado enviado, cancelado ou expirado, mantendo apenas o status da tarefa, o resultado e outras informações estruturadas.
Se o software for encerrado inesperadamente e aberto novamente, as tarefas não concluídas não serão restauradas. Na inicialização, serão limpas as screenshots enviadas pelas solicitações de assistência de scripts para files/_temp/assist/lua-script/; diretórios enviados por versões antigas para files/assist/lua-script/ ou files/assist/<udid>/<request-id>/ cujo ID da solicitação seja um UUID também serão limpos.
Lista de APIs
- Parâmetros comuns e objetos de retorno
- Criar uma solicitação de assistência humana
LCC.assist.create() - Aguardar um resultado de assistência humana
LCC.assist.wait() - Criar e aguardar uma solicitação
LCC.assist.request() - Solicitar uma resposta de texto
LCC.assist.ask_text() - Solicitar a seleção de coordenadas
LCC.assist.pick_point() - Solicitar controle remoto humano
LCC.assist.request_control() - Revogar uma solicitação específica
LCC.assist.cancel() - Revogar as solicitações do script atual
LCC.assist.cancel_all()