【发布时间】:2019-12-10 22:11:29
【问题描述】:
我有一个 C# 机器人,它已经使用 SDK 使用自适应卡创建任务模块,但我想尝试使用任意 Web 内容。我已经创建了这样的继续响应(只是将可访问 Internet 的 IIS 页面作为 URL 进行测试):
{
"Status": 200,
"Body": {
"task": {
"value": {
"title": "webTest",
"url": "https://icechris.computertalkrnd.com/iisstart.htm",
"card": null,
"fallbackUrl": "https://icechris.computertalkrnd.com/iisstart.htm",
"completionBotId": "BOT_ID"
},
"type": "continue"
}
}
}
如果我返回一张自适应卡片,我的回复如下所示:
{
"Status": 200,
"Body": {
"task": {
"value": {
"title": null,
"height": null,
"width": null,
"url": null,
"card": {
"contentType": "application/vnd.microsoft.card.adaptive",
"contentUrl": null,
"content": {
"type": "AdaptiveCard",
"version": "1.0",
"body": [CARD BODY]
},
"name": null,
"thumbnailUrl": null
},
"fallbackUrl": null,
"completionBotId": null
},
"type": "continue"
}
}
}
渲染效果很好(为简洁起见,我剪掉了卡片 json)。
我的机器人清单中有以下有效域:
"validDomains": [ "*.computertalkrnd.com", "icechris.computertalkrnd.com", "computertalkrnd.com", "computer-talk.com" ]
是否不可能让任务模块显示像这样的任意 Web 内容,或者我在响应中还缺少其他内容?我注意到没有为自适应卡设置completionBotID,但是对于网络案例,无论我设置与否都没有区别。
我确实在 Teams 中调出了开发工具,并在测试调用时注意到了这一点:
2019-11-28T21:32:51.245Z AppsService: getInstalledAppForUser - Invalid appId specified
(anonymous) @ angular.min.js:113
e.logMessage @ msteams-web-ng1-services.min.js:1
e.error @ msteams-web-ng1-services.min.js:1
t.getInstalledAppForUser @ msteams-web-ng1-services.min.js:1
t.getAppDefinitionFromCurrentContext @ msteams-web-ng1-services.min.js:1
t.getAppDefinitionFromCurrentContext @ msteams-web-ng1-services.min.js:1
t @ msteams-web-ng1.min.js:1
t @ msteams-web-ng1.min.js:1
invoke @ angular.min.js:36
R.instance @ angular.min.js:84
n @ angular.min.js:59
g @ angular.min.js:53
g @ angular.min.js:53
g @ angular.min.js:53
(anonymous) @ angular.min.js:52
(anonymous) @ 2-vendor.min-40cd418b.js:138
(anonymous) @ angular.min.js:154
e @ angular.min.js:40
(anonymous) @ angular.min.js:43
setTimeout (async)
Zf.k.defer @ angular.min.js:43
f @ angular.min.js:154
(anonymous) @ 2-vendor.min-40cd418b.js:138
f @ angular.min.js:126
(anonymous) @ angular.min.js:126
$eval @ angular.min.js:141
$digest @ angular.min.js:138
f.$digest @ msteams-web-ng1-services.min.js:1
$apply @ angular.min.js:141
(anonymous) @ angular.min.js:92
x @ angular.min.js:96
w.onload @ angular.min.js:97
load (async)
(anonymous) @ angular.min.js:97
r @ angular.min.js:93
g @ angular.min.js:90
f @ angular.min.js:126
(anonymous) @ angular.min.js:126
$eval @ angular.min.js:141
$digest @ angular.min.js:138
f.$digest @ msteams-web-ng1-services.min.js:1
(anonymous) @ angular.min.js:141
e @ angular.min.js:40
(anonymous) @ angular.min.js:43
setTimeout (async)
Zf.k.defer @ angular.min.js:43
$evalAsync @ angular.min.js:141
(anonymous) @ angular.min.js:125
g @ angular.min.js:126
then @ angular.min.js:127
t.markConversationAsRead @ msteams-web-ng1.min.js:1
(anonymous) @ msteams-web-ng1.min.js:1
$emit @ angular.min.js:143
n.$emit @ eventingService.min.js:1
a.invokeAppInUseEventIfNeeded @ appStateService.min.js:1
a.setPageVisible @ appStateService.min.js:1
(anonymous) @ appStateService.min.js:1
$emit @ angular.min.js:143
n.$emit @ eventingService.min.js:1
(anonymous) @ desktopEventsService.min.js:1
listenerWrapper @ C:\Users\cbardon\AppData\Local\Microsoft\Teams\current\resources\app.asar\lib\renderer\ipcRenderer.js:335
emit @ events.js:182
angular.min.js:113 TypeError: Cannot read property 'validDomains' of undefined
不过,看看自适应卡的响应,我看不出两者之间有什么明显不同。
【问题讨论】:
-
是的,您可以在任务模块中嵌入任意 Web 内容,但 url 应该是 Iframe-able。通过 BOT 打开任务模块时需要提供 Bot ID。请查看Task Module with Bot 和Task Module C# sample Code。如果您遇到任何问题,请告诉我
-
感谢您的评论。我确实验证了内容可以被 iframed,并且我确实在响应中设置了 completionBotId。响应负载是否需要设置其他内容?
-
获取/任务和任务/提交操作需要完成机器人 ID。如果您在任务模块中进行链接,则需要传递您定义的操作,以便实现链接。
标签: microsoft-teams