如何向 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-dc418f6c67eeServer: YOURCOMPANY.webhook.office.comURL: /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)。
.png)
用于 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 消息来创建新消息,最佳做法是使用数据转换器。
.png)
此时,您的 Ens.Alert 规则应如下所示:
.png)
它使用 St.Teams.DT.EnsAlertToAdaptiveRequest 转换 Ens.AlertRequest,并将其发送至 St.Teams.BO.Api.Teams。
随后,您将直接在 Teams 群组中收到该消息。

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