Hola a todos,
Hace unos meses publiqué un ejemplo en el que utilizaba Power Automate, Azure AI Foundry y un Custom Connector para generar y enviar de forma masiva correos de onboarding a nuevos empleados. En aquel flujo, los datos procedían de Dataverse, recorríamos cada registro y un modelo de IA se encargaba de redactar directamente el correo de bienvenida antes de enviarlo con Outlook: CREAR CORREOS DE ONBOARDING CON POWER AUTOMATE, AZURE AI FOUNDRY Y CUSTOM CONNECTORS
Pero hoy he querido mejorarlo, y de forma contundente 🙂
No solo he cambiado la lógica del proceso, sino también la forma de conectarme con los modelos. En lugar de reutilizar el Custom Connector del ejemplo anterior, he creado una nueva integración para trabajar directamente con los modelos desplegados en Azure AI Foundry.
Además, en lugar de pedir a un único modelo que reciba los datos y redacte directamente el correo, vamos a separar el proceso en dos fases y utilizar dos modelos distintos.
Por un lado, GPT-6 Astra analizará la información del empleado y definirá cómo debería plantearse su onboarding: tono, enfoque, aspectos que conviene destacar, primeros pasos e incluso el asunto del correo.
Después, GPT-6 Sol utilizará ese análisis para redactar el mensaje final en HTML, listo para ser enviado desde Power Automate.
El objetivo es que la IA no se limite simplemente a escribir un correo, sino que primero analice el contexto y tome decisiones sobre cómo personalizarlo.
El flujo que vamos a construir será, de forma simplificada e ilustrada:

Al igual que en el ejemplo anterior, podremos ejecutar todo el proceso directamente desde Power Apps y recorrer todos los empleados de la tabla para generar y enviar los mensajes de forma automática.
Vamos a verlo paso a paso.
Esta sería la imagen de la App, que muestra todos los empleados a los que vamos a enviar nuestro correo y un botón para iniciar el flujo que lo hará posible:

Toda la información de los empleados está en Dataverse (en una tabla), pero perfectamente se puede hacer el mismo proceso con SharePoint.
Este es el flujo: ONBOARDING_ASTRA

Os dejo los códigos como siempre para que sea más sencillo:
1. POWER APPS (V2)
Desencadenador del flujo desde Power Apps.
No necesita parámetros de entrada.
2. ENUMERAR FILAS
Conector:
Microsoft Dataverse
Tabla:
BaseEmpleados
3. SELECCIONAR
Desde:
EXPRESIÓN
outputs('Enumerar_filas')?['body/value']
Nombre:
EXPRESIÓN
item()?['cr8d5_firstname']
Apellidos:
EXPRESIÓN
item()?['cr8d5_lastname']
Departamento:
EXPRESIÓN
item()?['cr8d5_department']
Puesto:
EXPRESIÓN
item()?['cr8d5_jobtitle']
Gestor:
EXPRESIÓN
item()?['cr8d5_managername']
HUB:
EXPRESIÓN
item()?['cr8d5_hublocation']
Fecha incorporacion:
EXPRESIÓN
item()?['cr8d5_hiredate']
Mail del gestor:
EXPRESIÓN
item()?['cr8d5_manageremail']
Email:
EXPRESIÓN
item()?['cr8d5_emailaddress']
4. APLICAR A CADA UNO
Entrada:
EXPRESIÓN
body('Seleccionar')
5. HTTP ASTRA
Método:
POST
URI:
[OCULTA]
Encabezados:
Content-Type
application/json
api-key
[OCULTA]
Cuerpo:
{
"model": "gpt-6-astra",
"input": [
{
"role": "system",
"content": "Eres un especialista senior en People & Culture y procesos de onboarding. Tu tarea es analizar los datos de un nuevo empleado y diseñar una estrategia breve y personalizada para su correo de bienvenida. No debes redactar todavía el correo completo. No inventes información corporativa, herramientas, políticas, reuniones, beneficios, sistemas internos ni datos que no hayan sido proporcionados."
},
{
"role": "user",
"content": "Analiza los datos del siguiente empleado:\n\n@{items('Aplicar_a_cada_uno')}\n\nA partir exclusivamente de estos datos, determina:\n1. Un asunto personalizado para el correo.\n2. El tono más apropiado.\n3. El enfoque principal del mensaje.\n4. Tres aspectos que conviene destacar.\n5. Tres primeros pasos generales y razonables para sus primeros días.\n6. Una frase inicial personalizada.\n7. Una frase final personalizada.\n\nAdapta el análisis especialmente al puesto, departamento y HUB del empleado.\nNo inventes información sobre la empresa ni sobre el funcionamiento concreto del departamento.\nNo inventes herramientas, reuniones, accesos, procesos, beneficios ni políticas.\nMantén exactamente los datos del gestor recibidos."
}
],
"reasoning": {
"effort": "medium"
},
"text": {
"format": {
"type": "json_schema",
"name": "analisis_onboarding",
"schema": {
"type": "object",
"properties": {
"asunto": {
"type": "string"
},
"tono": {
"type": "string"
},
"enfoque": {
"type": "string"
},
"aspectos_destacados": {
"type": "array",
"items": {
"type": "string"
}
},
"primeros_pasos": {
"type": "array",
"items": {
"type": "string"
}
},
"frase_inicial": {
"type": "string"
},
"frase_final": {
"type": "string"
}
},
"required": [
"asunto",
"tono",
"enfoque",
"aspectos_destacados",
"primeros_pasos",
"frase_inicial",
"frase_final"
],
"additionalProperties": false
},
"strict": true
}
}
}
6. JSON ASTRA
Acción:
Componer
EXPRESIÓN
json(
last(body('HTTP_ASTRA')?['output'])?['content']?[0]?['text']
)
7. HTTP GPT6 SOL
Método:
POST
URI:
[OCULTA]
Encabezados:
Content-Type
application/json
api-key
[OCULTA]
Cuerpo:
{
"model": "gpt-6-sol",
"input": [
{
"role": "system",
"content": "Eres el departamento de People & Culture de Weyland-Yutani Corporation. Tu tarea es redactar correos de onboarding personalizados, profesionales, cercanos y naturales. Debes utilizar únicamente la información proporcionada y no inventar datos corporativos, políticas, herramientas, reuniones, beneficios, accesos ni procesos internos."
},
{
"role": "user",
"content": "Redacta el correo de onboarding para este empleado.\n\nDATOS DEL EMPLEADO:\n@{items('Aplicar_a_cada_uno')}\n\nANÁLISIS PREVIO REALIZADO POR GPT-6 ASTRA:\n\nAsunto:\n@{outputs('JSON_ASTRA')?['asunto']}\n\nTono:\n@{outputs('JSON_ASTRA')?['tono']}\n\nEnfoque:\n@{outputs('JSON_ASTRA')?['enfoque']}\n\nAspectos destacados:\n@{join(outputs('JSON_ASTRA')?['aspectos_destacados'], ' | ')}\n\nPrimeros pasos:\n@{join(outputs('JSON_ASTRA')?['primeros_pasos'], ' | ')}\n\nFrase inicial:\n@{outputs('JSON_ASTRA')?['frase_inicial']}\n\nFrase final:\n@{outputs('JSON_ASTRA')?['frase_final']}\n\nINSTRUCCIONES:\n- No incluyas asunto.\n- Devuelve únicamente el cuerpo del correo.\n- Da la bienvenida al empleado por su nombre.\n- Menciona de forma natural su departamento, puesto, HUB y fecha de incorporación.\n- Utiliza el tono y enfoque definidos por Astra.\n- Incorpora los aspectos destacados de manera natural.\n- Incluye los primeros pasos como recomendaciones generales de incorporación.\n- No presentes esas recomendaciones como políticas oficiales.\n- No inventes herramientas, reuniones, accesos, procesos, beneficios ni información corporativa.\n- Debes mencionar siempre al gestor.\n- Usa exactamente el nombre del gestor y su correo.\n- Preséntalo como persona de referencia durante los primeros días.\n- Extensión aproximada: 180-230 palabras.\n\nFORMATO:\nDevuelve exclusivamente HTML simple.\nUsa <p> para párrafos.\nUsa <strong> para elementos relevantes.\nUsa <ul> y <li> para los primeros pasos.\nNo incluyas <html> ni <body>.\n\nFirma:\nPeople & Culture\nWeyland-Yutani Corporation"
}
]
}
8. HTML CORREO
Acción:
Componer
EXPRESIÓN
last(
body('HTTP_GPT6_SOL')?['output']
)?['content']?[0]?['text']
9. ENVIAR CORREO ELECTRÓNICO (V2)
Conector:
Microsoft 365 Outlook
Para:
EXPRESIÓN
items('Aplicar_a_cada_uno')?['Email']
Asunto:
EXPRESIÓN
outputs('JSON_ASTRA')?['asunto']
Cuerpo:
EXPRESIÓN
outputs('HTML_CORREO')
Es decir que desde el momento que pulsamos el botón de Power Apps (con este código):
Propiedad OnSelect del botón:
Set(
varEnvio;
ONBOARDING_ASTRA.Run()
);;
Notify(
"Proceso de onboarding iniciado";
NotificationType.Success
)
Una vez creado el flujo, es importante entender qué cambia realmente con la incorporación de GPT-6 Astra. Para cada empleado vamos a obtener un análisis previo de su onboarding. Astra no redacta directamente el correo, sino que interpreta la información disponible y determina elementos como el asunto, el tono, el enfoque del mensaje, los puntos que conviene destacar, los primeros pasos recomendados y las frases de apertura y cierre.
Ese análisis se devuelve de forma estructurada en un objeto JSON, que utilizaremos como entrada para GPT-6 Sol. A partir de esa información, Sol será el encargado de redactar el correo final en formato HTML, respetando tanto los datos originales del empleado como las recomendaciones generadas previamente por Astra.
De esta forma, el proceso deja de consistir simplemente en enviar unos datos a un modelo para obtener un texto. Ahora trabajamos en dos fases claramente diferenciadas: primero análisis y decisión con GPT-6 Astra y, posteriormente, generación del contenido final con GPT-6 Sol.
Ambos modelos (astra y sol) los he desplegado previamente en Foundry para poder utilizarlos en esta herramienta.
Para ver un ejemplo nos fijaremos en los elementos que componen la información de Ana:

Y esta sería la carta que Sol ha generado con la ayuda del análisis que le ha hecho Astra:

Espero que sea de utilidad!!
