Saltar a contenido

Mantener activa tu sesión remota

Cuando ejecutas BotCity Runner en Windows bajo Remote Desktop Connection, es importante prestar atención al hecho de que cuando se cierra la conexión, el sistema operativo hace que la pantalla se ponga en negro.

Cuando esto sucede, los bots ya no pueden capturar la pantalla y ejecutar la automatización correctamente si tu automatización requiere recursos gráficos.

En las siguientes secciones describiremos algunos enfoques para resolver este problema.

Script de desconexión de sesión

Esta opción consiste en tener un script de PowerShell que mueve la conexión RDP actual a una conexión de terminal y desconecta la conexión actual sin bloquear la interfaz de usuario.

Dentro de la carpeta donde se llevó a cabo la instalación del SDK de BotCity Studio, encontraremos una carpeta con el nombre startup y dentro de ella un script llamado startup.bat con el siguiente contenido:

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

Configuración de inicio

BotCity Runner ofrece un gancho para activar un script de inicio que se ejecuta cuando Runner está listo para procesar tareas.

De esta manera, podemos configurar Runner para ejecutar el script startup.bat y llevar a cabo el proceso de desconexión del usuario.

Para ello, ve a tu archivo ./conf/conf.bcf y agrega un nuevo parámetro llamado startup.

Tu archivo de configuración debería verse así:

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

Important

La próxima vez que inicies BotCity Runner, ejecutará el script para cerrar tu conexión RDP mientras mantiene la sesión activa automáticamente.

Al utilizar este enfoque, la desconexión de un usuario siempre debe hacerse de esta manera para asegurar que se habilite el acceso a los recursos gráficos de la máquina.

Si necesita acceder a este usuario y no desea reiniciar el Runner para desconectar la sesión, simplemente ejecute el script startup.bat, que la sesión se desconectará de la misma manera.

Aviso

Dependiendo del nivel de permisos del usuario, puede ser necesario ejecutar Runner con permisos de administrador para que el script startup se ejecute correctamente.

Script de configuración del ambiente

Además de poder configurar un script para ejecutarse tan pronto como Runner se inicie, también podemos configurar que se realice alguna acción a través de un script antes de comenzar a ejecutar una tarea.

Dentro de la carpeta donde se llevó a cabo la instalación del SDK de BotCity Studio, encontraremos una carpeta con el nombre scripts y dentro de ella un script llamado console_session.bat con el siguiente contenido:

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

Atención

Si recibe un error al ejecutar el comando Set-DisplayResolution, preste atención a los puntos a continuación:

  • Para el servidor Windows 10 y 11 El comando para definir la resolución es Set-ScreenResolution . De esta manera, debe usarse de la siguiente manera: Set-ScreenResolution -Width 1600 -Height 900

  • En algunos casos, el módulo DisplaySettings puede no haberse instalado de forma predeterminada en PowerShell. De esta manera, es necesario hacer la instalación utilizando el comando: Install-Module -Name DisplaySettings

Este script básicamente tiene la misma función que el script startup que vimos anteriormente; moverá la conexión RDP actual a una conexión de terminal y desconectará la conexión actual sin bloquear la interfaz de usuario. Además, podemos definir una resolución específica que se utilizará en esta sesión que estará activa.

En lugar de ejecutar este script cuando Runner se inicia, vamos a configurarlo para que se ejecute antes de que Runner ejecute cada tarea.

En el archivo ./conf/conf.bcf, agregaremos un nuevo parámetro llamado beforeTask, que recibirá la ruta de este script que se ejecutará.

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

Aviso

Dependiendo del nivel de permiso del usuario, puede ser necesario iniciar el corredor con el permiso del administrador para que el script beforeTask se realice correctamente.

Tip

Este script es solo una sugerencia del tipo de configuración que se puede realizar.

Puedes cambiar y configurar el script para ajustar el ambiente según tus necesidades.

Máquina RDP principal

Esta opción consiste en tener una máquina con Windows con una conexión RDP constante con las otras máquinas para mantener la conexión activa y en funcionamiento sin necesidad de que un usuario esté conectado a ellas.

Instalación de RDCMan

Remote Desktop Connection Manager es una aplicación de Microsoft que te permite administrar múltiples conexiones RDP. Después de instalarlo en la máquina PRINCIPAL, se establecen conexiones con las máquinas HOST que ejecutan las automatizaciones.

Aquí tienes un enlace para descargar la última versión de RDCMan.

Después de descargar el archivo, solo necesitas extraerlo y ejecutar RDCMan.exe desde la carpeta extraída.

Agregar una nueva máquina

Crea un nuevo archivo machines.rdg y guárdalo en la misma carpeta que RDCMan:

Nuevo archivo

En el panel izquierdo, haz clic derecho en el área vacía y selecciona Add Server.

Agregar servidor

Configura el acceso a la máquina HOST:

Configurar Host

Warning

Los siguientes pasos son clave para el correcto funcionamiento de RDCMan.

Sígalos cuidadosamente.

  • En el nombre del servidor, solo necesitas usar la dirección IP de la máquina:

Configurar IP

  • Configura la resolución en la pestaña "Remote Desktop Settings" a 1600x900.

Info

Cambia esto según la resolución de tu proyecto. 1600x900 es el estándar recomendado por BotCity.

Configurar resolución

  • Desactiva "Clipboard" en la pestaña "Local Resources"

Configurar recursos

Configuración de la máquina PRINCIPAL para mantenerse activa

Configuración de la máquina PRINCIPAL para mantener las sesiones RDP activas incluso si no hay conexiones RDP activas a ella.

Cambia la configuración del registro de la computadora local

  1. En tu computadora local, cierra todas las sesiones abiertas de desktop remoto .
  2. Abre el editor del Registro (regedit.exe).
  3. Navega hasta una de las siguientes claves del Registro, dependiendo de si deseas modificar la configuración de desktop Remoto solo para el usuario actual o para todos los usuarios en la computadora:

    HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client Cambia esta HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client

  4. Crea un valor DWORD llamado RemoteDesktop_SuppressWhenMinimized y configúralo en 2 (hexadecimal o decimal): Regedit

  5. Cierra el Editor del Registro.

Ahora, cuando minimices la ventana de Conexión de desktop remoto en tu computadora, esto no afectará la interfaz gráfica de la computadora remota y la interfaz estará disponible para tus automatizaciones.

Procedimiento para mantener las máquinas HOST activas

  1. Conéctate a la máquina PRINCIPAL
  2. Conéctate a todas las máquinas HOST utilizando RDPMan
  3. Desconéctate de la máquina PRINCIPAL