Поделиться через


Стороннее приложение облачного хранилища

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, выполните следующие действия.

  1. Убедитесь, что свойство defaultFilesUploadAppId настроено с идентификатором стороннего приложения хранилища, а первое действие задано как Upload в манифесте приложения.

  2. Создайте уникальный идентификатор, используя следующие параметры из контекста приложения:

    • const uniqueIdForChats = replyToId + id (т. е threadId. ).

      Все приведенные выше значения присутствуют в контексте приложения. Если "commandContext" = "thirdParty"задано значение , это помогает стороннему приложению облачного хранилища определить, что приложение открыто программным способом. Если replyToId в контексте нет, то уникальным идентификатором будет ""+threadId.

      На следующем рисунке показан пример контекста приложения со значениями для создания уникального идентификатора:

      Снимок экрана: пример контекста, в котором присутствуют два значения для создания уникального идентификатора.

  3. getDragAndDropFiles Используйте API из thirdPartyCloudStorage пакета SDK для TeamsJS для стороннего приложения хранилища, чтобы получить перетаскиваемые файлы.

  4. Функция обратного вызова реализуется для получения и обработки файлов.

    Обратный вызов: (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
        });
      });
    });
    
  5. Затем стороннее облачное приложение хранилища передает файлы, полученные в стороннее облачное хранилище.

Вот как файлы отправляются в стороннее облачное приложение хранилища:

  1. Когда файлы перетаскиваются в области создания сообщений, они временно сохраняются в кэше Teams.

  2. Стороннее облачное приложение хранилища вызывает getDragAndDropFiles API с помощью uniqueID для получения файлов, которые были перетаскиваются.

  3. thirdPartyCloudStorage API возвращает файлы, которые были отброшены перетаскиванием.

  4. Файлы получаются в стороннем облачном приложении хранилища с помощью функции обратного вызова.

  5. Затем стороннее облачное приложение хранилища передает файлы в свое хранилище.

Пример кода

Название примера Описание Node.js .NET Python
Стороннее облачное хранилище Демонстрирует реализацию стороннего облачного приложения хранилища для файлов, которые перетаскиваются в области создания сообщений. Просмотр Просмотр Просмотр

См. также

Манифест приложения