文章 cheng yu · 1 小时 前 5m read

如何向 Microsoft Teams 发送消息

大家好,

本文旨在说明如何在 IRIS 和 Microsoft Teams 之间建立消息传递功能。

在我们公司,为了监控错误消息,我们曾使用 Ens.Alert 类通过一个业务操作将这些错误消息重定向,该操作会发送一封电子邮件。
问题在于,这些错误消息被发送到一个支持邮箱,而该邮箱已积压了大量邮件。我们希望为特定的团队提供专属的错误通知机制。

因此,我们研究了如何让这些消息直接送达开发团队,使他们能够实时收到生产环境出现错误的通知。
由于公司将 Microsoft Teams 作为企业级协作工具,我们便思考:如何让这些消息直接送达 IRIS 开发团队?

 

前期步骤

请展开以下内容,了解如何通过“Incoming Webhook”应用配置您的 Teams。

 

先前步骤

注意:Webhook 链接分为两部分:服务器和 URL,在配置组件时请记住这一点。

https://YOURCOMPANY.webhook.office.com/webhookb2/40cc6704-1bc5-4f87-xxxx-xxxxxxxxf@5xxxxxa-643b-47a3-xxxxx-fc962cc7cdb2/IncomingWebhook/6f272d796f1844b8b0b57b61365f8961/2ff46079-ee4a-442b-a642-dc418f6c67ee
Server: YOURCOMPANY.webhook.office.com
URL: /webhookb2/40cc6704-1bc5-4f87-xxxx-xxxxxxxxf@5xxxxxa-643b-47a3-xxxxx-fc962cc7cdb2/IncomingWebhook/6f272d796f1844b8b0b57b61365f8961/2ff46079-ee4a-442b-a642-dc418f6c67ee

调用 Webhook API

“Incoming Webhook”应用支持Office 360 连接器卡片。您可以使用AdaptiveCard 设计器创建卡片。

因此,我设计了一张卡片来显示一条错误消息(Ens.AlertRequest)。

 

用于 Ens.AlertRequest 的自适应卡片

使用此架构,您可以像这样利用 St.Teams 中的消息来创建提示信息

set class=##class(St.Teams.Msg.Adaptive.Request).%New()
set class.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 = 1
set 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 = 1
set 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
do class.Attachments.Insert(attach)

这会生成用于调用 Webhook 的 JSON 数据。但如果我们希望基于 Ens.AlertRequest 消息来创建新消息,最佳做法是使用数据转换器。

此时,您的 Ens.Alert 规则应如下所示:

它使用 St.Teams.DT.EnsAlertToAdaptiveRequest 转换 Ens.AlertRequest,并将其发送至 St.Teams.BO.Api.Teams。

随后,您将直接在 Teams 群组中收到该消息。

希望这对您同样有用,就像对我们一样。