Ir para o conteúdo principal

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​

TipoAPICenário adequadoComo o script normalmente processa
Resposta de textoLCC.assist.ask_text()CAPTCHA, código SMS, senha e token de uso únicoinsira result.text na caixa de entrada atual
Seleção de coordenadasLCC.assist.pick_point()quando uma pessoa precisa decidir onde tocar, como em um botão gráfico ou botão de uma janela inesperadachame diretamente touch.tap(result.x, result.y)
Controle remoto humanoLCC.assist.request_control()fluxos instáveis como controles deslizantes, verificações antirobô, login, verificações de segurança e janelas de permissãoaguarde 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 para files/_temp/assist/lua-script/<udid>/<request-id>/... no controle central.
  • screenshotPath: quando a imagem já está na raiz files do controle central, passe diretamente seu caminho relativo.
  • screenshotImage: ImageObject do 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 imagem data:image/..., http(s)://... ou /api/..., coloque-o em input para 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 e nil, "timeout", task é retornado;
  • quando o script termina, XXTLanControl.lua chama cancel_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​