Saltar a contenido

Iniciar y mantener activa la sesión del Runner

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.

BotCity Session Manager

Session Manager monitorea la cola de tareas en tiempo real, activando recursos a medida que la cola crece y desactivándolos cuando disminuye la demanda. Está optimizado para proporcionar una asignación de recursos oportuna, reduciendo el tiempo de inactividad y asegurando la disponibilidad de recursos cuando sea necesario.

Script de desconexión de sesión

Tip

Los scripts de sesión aún son compatibles, pero recomendamos el uso del BotCity Session Manager como una solución más robusta y escalable.

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

Tip

Los scripts de sesión aún son compatibles, pero recomendamos el uso del BotCity Session Manager como una solución más robusta y escalable.

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

Iniciar la sesión y el Runner automáticamente en la VM

Prefiera el Session Manager

Recomendamos el BotCity Session Manager como la solución más robusta y escalable. Use la configuración a continuación cuando el Session Manager no sea una opción en su entorno.

Esta opción configura una VM Windows para que, al encenderse o reiniciarse, abra por sí sola una sesión gráfica de usuario e inicie el BotCity Runner dentro de ella, sin intervención manual. La configuración usa dos tareas en el Programador de tareas de Windows:

  • Start - RDP: se ejecuta al iniciar la máquina (At startup) y abre una sesión de usuario vía RDP apuntando a la propia máquina (localhost).
  • Start - Runner: se ejecuta al iniciar sesión (At log on) e inicia el Runner dentro de la sesión creada por la tarea anterior.

Cómo funciona el encadenamiento

La tarea Start - RDP no inicia el Runner. Solo abre la sesión de usuario que proporciona la interfaz gráfica que el Runner necesita. La apertura de esa sesión genera un evento de inicio de sesión en Windows, y ese evento es el que dispara la tarea Start - Runner. Así, el Runner siempre se inicia dentro de una sesión gráfica válida.

Combinar con los scripts de desconexión

Esta configuración resuelve el inicio de la sesión cuando la VM se enciende o se reinicia. Si alguien se conecta a la máquina después y cierra la conexión RDP, la pantalla vuelve a quedar negra. Para mantener la sesión activa en ese caso, use también los scripts de desconexión de sesión.

Paso 1: Crear el script start_rdp.bat

Cree el archivo start_rdp.bat con el contenido a continuación, reemplazando username y password por el usuario y la contraseña utilizados para acceder a la VM:

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

El script guarda la credencial, abre la conexión RDP con la propia máquina y luego elimina la credencial.

Paso 2: Crear la tarea Start - RDP

En el Programador de tareas de Windows, cree una nueva tarea con la configuración a continuación:

  • General:
    • Name: Start - RDP
    • When running the task, use the following user account: usuario administrador de la VM (ej.: Administrator)
    • Run whether user is logged on or not: seleccionado
    • Run with highest privileges: marcado
  • Triggers: At startup
  • Actions: Start a program, apuntando al archivo start_rdp.bat (ej.: C:\Users\Administrator\Desktop\start_rdp.bat)

Mantenga los valores predeterminados en las pestañas Conditions y Settings.

Ejecutar con los privilegios más altos

No olvide marcar la opción Run with highest privileges en esta tarea y en la tarea del Paso 3.

Paso 3: Crear la tarea Start - Runner

Cree una segunda tarea con la configuración a continuación:

  • General:
    • Name: Start - Runner
    • When running the task, use the following user account: el mismo usuario indicado en start_rdp.bat
    • Run only when user is logged on: seleccionado
    • Run with highest privileges: marcado
  • Triggers: At log on, para el mismo usuario (ej.: At log on of <MÁQUINA>\Administrator)
  • Actions: Start a program, apuntando al archivo BotRunner.bat en la carpeta de instalación del SDK de BotCity Studio
  • Settings: desmarque todas las opciones:
    • 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

Paso 4: Verificar la configuración

Reinicie la VM y espere a que se inicie, sin conectarse a ella.

Configuración completada

La VM abre por sí sola una sesión gráfica de usuario, el BotCity Runner se inicia dentro de esa sesión y aparece en línea en el Orquestador, listo para ejecutar automatizaciones que dependen de recursos visuales.