我正在使用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的某些限制,但是我无法在文档中或在线找到有关该信息的任何信息。
对于可能导致这种情况的其他想法,我将不胜感激。
谢谢!
答案 0 :(得分:0)
似乎您需要在嵌入URL之前对其进行编码-可能是{“ query”等与最终的Json冲突。似乎您使用的是.Net,因此可以对“?”中的所有内容调用WebUtility.UrlEncode。向前(即“?overrides ...”)