Cómo enviar mensajes a Microsoft Teams
Hola comunidad,
El objetivo de este artículo es explicar como crear mensajes entre IRIS y Microsoft Teams.
En mi empresa, tenermos que monitorear mensajes de error, y usamos la clase Ens.Alerts para redireccionar esos mensajes a través de un Business Operation que envía un email.
El problema está en que enviamos esos errores a una cuenta de soporte donde habían muchos emails. Queremos algo específico para un específico equipo.
Por lo que investigamos como hacer que esos mensajes lleguén al equpo de desarrollo directamente y ellos pordrían tener, en tiempo real, una notificación de un error en producción.
En nuestra empresa usamos Microsoft Teams como herramienta corportaiva, por lo que nos preguntamos: ¿Cómo podemos hacer que esos mensajes lleguen al equipo de desarrollo de IRIS?
Pasos previos
Por favor, despliegua para saber como configurar vuestro Teams con la app Incoming Webhook.
Pasos previos
Tenemos que crear un equipo en MS Teams o tener ya uno creado donde los miembros de desarrollo tengan acceso.
En este caso, este equipo es llamado "Demo IRIS Teams Adaptor"
.png)
Pulsa el icono ..., selcciona "Manage team" y añadir los miembros del equpo y seleccionar "Apps"
.png)
.png)
Seleccionar "Get more apps"
.png)
Buscar la app "Incoming Webhook", entonces añadimos aplicación
.png)
.png)
.png)
Ahora, vamos a configurar el conector. Ponemos un monbre para tu Webhook entrante.
.png)
Ahora, se créa el webhook y nos muestra el link de tu webhook. Copia el enlace.
.png)
Cuand hayas copiado el enlace, presiona "Done". Comprueba que tengas el Webhook configurado. Si quieres obtener el enlace de nuevo, presiona el botón "Manager" de tu nuevo webhook.
.png)
El enlace tiene (mas o menos) el siguiente aspecto.
https://YOURCOMPANY.webhook.office.com/webhookb2/40cc6704-1bc5-4f87-xxxx-xxxxxxxxf@5xxxxxa-643b-47a3-xxxxx-fc962cc7cdb2/IncomingWebhook/6f272d796f1844b8b0b57b61365f8961/2ff46079-ee4a-442b-a642-dc418f6c67eeLa primera parte es el enlace de tu servidor, la segunda, es el identificador de tu equipo. Si tenemos mas de un webhook de diferentes equpos, el servidor será el mismo para todos ellos, solo cambia el identificador IncomigWebhook.
Ahora, recibirás el primer mensaje de la aplicación IncomingWebhook.
.png)
Nota: El enlace Webhook está divido en dos partes. Servidor y URL, recuerda esto cuando vayas a configurar el componente.
https://YOURCOMPANY.webhook.office.com/webhookb2/40cc6704-1bc5-4f87-xxxx-xxxxxxxxf@5xxxxxa-643b-47a3-xxxxx-fc962cc7cdb2/IncomingWebhook/6f272d796f1844b8b0b57b61365f8961/2ff46079-ee4a-442b-a642-dc418f6c67eeServidor: YOURCOMPANY.webhook.office.comURL: /webhookb2/40cc6704-1bc5-4f87-xxxx-xxxxxxxxf@5xxxxxa-643b-47a3-xxxxx-fc962cc7cdb2/IncomingWebhook/6f272d796f1844b8b0b57b61365f8961/2ff46079-ee4a-442b-a642-dc418f6c67eeLlamando a la API webhook
La aplicación de webhook entrante admite las conexiones de tarjetas Office 360. Puedes crear las tarjetas usando el diseñador de adaptivecard
Por lo que, he diseñado la tarjeta para mostrar un mensaje de error (Ens.AlertRequest)
.png)
AdaptiveCard for Ens.AlertRequest
Usando este esquema, puedes crear el mensaje usando los mensajes de St.Teams como este.
setclass=##class(St.Teams.Msg.Adaptive.Request).%New()
setclass.Type = "message"set attach = ##class(St.Teams.Msg.Adaptive.Attachment).%New()
set content = ##class(St.Teams.Msg.Adaptive.Content).%New()
set container = ##class(St.Teams.Msg.Common.Item).%New()
set container.Type = "Container"set item1=##class(St.Teams.Msg.Common.Item).%New()
set item1.Type = "TextBlock"set item1.Text = "Unhandled error"set item1.Weight = "bolder"set item1.Size = "Medium"set item2=##class(St.Teams.Msg.Common.Item).%New()
set item2.Type = "TextBlock"set item2.Text = "St.Teams.BO.MainProcess"set item2.Weight = "bolder"set item2.Size = "small"set item2.IsSubtitle = 1set item3=##class(St.Teams.Msg.Common.Item).%New()
set item3.Type = "TextBlock"set item3.Text = "ERROR <Ens>ErrFTPListFailed: 'Unable to open data connection to 127.0.0. on port 8080',código=425)"set item3.Wrap = 1set factSet=##class(St.Teams.Msg.Common.Item).%New()
set factSet.Type = "FactSet"set factItem1 =##class(St.Teams.Msg.Common.FactItem).%New()
set factItem1.Title = "SessionId"set factItem1.Value = "111"set factItem2 =##class(St.Teams.Msg.Common.FactItem).%New()
set factItem2.Title = "Time"set factItem2.Value = "2024-02-28 11:00:15"do factSet.Facts.Insert(factItem1)
do factSet.Facts.Insert(factItem2)
do container.Items.Insert(item1)
do container.Items.Insert(item2)
do container.Items.Insert(item3)
do container.Items.Insert(factSet)
do content.Body.Insert(container)
set attach.Content = content
doclass.Attachments.Insert(attach)Creará el Json para llamar al webhook. Pero queremos crear el mensaje desde un mensaje Ens.AlertRequest, la mejor manera es usando un Data Transformer.
.png)
Entonces, la regla en tu Ens.Alert debería de ser como esto
.png)
Transformará el Ens.AlertRequest usando el St.Teams.DT.EnsAlertToAdpativeRequest y lo enviará a St.Teams.BO.Api.Teams
Entonces recibirás el mensaje directamente en tu grupo de Teams

Espero que sea tan util como ha sido para nosotros.
Comments
Genial Kurro! Muchas gracias por compartirlo, en mi organización trabajamos con Teams y equipos. Al igual que vosotros enviamos alertas por correo electrónico, pero tener esta opción puede servir para refinar y optimizar cómo tratar ciertos errores de manera más personalizada. 👏
Muchas gracias, espero que os sea de gran utilidad.
Seguiré iterando la app para añadir mas funcionalidades.
¡Suerte con tu artículo en el concurso de artículos técnicos en inglés, Kurro!! Ya he visto que lo has presentado 🙌
Si os animáis los demás... tenéis hasta el día 17 para publicar un artículo en inglés con el tema "Tutoriales de InterSystems IRIS".
Toda la info aquí: Concurso de Artículos Técnicos en Inglés: Tutoriales de InterSystems IRIS (2024)😉
Si quieres saber cómo funciona… mira el siguiente vídeo