Proramatically @ 提及 Microsoft Teams 中的传出 Webhook

Proramatically @ mentioning Outgoing Webhooks in Microsoft Teams

提问人:user2087895 提问时间:11/16/2023 更新时间:11/16/2023 访问量:39

问:

我正在尝试开发一种方法来测试团队中传出 webhook 的可靠性。https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-outgoing-webhook?tabs=urljsonpayload%2Cdotnet

过去,我们在使用这些 Webhook 时遇到了很多问题,并且正在寻找一种方法来定期测试它们的稳定性。

我们不想测试终结点本身,因为我们的可靠性没有任何问题 - 只是 Teams 功能。希望为此使用 MS Graph API 或其他一些受支持/适当的方法,但看起来我越来越需要扩大我的舒适区。最终,我只想知道一个“非常优秀的软件工程师”会如何处理这个问题。

我尝试过在团队中发布 Power Automate 连接 - 但直接使用标记似乎仅适用于用户帐户。我试过使用 MS Graph:

  • 具有应用程序标识,但事实证明我无法发布具有应用程序权限的消息 - 它只允许使用此 perm Teamwork.Migrate.All 进行迁移

  • 使用服务帐户 - 但是当尝试@传出的 webhook 时,我收到错误,说明不支持该操作。“message”: “提及中不支持'AadApplication'类型的标识”。

下面的 JSON 结果为“NotImplemented”,这可能告诉我所有我需要了解的有关尝试通过 MS 的 API 执行此操作的信息。

{
    "body": {
        "contentType": "html",
        "content": "<p><at id=\"0\">TEST</at>&nbsp;Test!!!</p>"
    },
    "mentions": [
        {
            "id": 0,
            "mentionText": "TEST",
            "mentioned": {
                "device": null,
                "user": null,
                "conversation": null,
                "tag": null,
                "application": {
                    "@odata.type": "#microsoft.graph.teamworkApplicationIdentity",
                    "id": "xxx",
                    "displayName": "TEST",
                    "applicationIdentityType": "outgoingWebhook"
                }
            }
        }
    ]
}

我甚至尝试通过更改“提及”的 json 值(将“outgoingWebhook”更改为“bot”)来发送请求 - 这实际上在通道中生成了一条带有 @ 标记的消息,但正如预期的那样,它实际上并没有触发传出 webhook。

我研究过使用自适应卡片来做到这一点,但其他 reddit/SO 结果告诉我它们不支持@mentioning机器人。

现在,我不确定除了使用 Selenium 之类的东西通过团队 Web 浏览器“手动”@提及 webhook 之外,我还有什么选择。

我也在考虑尝试使用自定义机器人来@提及另一个机器人,但我有一种感觉,我会遇到相同类型的问题,所以在这方面停滞不前。

Azure microsoft-graph-api botframework microsoft-teams webhooks

评论

1赞 Maytham Fahmi 11/16/2023
就我以前尝试过的而言,这是不可能的
0赞 user2087895 11/17/2023
所以在这种情况下,我想我的主要问题在我的第三段中。一个必须测试无法通过标准渠道测试但非常擅长计算机的东西的人会怎么做才能自动化?硒之类的是唯一好的选择吗?也许我没有考虑某些选择?
1赞 Maytham Fahmi 11/17/2023
IMO 测试并不意味着您应该如此详细地测试所有内容,这是浪费时间。如果你正在尝试测试你的文本发送服务,你可以模拟测试它,但如果你需要做一个集成测试来查看它是否发送,你最终可以指望这样一个事实,即当你发出帖子请求时,它有一个响应。您可以将响应用作测试结果。如果您需要参加端到端测试,祝您在测试😃😃中好运 也就是说,如果这与您拥有的关键系统有关,那么我会注意到为此使用团队。
1赞 Prasad-MSFT 11/17/2023
@user2087895 - 目前这似乎不可行。若要满足你的要求,建议你在 Teams 反馈门户中提供反馈
0赞 user2087895 11/17/2023
感谢您的回复。我同意详细测试所有内容是浪费时间。不幸的是,我们把自己置于一种境地,即我们依靠 Teams 在中断或其他事件期间允许部门之间的通信。如果 Teams 出现故障,我们还有其他方法可以联系,但我们希望有一种一致的方式来确定我们的系统是否可以在任何给定时间使用。不幸的是,这意味着我们需要验证 Teams 本身中@mention的稳定性,因此我们处于一个奇怪的位置。我猜硒是我最好的选择。 再次感谢!

答: 暂无答案