Ir para o conteúdo

Mantendo a sua sessão remota 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.

Script de desconexão de sessão

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

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