Стороннее приложение облачного хранилища
Microsoft Teams предоставляет гибкие возможности для изменения хранилища по умолчанию с OneDrive и SharePoint на предпочтительное стороннее приложение поставщика облачного хранилища. При перетаскивании файла в область создания сообщений чата или канала Teams можно разрешить сохранение файла в стороннем облачном хранилище с помощью клиентской библиотеки JavaScript (TeamsJS) Microsoft Teams.
Предварительные условия
Чтобы приложение Teams поддерживало стороннее облачное хранилище для перетаскиваемых файлов:
Используйте последнюю версию пакета SDK TeamsJS.
Манифест приложения (ранее называемый манифестом приложения Teams) должен быть настроен с помощью идентификатора приложения стороннего хранилища. Найдите свойство с именем
defaultFilesUploadAppId
и настройте идентификатор приложения.Примечание.
Используйте только обычную строку и не используйте перевернутые запятые.
Кроме того, администраторы также могут настроить идентификатор приложения стороннего облачного хранилища. Дополнительные сведения см. в разделе Параметры администрирования для перетаскивания файлов в стороннее хранилище.
Манифест приложения должен иметь первое действие как
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
желанию, необходимо использовать API thirdPartyCloudStorage
в пакете SDK TeamsJS. Этот API позволяет отправлять файлы из области создания сообщений чата Teams или канала в стороннее приложение хранилища.
Примечание.
thirdPartyCloudStorage
API используется только в сценариях, когда файлы перетаскиваются перетаскиванием. Он не используется при добавлении файлов с помощью значка "плюс" на панели инструментов создания сообщения.
Чтобы реализовать стороннее облачное хранилище для перетаскиваемых файлов в Teams, выполните следующие действия.
Убедитесь, что свойство
defaultFilesUploadAppId
настроено с идентификатором стороннего приложения хранилища, а первое действие задано какUpload
в манифесте приложения.Создайте уникальный идентификатор, используя следующие параметры из контекста приложения:
const uniqueIdForChats
=replyToId
+id
(т. еthreadId
. ).Все приведенные выше значения присутствуют в контексте приложения. Если
"commandContext" = "thirdParty"
задано значение , это помогает стороннему приложению облачного хранилища определить, что приложение открыто программным способом. ЕслиreplyToId
в контексте нет, то уникальным идентификатором будет""+threadId
.На следующем рисунке показан пример контекста приложения со значениями для создания уникального идентификатора:
getDragAndDropFiles
Используйте API изthirdPartyCloudStorage
пакета SDK для TeamsJS для стороннего приложения хранилища, чтобы получить перетаскиваемые файлы.Функция обратного вызова реализуется для получения и обработки файлов.
Обратный вызов:
(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.
Стороннее облачное приложение хранилища вызывает
getDragAndDropFiles
API с помощьюuniqueID
для получения файлов, которые были перетаскиваются.thirdPartyCloudStorage
API возвращает файлы, которые были отброшены перетаскиванием.Файлы получаются в стороннем облачном приложении хранилища с помощью функции обратного вызова.
Затем стороннее облачное приложение хранилища передает файлы в свое хранилище.
Пример кода
Название примера | Описание | Node.js | .NET | Python |
---|---|---|---|---|
Стороннее облачное хранилище | Демонстрирует реализацию стороннего облачного приложения хранилища для файлов, которые перетаскиваются в области создания сообщений. | Просмотр | Просмотр | Просмотр |
См. также
Platform Docs