适用于 Microsoft Teams 的 SharePoint 框架解决方案部署选项
部署 SharePoint 框架 (SPFx) 解决方案以在 Microsoft Teams 中使用时,开发人员提供了多种选项。 本文介绍了 SharePoint Online 中支持的选项。
注意
在 2021 年 1 月之前,SharePoint Online 仅支持一个选项:当合格的 SPFx 解决方案上传到 SharePoint 租户应用目录时,将启用租户应用程序目录功能区中的“同步到 Teams”按钮。
SharePoint Online 支持两个选项,用于将 SPFx 解决方案部署到 Microsoft Teams 应用商店:
自动创建 Microsoft Teams 应用清单和程序包
当你有一个要在 Microsoft Teams 中自动公开的简单实施方案时,此功能非常理想。
在此方案中,当上传 SPApp 解决方案到 SharePoint Online 租户应用程序目录时,如果解决方案包含 Microsoft Teams 的组件,将启用功能区中的“同步到 Teams”按钮。
此按钮将在 SharePoint Online 中启动以下流程:
- SharePoint 将动态创建 Microsoft Teams 应用清单文件
- SharePoint 将动态创建 Microsoft Teams 应用程序包
- SharePoint 将生成的 Microsoft Teams 应用包部署到租户的 Microsoft Teams 应用商店
SharePoint 创建应用清单时,它将使用 SPTx 解决方案中的值生成一些名称。 下表列出了 Microsoft Teams 应用清单文件的属性及其设置值。
注意
若要更详细了解应用清单,请参阅 Microsoft Teams 文档中的以下链接:用于 Microsoft Teams 的清单架构。
manifest.json 属性 | SPFx 组件清单中的属性 |
---|---|
packageName |
alias |
id |
id |
name.short |
preconfiguredEntries[0].title |
description.short |
preconfiguredEntries[0].description |
description.long |
preconfiguredEntries[0].description |
注意
组件清单是从组件的清单中拉取的, (./src/webparts/.。/*.manifest.json) 。
如果 SPFx 解决方案包含多个指定用于 Microsoft Teams 的 Web 部件,SharePoint Online 将对每个部件重复上述过程。
注意
如果对生成的包结构感到好奇,可以使用以下 REST API 下载用于特定解决方案的包:
_api/web/tenantappcatalog/downloadteamssolution(id)/$value
id 是应用目录库中解决方案的数字标识符。
可以在应用目录的上下文中请求此 API,例如,使用 URL https://[yourtenant]].sharepoint.com/sites/appcatalog/_api/web/tenantappcatalog/downloadteamssolution(12)/$value
。 API 调用将启动生成的清单包的下载过程。
开发人员提供的 Microsoft Teams 应用清单 & 包
需要对 Microsoft Teams 应用清单或应用包进行更多控制时,可以创建自己的包。 在这种情况下,当管理员选择“ 同步到 Teams ”按钮时,SharePoint Online 将在 *.sppkg 文件中查找以下文件: ./teams/TeamsSPFxApp.zip。
如果存在此文件,SharePoint Online 会将其部署到租户的 Microsoft Teams 应用商店,而不是动态创建该文件。 此选项使开发人员可以完全控制 Microsoft Teams 应用清单 & 应用包。
此选项非常适合以下方案:
- 开发人员希望完全控制 Microsoft Teams 应用清单内容
- 复杂的 Microsoft Teams 方案,例如指定自动程序、会议应用等
- 当 SPFx 解决方案包含多个组件时,指定 Microsoft Teams 应用的 ID 和名称 & 说明。 例如,如果 SPFx 解决方案包含多个可在 Microsoft Teams 中用作选项卡的 Web 部件,则自动生成清单将选择两个组件之一用作 Microsoft Teams 的应用 ID 和名称 & 说明。
若要使用自己的 Microsoft Teams 应用程序清单 & 应用程序包,而不是让 SharePoint Online 动态创建它,请执行以下操作:
按 Microsoft Teams 文档创建 Microsoft Teams 应用清单:
重要
在 Teams 应用清单中,确保添加以下条目:
"webApplicationInfo": { "resource": "https://{teamSiteDomain}", "id": "00000003-0000-0ff1-ce00-000000000000" }
这是确保从 Microsoft Teams 富客户端成功执行组件中的任何 API 调用所必需的。 teamSiteDomain将是 Teams 客户端使用的同一租户,这将无法跨租户/跨域工作,因此无法硬编码另一个域。
通过压缩 ./teams 文件夹的内容,创建名为 TeamsSPFxApp.zip 的 Microsoft Teams 应用包。
重要
不要压缩文件夹,而是压缩文件夹的内容。 如果压缩文件夹,它将是生成的 ZIP 文件的顶级子文件夹,该文件在 Microsoft Teams 中不是有效的应用包。
将 TeamsSPFxApp.zip 保存到 SPFx 解决方案的 ./teams 文件夹中。
使用与创建常规 SPFx 解决方案相同的方式创建 SPFx 包,即使用 gulp package-solution。 它将在 *.sppkg 中包含自定义 Microsoft Teams 应用包。
动态引用基础 SharePoint 网站 URL
Microsoft Teams 应用清单必须指向 SPFx 组件的已部署托管位置。 但是,创建 Microsoft Teams 应用清单或应用包时,这些 URL 仍为未知。
因此,在此部署选项中指定应用包时,您应使用以下字符串,这些字符串将在运行时由 Microsoft Teams 替换:
{teamSiteDomain}
:部署和安装 SPUrl 解决方案处的 SharePoint Online 租户 URL{teamSitePath}
:用于安装 SPFx 组件的 SharePoint 网站的路径{locale}
:Microsoft Teams 客户端的当前区域设置
在自定义 Microsoft Teams 解决方案中使用 Web 部件时,可以使用这些字符串定义将加载该 Web 部件的页面 URL。 例如,使用下表作为指南,以创建 Microsoft Teams 应用中使用的 Web 部件的 URL:
重要
在下面的示例中,假设 SPFx 组件的 ID 为 {{SPFX_COMPONENT_ID}}
。 请务必将此值替换为 Web 部件的组件 ID。 此值并非由 SharePoint 或 Microsoft Teams 动态设置:开发人员应当设置此值。
Microsoft Teams 组件 | Microsoft Teams 应用清单属性 | Microsoft Teams 应用清单属性 |
---|---|---|
个人选项卡 | staticTabs[..].contentUrl |
https://{teamSiteDomain}/_layouts/15/TeamsLogon.aspx?SPFX=true&dest=/_layouts/15/teamshostedapp.aspx%3Fteams%26personal%26componentId={{SPFX_COMPONENT_ID}}%26forceLocale={locale} |
频道/群组聊天选项卡 | configurableTabs[..].configurationUrl |
https://{teamSiteDomain}{teamSitePath}/_layouts/15/TeamsLogon.aspx?SPFX=true&dest={teamSitePath}/_layouts/15/teamshostedapp.aspx%3FopenPropertyPane=true%26teams%26componentId={{SPFX_COMPONENT_ID}}%26forceLocale={locale} |
消息传递扩展 | composeExtensions.commands[..].taskInfo.url |
https://{teamSiteDomain}/_layouts/15/TeamsLogon.aspx?SPFX=true&dest=/_layouts/15/teamstaskhostedapp.aspx%3Fteams%26personal%26componentId={{SPFX_COMPONENT_ID}}%26forceLocale={locale} |