Agendar entrevistas puede ser una tarea sencilla, pero para departamentos como Recursos Humanos se puede convertir en una tarea repetitiva y tediosa con múltiples factores como su apretada agenda, confirmaciones de candidatos o la necesidad de realizar la propuesta con otra fecha.
Con esa necesidad en mente he creado un flujo que permite automatizar la gestión de entrevistas desde un agente conversacional integrado directamente en Teams. El usuario solo tiene que iniciar la conversación con el bot, proporcionar los parámetros solicitados y este será el encargado de enviar los datos al flujo de Power Automate, que se encargará de enviar el correo al candidato y completar el proceso.
Una vez que la persona de Recursos Humanos ha enviado la información, debe mantenerse a la espera hasta que se complete el flujo sin necesidad de volver a intervenir, ya que es el flujo quien se encarga de gestionar la respuesta del candidato y cerrar el proceso.
Aunque esta solución está pensada para entrevistas de Recursos Humanos, es perfectamente aplicable a cualquier otro proceso como sesiones de onboarding, validaciones de disponibilidad o citas con clientes en cualquier sector.
Antes de comenzar a explicar cómo funciona el flujo es importante tener claros los siguientes conceptos.
¿Qué es Copilot Studio?
Es una plataforma low-code de Microsoft que nos permite crear agentes conversacionales. Estos pueden interactuar con clientes y empleados en sitios web, aplicaciones móviles, Microsoft Teams, entre otros canales.
¿Qué es Power Automate?
Es una herramienta low-code de Microsoft que se utiliza para crear diferentes flujos con lo que permite automatizar procesos.
En esta solución, Power Automate se encarga de validar la disponibilidad, enviar correos y gestionar las respuestas del candidato sin intervención manual.
Con estos conceptos claros, ya se puede pasar a explicar cómo está diseñado el flujo para gestionar entrevistas.
Diseño del flujo paso a paso
Flujo de Copilot Studio
El flujo comienza cuando la persona de Recursos Humanos inicia la conversación con el bot. En este momento se inicia el tema “Saludo” en Copilot Studio, que es un tema predeterminado del sistema. Lo he modificado para que ofrezca un saludo más personalizado, incluyendo el nombre del usuario.

Inmediatamente después del saludo, el agente redirige al tema personalizado que he creado llamado “Entrevista RRHH”.

En este tema el bot preguntará a la persona de Recursos Humanos tanto el nombre del candidato como la fecha deseada para la entrevista. Estos datos se guardarán en 2 variables. El bot se encargará de detectar un nombre y una fecha, ya sea una fecha específica como “15/11/2025” o expresiones como “la semana que viene”, y se encargará de transformarlas correctamente.

En este tema el bot preguntará a la persona de Recursos Humanos tanto el nombre del candidato como la fecha deseada para la entrevista. Estos datos se guardarán en 2 variables. El bot se encargará de detectar un nombre y una fecha, ya sea una fecha específica como “15/11/2025” o expresiones como “la semana que viene”, y se encargará de transformarlas correctamente.


A continuación, se envían los datos al flujo de Power Automate.

Primer flujo de Power Automate: propuesta de horarios
Comienza a ejecutarse el primer flujo de Power Automate cuyo desencadenador es “Cuando un agente llama al flujo”. La siguiente acción es “Buscar horas de reunión (V2)” con el conector Office 365 Outlook, al que he especificado los siguientes parámetros:

Fórmula para End time: addDays(triggerBody()?[‘text_1’], 7)
Una vez obtenidas las sugerencias de horarios de reunión, se filtra la matriz según las preferencias de horas que se quieren excluir. Si se tiene definido el horario laboral en Outlook, ya se excluyen las horas no laborales automáticamente. Las salidas de esta matriz se introducen en una variable, y como queremos recoger solo los 3 primeros huecos en el valor de la variable pondremos lo siguiente: take(body(‘Filtrar_matriz’), 3).
Se inicializan dos variables:
- BotonesHTML: de tipo cadena. Se utiliza para construir los botones HTML del correo que se enviará al candidato.
- InformarHuecos: de tipo cadena. Se utiliza para enviar la respuesta al agente.
Ya tenemos el nombre del candidato, pero necesitamos conseguir su correo electrónico. Para ello, usamos la acción “Enumerar filas” (conector Dataverse) sobre la tabla “Contactos”, y en el campo “Capturar consulta XML” se introduce el siguiente fetch:

Seguidamente, se utiliza “Aplicar a cada uno” y “Obtener fila por id” (conector Dataverse). Con esto se obtiene el contacto cuyo nombre coincide con el candidato y sus datos.
Luego se crea otro “Aplicar a cada uno”, pero esta vez para los huecos encontrados anteriormente. Se crea un evento en el calendario de Recursos Humanos para cada hueco. En el título del evento se incluye el nombre del candidato, y se especifican la fecha de inicio y fin.
Por cada hueco, se construye un fragmento HTML con estilo de botón. Este contiene una URL personalizada que apunta a otro flujo de Power Automate (del que hablaremos más adelante). En esta url se pasan los parámetros: fecha y hora de inicio del hueco, email del candidato, nombre del candidato e id del evento creado. En el texto del botón se muestra el rango de fecha y hora del hueco.
Se hace algo similar para la variable informarHuecos, aunque en este caso no se incluye la url, sino simplemente el texto concatenado.
Llegamos al momento de enviar el correo electrónico al candidato. Se especifica: el correo del candidato, un asunto personalizado y el cuerpo del mensaje, junto con la variable botonesHTML. El candidato recibirá el correo con el siguiente aspecto:

Lo último de este flujo es añadir la acción “Responder al agente”, y se le pasa la variable informarHuecos. En Copilot Studio se muestra esta misma variable en un mensaje, para que la persona de Recursos Humanos pueda ver que fechas se le ha propuesto al candidato.


Con esto damos por cerrado el primer flujo de Power Automate y comenzamos con el siguiente.
Segundo flujo Power Automate: confirmación del candidato.
En el correo que he mostrado anteriormente, el candidato tiene la posibilidad de escoger cualquiera de los tres horarios. La primera vez que pulse uno de los botones será la fecha que se confirmará para la reunión.
Cuando el candidato pulsa uno de los botones, se ejecuta el segundo Power Automate.

Este flujo se inicia cuando recibe una solicitud HTTP con los parámetros: hora, usuario, nombre e id (este id hace referencia al id de la entrevista).
La siguiente acción “Obtener entrevistas RRHH”, busca en el calendario eventos cuyo asunto sea “Entrevista confirmada RRHH [nombre]» y que estén programados entre el momento actual y los próximos 100 días.
Si no existe ninguna entrevista confirmada para este candidato, se comprueba si triggerOutputs()?[‘headers’][‘x-ms-activity-vector’] es distinto de 0. Esto sirve para verificar que hay contexto previo y que el flujo se activa como parte de una cadena de automatizaciones o desde otro flujo. Si no hay contexto, el flujo finaliza.
En caso de que, si haya contexto, se buscan los eventos provisionales para ese usuario. Por cada evento encontrado:
– Si la hora coincide con la seleccionada, actualiza el título a “Entrevista confirmada RRHH [nombre del candidato]”.
– Si no coincide, elimina el evento.
Una vez completada esta parte, el flujo responde con una página HTML confirmando la reunión y mostrando la hora seleccionada.

En caso de que ya exista una reunión confirmada, se muestra un mensaje similar al anterior indicando la hora de la entrevista.

Este ha sido solo un ejemplo de cómo combinar Copilot Studio y Power Automate para dejar de hacer tareas repetitivas y que un bot las haga por ti. Así, los equipos pueden enfocarse en lo que realmente importa, sin perder tiempo en gestiones que se pueden automatizar.
Y lo mejor es que, si funciona para entrevistas, imagínate cuántos procesos más se pueden agilizar.







