Envía notificaciones de FyneDesk a Microsoft Teams
Recibe un mensaje en tu canal de Teams cada vez que se crea un ticket, se comenta o cambia de estado. FyneDesk envía el evento a un webhook, y un breve flujo de Power Automate lo convierte en un mensaje de Teams. Sigue los pasos a continuación en orden: toma unos diez minutos.
Cómo funciona
FyneDesk envía cada evento (ticket nuevo, comentario nuevo, etc.) como un pequeño paquete de datos JSON a la URL que proporciones. Microsoft Teams no muestra ese paquete por sí solo: tu flujo de Power Automate tiene que tomar los datos y publicarlos como un mensaje.
Por eso una prueba puede decir "enviado correctamente" mientras nada aparece en Teams: Power Automate responde 202 Accepted en el instante en que recibe una solicitud, así que "éxito" solo significa que Microsoft recibió los datos. No dice nada sobre si se publicó un mensaje. Una vez que agregues el paso de publicación en la Parte 3, los mensajes aparecerán.
Antes de empezar
- Un equipo y canal de Microsoft Teams donde quieras las notificaciones, y una cuenta de Power Automate con una licencia que pueda publicar en Teams.
- Acceso de administrador a los webhooks de FyneDesk, en Configuración de administrador → Avanzado → Webhooks (también accesible desde Configuración → Conexiones → Webhooks).
- Unos diez minutos. Crearás un flujo a partir de una plantilla lista para usar, pegarás su URL en FyneDesk y luego agregarás un paso que publica el mensaje.
Cómo configurarlo
Esta es la ruta exacta que usa nuestro equipo, de principio a fin. Produce un mensaje de texto simple y legible. (¿Quieres que el mensaje nombre cada tipo de evento, o prefieres una tarjeta con formato? Consulta las opciones avanzadas a continuación.)
Parte 1 — Crea el flujo a partir de una plantilla
Ve a make.powerautomate.com e inicia sesión. En el menú de la izquierda elige Plantillas, escribe webhook en el cuadro de búsqueda y abre Enviar alertas de webhook a un canal — la versión simple, no las versiones "(TEST)". Haz clic en Continuar (vuelve a iniciar sesión si te lo pide).
La plantilla muestra que conectará Teams → Microsoft Teams y generará una URL de webhook. Antes de hacer clic en Crear, define el Equipo y el Canal donde quieres que se publiquen las notificaciones — esto es fácil de pasar por alto, y es importante.
Elige tu Equipo y canal, luego haz clic en Crear. Cuando se abra el flujo, haz clic en Editar para empezar a editarlo.
Parte 2 — Dale la URL a FyneDesk
En el flujo, haz clic en el primer cuadro, "Cuando se recibe una solicitud de webhook de Teams," y copia la URL HTTP que muestra.
Luego, en FyneDesk, ve a Configuración de administrador → Avanzado → Webhooks y haz clic en Agregar webhook:
- Ponle un nombre que reconozcas más adelante, por ejemplo Microsoft Teams.
- Pega la URL de Power Automate en URL del endpoint (debe ser un enlace HTTPS).
- Deja marcado
ticket.created— eso es todo lo que necesitas para empezar. (Puedes agregar más eventos después.) - Haz clic en Guardar.
Parte 3 — Dile al flujo qué publicar
Este es el paso que es fácil de pasar por alto — y es exactamente por eso que una prueba puede decir "enviado" mientras nada aparece en Teams.
1. Elimina los dos pasos predefinidos. La plantilla agrega una acción Inicializar variable (a veces dos) y una condición Attachments is null. Elimina ambos — haz clic en los … de cada paso, luego en Eliminar. Dejarlos es lo que provoca el error de "AdaptiveCard".
2. Agrega la acción de publicación. Haz clic en el + debajo del disparador y elige Publicar mensaje en un chat o canal (el conector de Microsoft Teams). Configura los menús desplegables:
| Campo | Establece en |
|---|---|
| Publicar como | Bot de flujo |
| Publicar en | Canal |
| Equipo | Tu equipo |
| Canal | El canal donde quieres las notificaciones |
3. Construye el mensaje. Haz clic dentro del cuadro Mensaje, haz clic en el botón azul fx (Insertar expresión), pega la expresión de abajo exactamente, luego haz clic en Agregar.
concat('New ticket ', triggerBody()?['data']?['ticket_number'], ' - ', triggerBody()?['data']?['title'], ' | Status: ', triggerBody()?['data']?['status'], ' | Priority: ', triggerBody()?['data']?['priority'], ' | https://fynedesk.ai/tickets/', string(triggerBody()?['data']?['id']))
4. Guarda. Haz clic en Guardar (arriba a la derecha). Deberías ver "Tu flujo está listo."
- Inserta siempre la expresión con el botón fx — nunca la escribas como texto plano, y nunca la envuelvas en
@{ }. - Si en algún momento usaste un cuadro de Copilot, borra el campo Comentario de ese paso antes de guardar. Una nota larga allí (de más de 256 caracteres) bloquea el guardado silenciosamente.
Parte 4 — Prueba
Crea o actualiza un ticket real en FyneDesk. Un mensaje aparece en tu canal de Teams en unos segundos.
ping sin número de ticket ni título, así que el mensaje de prueba se ve escaso (en su mayoría campos en blanco). Eso es lo esperado. La verdadera comprobación es crear o comentar un ticket real y observar el canal. Opcional: etiqueta cada evento, o publica una tarjeta
La expresión anterior siempre empieza con "New ticket". Si prefieres que el mensaje nombre el evento (nuevo comentario, cambio de estado, etc.) o prefieres una tarjeta con formato, usa una de las opciones de abajo. La configuración es idéntica — solo cambia la expresión del Mensaje.
Lo que envía FyneDesk
Tu webhook puede suscribirse a cuatro eventos. Esta es la forma de cada paquete (los valores son ejemplos).
ticket.created
{
"event": "ticket.created",
"timestamp": "2026-05-30T22:19:59",
"organization": { "id": 173, "name": "SafePACS" },
"data": {
"id": 6381,
"ticket_number": "INC004736",
"title": "Printer not working",
"description": "The 3rd floor printer is offline",
"status": "New",
"priority": "Medium",
"ticket_type": "Incident",
"source": "Email",
"created_at": "2026-05-30T22:19:59"
}
}ticket.updated y ticket.status_changed usan la misma forma que la anterior, más updated_at, assigned_to y assigned_team_id.
ticket.commented — ten en cuenta que aquí los nombres de los campos son ligeramente diferentes:
{
"event": "ticket.commented",
"timestamp": "2026-05-30T22:19:59",
"organization": { "id": 173, "name": "SafePACS" },
"data": {
"ticket_id": 6381,
"ticket_number": "INC004736",
"ticket_title": "Printer not working",
"ticket_status": "New",
"content": "Any update on this?",
"comment_id": 8809,
"is_internal": false
}
}coalesce(...) para recurrir a alternativas entre los distintos nombres de campos, de modo que un solo flujo cubre cada tipo de evento. Para usarlas, marca los eventos adicionales en tu webhook de FyneDesk (Parte 2).
Opción A — Un mensaje de texto más completo
En lugar de la expresión única, escribe el diseño de abajo en el cuadro Mensaje. Todo lo que no sea un 〈marcador〉 es texto plano que escribes. Para cada 〈marcador〉, haz clic en el botón fx, pega la expresión correspondiente de la tabla, luego haz clic en Agregar.
〈eventLabel〉 〈ticketNumber〉
〈title〉
Status: 〈status〉 • Priority: 〈priority〉
〈message〉
Open in FyneDesk: 〈link〉| Marcador | Pega esto en el cuadro de expresión fx |
|---|---|
| 〈eventLabel〉 | if(equals(triggerBody()?['event'],'ticket.created'),'🎫 New ticket',if(equals(triggerBody()?['event'],'ticket.commented'),'💬 New comment',if(equals(triggerBody()?['event'],'ticket.status_changed'),'🔄 Status changed','✏️ Ticket updated'))) |
| 〈ticketNumber〉 | triggerBody()?['data']?['ticket_number'] |
| 〈title〉 | coalesce(triggerBody()?['data']?['title'],triggerBody()?['data']?['ticket_title'],'(no title)') |
| 〈status〉 | coalesce(triggerBody()?['data']?['status'],triggerBody()?['data']?['ticket_status'],'-') |
| 〈priority〉 | coalesce(triggerBody()?['data']?['priority'],'-') |
| 〈message〉 | coalesce(triggerBody()?['data']?['content'],triggerBody()?['data']?['description'],'') |
| 〈link〉 | concat('https://fynedesk.ai/',if(equals(triggerBody()?['data']?['ticket_type'],'Service Request'),'requests/','tickets/'),string(coalesce(triggerBody()?['data']?['id'],triggerBody()?['data']?['ticket_id']))) |
Opción B — Una tarjeta con formato
¿Prefieres una tarjeta? Usa la acción Publicar tarjeta en un chat o canal y pega lo siguiente en el campo Tarjeta adaptable. Usa las mismas expresiones, así que son los mismos datos en un diseño más ordenado.
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.2",
"body": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "@{if(equals(triggerBody()?['event'],'ticket.created'),'🎫 New ticket',if(equals(triggerBody()?['event'],'ticket.commented'),'💬 New comment',if(equals(triggerBody()?['event'],'ticket.status_changed'),'🔄 Status changed','✏️ Ticket updated')))} @{triggerBody()?['data']?['ticket_number']}"
},
{
"type": "TextBlock",
"text": "@{coalesce(triggerBody()?['data']?['title'],triggerBody()?['data']?['ticket_title'],'(no title)')}",
"wrap": true
},
{
"type": "FactSet",
"facts": [
{ "title": "Status", "value": "@{coalesce(triggerBody()?['data']?['status'],triggerBody()?['data']?['ticket_status'],'-')}" },
{ "title": "Priority", "value": "@{coalesce(triggerBody()?['data']?['priority'],'-')}" }
]
},
{
"type": "TextBlock",
"text": "@{coalesce(triggerBody()?['data']?['content'],triggerBody()?['data']?['description'],'')}",
"wrap": true
}
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "Open in FyneDesk",
"url": "@{concat('https://fynedesk.ai/',if(equals(triggerBody()?['data']?['ticket_type'],'Service Request'),'requests/','tickets/'),string(coalesce(triggerBody()?['data']?['id'],triggerBody()?['data']?['ticket_id'])))}"
}
]
}Solución de problemas
Los mensajes siguen sin aparecer — soluciones comunes
Recibes un error de "AdaptiveCard", o el flujo se ejecuta pero nunca publica. Los pasos predefinidos de la plantilla Inicializar variable y Attachments is null causan esto. Elimina ambos (Parte 3, paso 1) y publica tu mensaje con una sola acción Publicar mensaje en un chat o canal en su lugar.
El flujo no se guarda. Si probaste Copilot en algún momento, borra el campo Comentario de ese paso — una nota de más de 256 caracteres bloquea el guardado silenciosamente.
Nada en Teams después de una acción de ticket real. En Power Automate, abre tu flujo y revisa el Historial de ejecuciones (el registro de 28 días). Cada evento de FyneDesk debería mostrar una ejecución. Ninguna ejecución significa que el webhook de FyneDesk no apunta a la URL de este flujo, o no está suscrito a ese evento — vuelve a revisarlo en FyneDesk. Las ejecuciones muestran "Error" significa que un paso falló; haz clic en una para ver cuál. Normalmente es que el Equipo o el Canal no están seleccionados, o que el propietario del flujo carece de una licencia de Power Automate.
Se publica un mensaje, pero algunos campos están en blanco. Distintos eventos llevan distintos campos (un comentario no tiene priority, por ejemplo). Las expresiones coalesce(...) de las opciones avanzadas recurren a alternativas con elegancia, así que un campo en blanco solo significa que ese evento no incluía ese campo.
Una expresión muestra un error en rojo. Algunos tipos de disparador exponen el cuerpo como triggerOutputs()?['body'] en lugar de triggerBody(). Si triggerBody() da error, cámbialo — por ejemplo, triggerOutputs()?['body']?['data']?['ticket_number'].
Una nota sobre seguridad
Tu URL de Power Automate contiene una firma secreta (la parte sig=...) — trata toda la URL como una contraseña y no la compartas. FyneDesk también firma cada solicitud con un encabezado X-FyneDesk-Signature (HMAC-SHA256) por si alguna vez quieres verificar la autenticidad dentro del flujo, aunque eso es opcional y no se requiere para que los mensajes empiecen a fluir.
Preguntas frecuentes
FyneDesk dice "enviado correctamente" pero nada aparece en Teams. ¿Por qué?
"Enviado correctamente" solo significa que Microsoft recibió los datos — Power Automate responde 202 Accepted en el momento en que recibe una solicitud. No significa que se haya publicado un mensaje. Teams no mostrará el JSON crudo por sí solo; tu flujo necesita una acción Publicar mensaje en un chat o canal para darle formato y publicarlo.
¿Qué plantilla de Power Automate debo usar?
Abre Plantillas, busca webhook y elige Enviar alertas de webhook a un canal — la versión simple, no las versiones "(TEST)". Genera la URL de webhook que pegas en FyneDesk y te deja elegir el Equipo y el canal donde publicar.
¿Por qué recibo un error de "AdaptiveCard", o por qué el flujo nunca publica?
La plantilla incluye dos pasos predefinidos — una acción Inicializar variable y una condición Attachments is null — y eso es lo que causa el error de AdaptiveCard. Elimina ambos, luego agrega una sola acción Publicar mensaje en un chat o canal con tu propia expresión de mensaje.
¿Puede FyneDesk publicar en Teams sin Power Automate?
Sí — FyneDesk ahora tiene una app nativa de Microsoft Teams que publica tarjetas de notificación de tickets directamente en tus canales, en los planes Pro y Business, sin ningún flujo que construir. La ruta de webhook + Power Automate de esta página sigue funcionando y resulta útil cuando quieres control total sobre el formato y el enrutamiento.
¿Qué eventos de tickets puedo enviar a Teams?
Un webhook de FyneDesk puede enviar ticket.created, ticket.updated, ticket.status_changed y ticket.commented. La configuración recomendada usa ticket.created; las expresiones avanzadas manejan los cuatro automáticamente, de modo que un solo flujo puede cubrir cada evento.