【问题标题】:Http POST from card in Microsoft Teams来自 Microsoft Teams 中卡片的 Http POST
【发布时间】:2017-09-18 20:58:24
【问题描述】:

我们正在尝试使用 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 成功发布并继续审批工作流程。

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

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

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

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

谢谢!

更新:

经过进一步测试,我们确定 HttpPOST 操作 几乎可以使用我们可以提出的任何帖子网址除了 Microsoft 流请求 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

在网络浏览器中运行团队时,我们可以看到请求 第一次发布到 api.teams.skype.com url 并返回一个通用的 “提供者错误”。其他非流 url 也这样做但返回 成功。

【问题讨论】:

  • 只是澄清一下,我尝试了示例 URL,但它返回了一个 HTTP 400 错误,并显示它需要一个 GET 并得到一个 POST 的消息。我认为这与您从 POSTMAN 看到的不同?
  • 在其他命令中,我假设您的 HTTP 触发器被定义为 POST?
  • 是的,它通常是 Flow 中的 POST 触发器。我给出的 url 只是为了显示 url 格式的一个例子。我将该特定流程设置为 GET 以进行其他测试。我现在将该 URL 切换回 POST。我们做了一些额外的测试,将同一张卡片发布到 Outlook 显示完全相同的行为。其他 POST url 返回就好了,但流特定的 POST URL 仍然返回相同的错误

标签: microsoft-teams power-automate office365connectors


【解决方案1】:

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

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

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

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

如果可行,请告诉我们。

顺便说一句,您发现的文本是一个文档错误,此后一直是fixed

很抱歉给您带来了困惑。

【讨论】:

  • 感谢您抽出宝贵时间调查此事!我们正在考虑做那个确切的解决方法,但只是在等着看是否可以首先找到解决方案。很高兴听到这至少是一个已知问题,并且将来可能会得到纠正。您是否知道或知道 Flow 何时可以支持 JWT 令牌?
  • 用户语音上是否有帖子跟踪此功能?谢谢!
猜你喜欢
  • 2019-01-18
  • 2021-08-27
  • 2019-02-24
  • 1970-01-01
  • 2019-10-29
  • 2021-12-17
  • 2019-12-05
  • 2020-01-13
  • 2021-02-06
相关资源
最近更新 更多