7

我们正在尝试使用 Teams、Flow 和 Assembla 创建审批工作流,但遇到了一些麻烦。

我们成功设置了一些部分,但是我们无法从 Teams 中的卡片启动 POST 操作。

在团队中,我们可以使用传入的 webhook 连接器成功创建卡片,并获得此结果。 在此处输入图像描述

这是使用来自 Flow 中的 POST 操作的以下 JSON 正文创建的

{
    "@@type": "MessageCard",
    "@@context": "http://schema.org/extensions",
    "summary": "This is the summary property",
    "themeColor": "f46b42",
    "sections": [
        {
            "startGroup": true,
            "title": "**Pending Review**",
            "activityTitle": "Ticket Title",
            "activitySubtitle": "Requested by: ",
            "facts": [
                { "name": "Date submitted:", "value": "06/27/2017, 2:44 PM" },
                { "name": "Details:",
                "value": "This ticket is ready for review." }
            ]
        },
        {
            "potentialAction": [
                {

                    "@@type": "HttpPOST",
                    "name": "Approve",
                    "target": "ANOTHER-POST-URL-IS-HERE"
                },
                {


                    "@@type": "HttpPOST",
                    "name": "Deny",
                    "target": "ANOTHER-POST-URL-IS-HERE"
                }
            ]
        }
    ]
}

我们有另一个 Flow url 作为卡片上两个按钮的目标。为了测试这个 url,我们能够通过 POSTMAN 成功发布并继续审批工作流程。

单击团队卡上的按钮时,根本不会通知帖子 url 上的流。不会触发 Flow 上的运行。在团队中,“提交更改时出现问题。请稍后再试”。显示错误。

经过研究,我在 Microsoft Teams github 页面上浏览了connector.md文件,并注意到文档中这个可爱的部分

在此处输入图像描述

对我来说很奇怪的是,在他们下面提到可能不支持 POST 操作,文档继续详细地展示了在团队卡片中使用 POST 和 ActionCard 操作的示例。

在此处输入图像描述

所以我的问题是,有没有办法让 HttpPOST 操作从 Teams 中的自定义卡工作到 Microsoft Flow POST URL?

谢谢!

更新:

经过进一步的测试,我们确定 HttpPOST 操作几乎适用于我们可以提出的任何帖子 URL, Microsoft Flow Request URL 除外。它们是非常长的网址,所以也许这与它有关?

这是一个流请求 URL 示例。

https://prod-43.westus.logic.azure.com:443/workflows/f86b928acd3d4ecab849f677974f7816/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=ZBxr5GFKQhMp4JXWGmec_L6aqgcaqvCOKUWOf2li-xQ

在 Web 浏览器中运行团队时,我们能够看到请求首先发布到 api.teams.skype.com url 并返回一个通用的“ProviderError”。其他非流 url 也这样做,但返回成功。

4

1 回答 1

9

这对我们来说是一个令人头疼的问题 - 正如您所猜测的那样,这应该有效。Teams、Flow 和 Outlook 团队今天对此进行了故障排除,并查明了发生了什么。

您发布到的 URLhttps://prod-43.westus.logic.azure.com[...]具有嵌入的不记名令牌(sigURL 中参数的值)。当您通过 CURL、Fiddler、Postman 等发布到该 URL 时,它可以工作,因为该令牌存在。

但是,当您单击可操作消息中的 HttpPOST 按钮时,Outlook 会在 HTTP 标头中添加自己的 JWT 令牌,这意味着 HTTP POST在 URL 中具有sig=记名令牌,在 HTTP 标头中具有 JWT 令牌。Flow 检测到这一点并将 HTTP POST 视为无效拒绝(虽然我们目前不支持 JWT 令牌,但我们计划将此情况视为无效,以保持前向兼容性)。

这个用例将在未来工作。同时,尝试的一种解决方法是让可操作的消息按钮 POST 到您的端点,例如https://yoursite.com/accepthttps://yoursite.com/deny(尽可能多地验证 JWT)并让这些端点在没有 JWT 的情况下直接 POST 到 Flow。

请让我们知道这是否有效。

顺便说一句,您发现的文本是一个已修复的文档错误: 连接器.md 的摘录

对困惑感到抱歉。

于 2017-09-28T06:39:25.693 回答