【发布时间】:2022-01-05 15:59:09
【问题描述】:
我正在向现有团队应用程序添加一个新的静态选项卡。 其中一项新功能是聊天将发布到静态选项卡的深层链接。当我考虑部署时,这会造成两难境地。
显然我不能把我的整个应用程序放在这里,但我们可以假设这样的情况:
我在 App Store 中的生产清单如下所示:
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.9/MicrosoftTeams.schema.json",
"manifestVersion": "1.9",
"version": "2.0.1",
"id": "23232322-7676-4848-5555-44444444444",
"packageName": "xxxxx",
"developer": {
"name": "xxxxx",
"websiteUrl": "https://www.xxxx.com/",
"privacyUrl": "https://www.xxxx.com/legal/privacy",
"termsOfUseUrl": "https://www.xxxxx.com/legal/privacy"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "abra",
"full": "abra cadabra"
},
"description": {
"short": "short",
"full": "full"
},
"accentColor": "#FFFFFF",
"bots": [
{
"botId": "11111111-2222-3333-4444-555555555555",
"scopes": [
"personal"
],
"commandLists": [
{
"scopes": [
"personal"
],
"commands": [
{
"title": "Test",
"description": "Test"
}
]
}
],
"supportsFiles": false,
"isNotificationOnly": false
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"token.botframework.com",
"teams.microsoft.com",
"*.ngroc.io"
]
}
在我的机器人中响应“测试”命令,我返回一条简单的文本消息,即
return await step.prompt('textPrompt', { prompt: 'In the next version we will have a test tab' })
现在正在开发中,我已将以下部分添加到清单中(在“bots”之后)
"staticTabs": [
{
"entityId": "conversations",
"scopes": [
"personal"
]
},
{
"entityId": "testtab”,
"contentBotId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"name": “Go To Test Tab",
"scopes": [ "personal" ]
},
{
"entityId": "about",
"scopes": [
"personal"
]
}
],
并且我已经将版本的值从 2.0.1 更新为 2.1.0
现在,为了响应“测试”消息,我返回了一个如下所示的自适应卡片:
{
type: 'AdaptiveCard',
version: '1.3',
body: [],
actions: [
{
type: 'Action.OpenUrl',
title: 'Go To Test Tab',
url: ‘https://teams.microsoft.com/l/entity/23232322-7676-4848-5555-44444444444/testtab’
}
]
}
这很好用,当我按下“转到测试选项卡”时,它会根据需要打开测试选项卡。
我的问题在于部署。 如果我将我的新清单提交到 App Store,而不更新我的生产服务器,那些测试新版本的人将继续收到消息“在下一个版本中,我们将有一个测试选项卡”并且缺少指向新选项卡的链接。
如果我现在更新我的生产服务器,在 App Store 中更新之前,我的当前用户将获得带有按钮的自适应卡,如果他们按下它将失败。
显然,这些选项都不好。
理想情况下,我的回答应该是这样的:
If tabExists() {
Return {… the adaptive card }
Else {
return await step.prompt('textPrompt', { prompt: 'In the next version we will have a ‘test tab })
}
但是,我不知道如何编写“tabExists()” - 我在想也许有某种方法可以从机器人清单或静态选项卡列表中访问版本号,并使用该信息,但是我很乐意提供其他建议。
【问题讨论】:
-
能否请您详细说明您的要求并分享重现步骤,以便我们可以从头开始尝试。
-
我想做的是这样的:
-
(我无法格式化评论所以我在上面添加了一些伪代码,我希望澄清)
-
@Ari Unikoski - 您能否详细说明您的要求并分享添加选项卡的正确复制步骤。“向现有团队应用程序添加新的静态选项卡,聊天将发布指向静态选项卡”。如果可能的话,你能分享一下截图吗?
-
@AriUnikoski - 请确认您的问题是否已解决或仍在寻求帮助?
标签: tabs bots microsoft-teams manifest adaptive-cards