Microsoft Teams 可以灵活地将默认存储从 OneDrive 和 SharePoint 更改为首选的第三方云存储提供程序应用。 将文件拖放到 Teams 聊天或频道的消息撰写区域中时,可以使用Microsoft Teams JavaScript 客户端库 (TeamsJS) 允许文件存储在第三方云存储中。
先决条件
对于支持拖放文件的第三方云存储的 Teams 应用:
使用最新版本的 TeamsJS SDK。
应用清单 (以前称为 Teams 应用清单) 必须使用第三方存储应用的应用 ID 进行配置。 搜索名为
defaultFilesUploadAppId
的属性并配置应用 ID。注意
仅使用纯字符串,不要使用倒排逗号。
或者,管理员还可以配置第三方云存储应用 ID。 有关详细信息,请参阅 文件拖放到第三方存储的管理员设置。
应用清单必须具有第一个作作为
Upload
。 将文件拖放到邮件撰写区域中时,此作会自动在上传模式下打开应用。下面的代码示例显示添加为
Upload
下面的composeExtensions
第一个作:{ "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.9/MicrosoftTeams.schema.json", "manifestVersion": "1.9", "version": "2.3.1", "id": "id", "developer": { "name": "Microsoft", "websiteUrl": "https://dev.botframework.com", "privacyUrl": "https://privacy.microsoft.com", "termsOfUseUrl": "https://www.microsoft.com/en-us/legal/intellectualproperty/copyright/default.aspx" }, "name": { "short": "Third-Party Cloud Storage", "full": "Third-Party Cloud Storage Integration" }, "description": { "short": "Enable drag-and-drop file uploads to third-party cloud storage.", "full": "This app enables seamless integration with third-party cloud storage providers for files dragged and dropped in Teams chats or channels. It uses the Microsoft Teams JavaScript SDK's thirdPartyCloudStorage module to fetch and upload files efficiently." }, "icons": { "outline": "outline.png", "color": "color.png" }, "accentColor": "#FFFFFF", "bots": [ { "botId": "${{AAD_APP_CLIENT_ID}}", "needsChannelSelector": false, "isNotificationOnly": false, "supportsCalling": false, "supportsVideo": false, "supportsFiles": false, "scopes": [ "team", "personal", "groupChat" ] } ], "composeExtensions": [ { "botId": "botid", "canUpdateConfiguration": false, "commands": [ { "id": "getUpload", "type": "action", "title": "Create Card", "description": "Example of creating a Card", "initialRun": false, "fetchTask": true, "context": [ "compose" ], "parameters": [ { "name": "param", "title": "param", "description": "" } ] } ] } ], "permissions": [ "identity" ], "validDomains": [ "*.testApp.com" ] }
将文件拖放到第三方云存储
如果希望 Teams 应用具有首选的第三方存储,则必须在 getDragAndDropFiles
TeamsJS SDK 中使用 的 thirdPartyCloudStorage
API。 此 API 允许将文件从 Teams 聊天或频道的消息撰写区域上传到第三方存储应用。
注意
API thirdPartyCloudStorage
仅在拖放文件的情况下使用。 使用邮件撰写工具栏中的加号图标添加文件时,不使用它。
若要在 Teams 中为拖放文件实现第三方云存储,请执行以下步骤:
确保使用第三方存储应用 ID 配置属性
defaultFilesUploadAppId
,并在应用清单中将第一个作设置为 。Upload
使用应用程序上下文中的以下参数创建唯一 ID:
getDragAndDropFiles
使用 TeamsJS SDK 中用于第三方存储应用的 APIthirdPartyCloudStorage
提取拖放的文件。实现回调函数以接收和处理文件。
回调:
(files: FilesFor3PStorage[], error?: SdkError): void;**
以下代码示例演示回调函数:
microsoftTeams.initialize(() => { microsoftTeams.getContext((context) => { console.log(`Context is ${JSON.stringify(context)}`); }); let inputthreadId = "19:8c24b2ac42924ca3b8e220b3a48d8f9a@thread.v2"; let replyChainIdforChats = ""; const uniqueIdForChats = replyChainIdforChats + inputthreadId; let mediaData = []; microsoftTeams.thirdPartyCloudStorage.getDragAndDropFiles(inputthreadId, (medias, err) => { document.getElementById("hubState").innerText = JSON.stringify(inputthreadId); console.log("inside getDragAndDropFiles"); if (err) { console.log("error while calling getDragAndDropFiles API"); document.getElementById("getDragAndDropFiles").innerText = JSON.stringify(err); console.log(err); return; } console.log("no error"); const media = medias; console.log(media); medias.forEach((media) => { console.log(`Name: ${media.name}`); console.log(`Type: ${media.type}`); console.log(`Size: ${media.size}`); mediaData.push({ name: media.name, type: media.type, size: media.size, }); // Example 1: Bind mediaData to HTML (e.g., create a table row for each file) // Example 2: Add blob storage functionality for downloading the file }); }); });
然后,第三方云存储应用将收到的文件上传到第三方云存储。
下面介绍如何将文件上传到第三方云存储应用:
将文件拖放到邮件撰写区域中时,文件将暂时存储在 Teams 缓存中。
第三方云存储应用使用
uniqueID
调用getDragAndDropFiles
API 来提取拖放的文件。API
thirdPartyCloudStorage
返回拖放的文件。文件通过回调函数在第三方云存储应用中接收。
然后,第三方云存储应用将文件上传到其存储。
代码示例
示例名称 | Description | Node.js | .NET | Python |
---|---|---|---|---|
第三方云存储 | 演示如何为在消息撰写区域中拖放的文件实现第三方云存储应用。 | View | View | View |