Adaptive Card Action.OpenUrl对于Microsoft Teams Bot中的某些URL不起作用

时间:2020-07-24 15:03:38

标签: botframework microsoft-teams adaptive-cards

我正在使用Microsoft Bot Framework开发Microsoft Teams聊天机器人。机器人会发送包含一些文本和以下操作的自适应卡:

{
    "type": "ActionSet",
    "actions": [
        {
            "type": "Action.OpenUrl",
            "title": "View in dashboard",
            "url": "${url}"
        }
    ]
},

URL的格式如下(已编辑以删除标识信息):

https://internaldomain.net/dashboard/share/134590h9?overrides=[{"query":"//dataSources","key":"account","replacement":"accountName"},{"query":"//*[id='Cluster']","key":"value","replacement":"clusterId"},{"query":"//*[id='NodeId']","key":"value","replacement":"nodeId"},{"query":"//*[id='ContainerId']","key":"value","replacement":"containerId"}]&globalStartTime=1591552800000&globalEndTime=1592460000000&pinGlobalTimeRange=true

使用JSON模板库生成URL,并将其传递到url属性中,并且我可以在控制台中打印URL,因此我知道它的设置正确。另外,我可以在仿真器中运行机器人并以这种方式打开链接。但是,当我在Teams中运行该机器人并尝试通过单击操作按钮打开相同的确切链接时,什么也没有发生。如果我更改了传入的网址,例如使用https://internaldomain.net/dashboard,链接可以正常工作。

一个想法是,所生成的URL的格式不正确,因此Teams无法识别或打开它。但是我可以将其粘贴到浏览器中,并且可以正常打开。

另一个想法是URL长度(将近500个字符)超出了Adaptive Card的某些限制,但是我无法在文档中或在线找到有关该信息的任何信息。

对于可能导致这种情况的其他想法,我将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

似乎您需要在嵌入URL之前对其进行编码-可能是{“ query”等与最终的Json冲突。似乎您使用的是.Net,因此可以对“?”中的所有内容调用WebUtility.UrlEncode。向前(即“?overrides ...”)