来自Microsoft Teams卡的Http POST

Jos*_*ong 7 office365connectors microsoft-teams microsoft-flow

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

我们已成功设置了一些部分但是我们无法从团队中的卡片发起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"
                }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我们有另一个Flow url作为卡上两个按钮的目标.要测试此网址,我们可以通过POSTMAN成功发布并继续审批工作流程.

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

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

在此输入图像描述

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

在此输入图像描述

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

谢谢!

更新:

经过进一步测试,我们已经确定HttpPOST操作可以处理我们可以提出的 Microsoft Flow Request 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
Run Code Online (Sandbox Code Playgroud)

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

Bil*_*SFT 7

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

您要发布到的URL https://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)并将这些端点直接POST到Flow而不使用JWT.

如果有效,请告诉我们.

顺便说一下,你找到的文本是一个文档错误,后来修复了: connectors.md的摘录

对困惑感到抱歉.