来自Microsoft Teams卡的Http POST

时间:2017-09-18 20:58:25

标签: microsoft-teams microsoft-flow office365connectors

我们正在尝试使用Teams,Flow和Assembla创建批准工作流程,并且遇到了一些麻烦。

我们已成功设置了一些部分但是我们无法从团队中的卡片发起POST操作。

在团队中,我们可以使用传入的webhook连接器成功创建一张卡片。 enter image description here

这是使用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作为卡上两个按钮的目标。要测试此网址,我们可以通过POSTMAN成功发布并继续审批工作流程。

当点击团队卡上的按钮时,邮件网址上的流程根本不会被通知。不会触发Flow上的运行。在团队中非常通用“提交更改时出现问题。请在一分钟后重试。”显示错误。

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

enter image description here

我觉得奇怪的是,在他们下面提到POST操作可能不受支持,文档的篇幅很长,以显示在团队卡中使用POST和ActionCard操作的示例。

enter image description here

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

谢谢!

  

更新:

     

经过进一步测试,我们确定了HttpPOST动作   我们可以使用来处理任何帖子网址,除了   Microsoft Flow请求URL。他们是特别长的网址,所以也许   那与它有关吗?

     

以下是Flow请求网址的示例。

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网址并返回通用   “ProviderError”。其他非流动网址也会做同样但返回   成功。

1 个答案:

答案 0 :(得分:6)

这对我们来说是一个令人头疼的问题 - 正如你所推测的那样,这应该是有效的。今天,Teams,Flow和Outlook团队对此进行了问题排查,并了解了发生的情况。

您要发布到的网址,https://prod-43.westus.logic.azure.com[...]具有嵌入式承载令牌(网址中sig参数的值)。当您通过CURL,Fiddler,Postman等发布到该URL时,它会起作用,因为该令牌存在。

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

此用例将在以后使用。与此同时,尝试的一种解决方法是将可操作的消息按钮POST到您的端点,例如https://yoursite.com/accepthttps://yoursite.com/deny(尽可能多地验证JWT)并将这些端点直接POST到Flow而不使用JWT。

如果有效,请告知我们。

BTW,您找到的文字是一个文档错误,此后一直是fixedExcerpt of connectors.md

很抱歉这个混乱。