Ir para o conteúdo

Iniciar e manter a sessão do Runner ativa

Ao executar o BotCity Runner no Windows sob a conexão remota da área de trabalho, é importante prestar atenção ao fato de que, quando a conexão for encerrada, o sistema operacional fará com que a tela fique preta.

Quando isso acontece, os bots não podem mais capturar a tela e executar a automação corretamente, caso a sua automação necessite de recursos gráficos.

Nas seções a seguir, descrevemos algumas abordagens para resolver esse problema.

BotCity Session Manager

Session Manager monitora a fila de tarefas em tempo real, ativando recursos conforme a fila cresce e desativando-os quando a demanda diminui. Ele é otimizado para fornecer alocação de recursos em tempo hábil, reduzindo o tempo ocioso e garantindo a disponibilidade de recursos quando necessário.

Script de desconexão de sessão

Tip

Os scripts de sessão ainda são suportados, mas recomendamos o uso do BotCity Session Manager como uma solução mais robusta e escalável.

Essa opção consiste em utilizar um script PowerShell que move a conexão RDP atual para uma conexão de terminal e desconecta a atual sem bloquear a interface do usuário.

Dentro da pasta onde foi realizada a instalação do BotCity Studio SDK vamos encontrar uma pasta com o nome startup e dentro um script chamado startup.bat com o seguinte conteúdo:

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$sessionid=((quser $env:USERNAME | select -Skip 1) -split '\s+')[2]; tscon %sessionname% /dest:console"

Configuração de inicialização

O BotCity Runner oferece uma configuração que permite que um script de inicialização seja executado assim que o Runner for iniciado.

Dessa forma, podemos configurar para que o próprio Runner execute o script startup.bat e realize o processo de desconexão do usuário.

Para isso, abra o arquivo ./conf/conf.bcf e adicione um novo parâmetro chamado startup, que receberá o caminho do script que será executado.

Seu arquivo de configuração ficará dessa maneira:

1
2
3
4
5
6
7
server=https://developers.botcity.dev
login=<login>
key=<key>
machineId=<Identificador do Runner>
logScreen=true
logApplication=true
startup=./startup/startup.bat

Importante

Na próxima vez que você iniciar o BotCity Runner, ele irá executar o script para fechar automaticamente sua conexão RDP, porém mantendo a sessão ativa.

Ao utilizar essa abordagem, é necessário que a desconexão de um usuário seja sempre feita dessa maneira, para garantir que o acesso aos recursos gráficos da máquina estejam habilitados.

Caso necessite acessar esse usuário e não queira reiniciar o Runner para desconectar a sessão, basta executar diretamente o script startup.bat, que a sessão será desconectada da mesma maneira.

Aviso

Dependendo do nível de permissão do usuário, pode ser necessário iniciar o Runner com permissão de administrador, para que o script de startup seja executado corretamente.

Script de configuração do ambiente

Além de podermos configurar um script para ser executado assim que o Runner for iniciado, também podemos configurar para que alguma ação seja feita através de um script antes do início da execução de uma tarefa.

Dentro da pasta onde foi realizada a instalação do BotCity Studio SDK vamos encontrar uma pasta com o nome scripts e dentro um script chamado console_session.bat com o seguinte conteúdo:

FOR /F "skip=1 tokens=3 usebackq" %%X in (`query session %USERNAME%`) DO tscon %%X /dest:console
powershell.exe -Command Set-DisplayResolution -Width 1600 -Height 900 -Force

Atenção

Caso receba erro ao executar o comando Set-DisplayResolution, atente-se aos pontos abaixo:

  • Para server Windows 10 e 11 o comando para definir a resolução é o Set-ScreenResolution. Desta forma, deve-se usar assim: Set-ScreenResolution -Width 1600 -Height 900

  • Em alguns casos, o módulo DisplaySettings pode não ter sido instalado por padrão no PowerShell. Desta forma, é necessário fazer a instalação usando o comando: Install-Module -Name DisplaySettings

Esse script basicamente tem a mesma função do script de startup que vimos acima, ele irá mover a conexão RDP atual para uma conexão de terminal e desconectar a atual sem bloquear a interface do usuário. Além disso, podemos definir uma resolução específica que será utilizada nessa sessão que ficará ativa.

Nesse caso, ao invés de executar esse script quando o Runner for iniciado, vamos configurar para que ele seja executado antes do Runner iniciar a execução de cada tarefa.

No arquivo ./conf/conf.bcf vamos adicionar um novo parâmetro chamado beforeTask, que receberá o caminho desse script que será executado.

1
2
3
4
5
6
7
8
server=https://developers.botcity.dev
login=<login>
key=<key>
machineId=<Identificador do Runner>
logScreen=true
logApplication=true
startup=./startup/startup.bat
beforeTask=./scripts/console_session.bat

Aviso

Dependendo do nível de permissão do usuário, pode ser necessário iniciar o Runner com permissão de administrador, para que o script de beforeTask seja executado corretamente.

Dica

Esse script é só uma sugestão de um tipo de configuração que pode ser realizada.

Você pode alterar e configurar o script para que o ambiente seja configurado conforme a sua necessidade.

Máquina principal de RDP

Tip

Os scripts de sessão ainda são suportados, mas recomendamos o uso do BotCity Session Manager como uma solução mais robusta e escalável.

Essa opção consiste em ter uma máquina Windows com conexão RDP constante com as outras máquinas para manter a conexão viva e funcionando sem a necessidade de ter um usuário conectado a elas.

Instalando o RDCMan

O Remote Desktop Connection Manager é um aplicativo da Microsoft que permite gerenciar várias conexões RDP. Após a instalação na máquina MAIN, as conexões são estabelecidas com as máquinas host.

Aqui está um link para baixar a versão mais recente do RDCMan.

Depois de baixar o arquivo, tudo o que você precisa fazer é extraí-lo e executar o RDCMan.exe a partir da pasta extraída.

Adicionando uma nova máquina

Crie um novo arquivo machines.rdg e salve-o na mesma pasta que RDCMan:

Novo Arquivo

No painel esquerdo, clique com o botão direito do mouse na área vazia e selecione Add server.

Add Server

Configure o acesso à máquina host:

Config Host

Atenção

As etapas a seguir são essenciais para o funcionamento adequado do RDCMan.

Por favor, siga-os cuidadosamente.

  • Em nome do servidor, você só precisa usar o endereço IP da máquina:

Config IP

  • Configure a resolução na guia "Configurações de desktop remota" para 1600x900.

Info

Mude isso de acordo com a resolução do seu projeto. 1600x900 é o padrão recomendado pela BotCity.

Config Resolution

  • Desative a "Área de transferência" na guia "Recursos locais".

Config Resources

Configurando a máquina MAIN para permanecer ativa

É possível configurar a máquina MAIN para manter as sessões RDP ativas, mesmo que não haja conexões RDP ativas para ela.

Para alterar as configurações de registro no computador local, siga os seguintes passos:

  1. No seu computador local, feche todas as sessões abertas da Área de Trabalho Remota.
  2. Inicie o editor de registro (regedit.exe).
  3. Navegue para uma das seguintes chaves de registro, dependendo se você deseja modificar as configurações da Área de Trabalho Remota apenas para o usuário atual ou para todos os usuários do computador:

    HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client Altere este HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client

  4. Crie um valor DWORD chamado RemoteDesktop_SuppressWhenMinimized e defina-o como 2 (hexadecimal ou decimal): Regedit

  5. Feche o Editor do Registro.

Agora, quando você minimizar a janela de conexão da área de trabalho remota em seu computador, isso não afetará a GUI do computador remoto e a GUI estará disponível para suas automações.

Procedimento para manter máquinas HOST ativas

  1. Conectar à máquina MAIN
  2. Conectar a todas as máquinas HOST usando RDCMan
  3. Desconectar da máquina MAIN

Iniciar sessão e Runner automaticamente na VM

Prefira o Session Manager

Recomendamos o BotCity Session Manager como a solução mais robusta e escalável. Use a configuração abaixo quando o Session Manager não for uma opção no seu ambiente.

Essa opção configura uma VM Windows para, ao ser ligada ou reiniciada, abrir sozinha uma sessão gráfica de usuário e iniciar o BotCity Runner dentro dela, sem intervenção manual. A configuração usa duas tarefas no Agendador de Tarefas do Windows:

  • Start - RDP: executada na inicialização da máquina (At startup), abre uma sessão de usuário via RDP apontando para a própria máquina (localhost).
  • Start - Runner: executada no logon (At log on), inicia o Runner dentro da sessão criada pela tarefa anterior.

Como funciona o encadeamento

A tarefa Start - RDP não inicia o Runner. Ela apenas abre a sessão de usuário que fornece a interface gráfica de que o Runner precisa. A abertura dessa sessão gera um evento de logon no Windows, e é esse evento que dispara a tarefa Start - Runner. Assim, o Runner sempre é iniciado dentro de uma sessão gráfica válida.

Combinar com os scripts de desconexão

Essa configuração resolve o início da sessão quando a VM é ligada ou reiniciada. Se alguém se conectar à máquina depois e encerrar a conexão RDP, a tela volta a ficar preta. Para manter a sessão ativa nesse caso, use também os scripts de desconexão de sessão.

Passo 1: Criar o script start_rdp.bat

Crie o arquivo start_rdp.bat com o conteúdo abaixo, substituindo username e password pelo usuário e pela senha usados para acessar a VM:

cmdkey /generic:"localhost" /user:"username" /pass:"password"
mstsc /v:localhost
cmdkey /delete:localhost

O script salva a credencial, abre a conexão RDP com a própria máquina e remove a credencial em seguida.

Passo 2: Criar a tarefa Start - RDP

No Agendador de Tarefas do Windows, crie uma nova tarefa com as configurações abaixo:

  • General:
    • Name: Start - RDP
    • When running the task, use the following user account: usuário administrador da VM (ex.: Administrator)
    • Run whether user is logged on or not: selecionado
    • Run with highest privileges: marcado
  • Triggers: At startup
  • Actions: Start a program, apontando para o arquivo start_rdp.bat (ex.: C:\Users\Administrator\Desktop\start_rdp.bat)

Mantenha os valores padrão nas abas Conditions e Settings.

Executar com privilégios mais altos

Não deixe de marcar a opção Run with highest privileges nesta tarefa e na tarefa do Passo 3.

Passo 3: Criar a tarefa Start - Runner

Crie uma segunda tarefa com as configurações abaixo:

  • General:
    • Name: Start - Runner
    • When running the task, use the following user account: o mesmo usuário informado no start_rdp.bat
    • Run only when user is logged on: selecionado
    • Run with highest privileges: marcado
  • Triggers: At log on, para o mesmo usuário (ex.: At log on of <MÁQUINA>\Administrator)
  • Actions: Start a program, apontando para o arquivo BotRunner.bat na pasta de instalação do BotCity Studio SDK
  • Settings: desmarque todas as opções:
    • Allow task to be run on demand
    • Run task as soon as possible after a scheduled start is missed
    • If the task fails, restart every
    • Stop the task if it runs longer than
    • If the running task does not end when requested, force it to stop
    • If the task is not scheduled to run again, delete it after

Passo 4: Verificar a configuração

Reinicie a VM e aguarde a inicialização, sem se conectar a ela.

Configuração concluída

A VM abre sozinha uma sessão gráfica de usuário, o BotCity Runner é iniciado dentro dessa sessão e aparece online no Orquestrador, pronto para executar automações que dependem de recursos visuais.