Compartilhar via


Aplicação de armazenamento na cloud de terceiros

O Microsoft Teams fornece a flexibilidade para alterar o armazenamento predefinido do OneDrive e do SharePoint para uma aplicação de fornecedor de armazenamento na cloud preferencial de terceiros. Quando um ficheiro é arrastado para a área de composição de mensagens de um chat ou canal do Teams, pode permitir que o ficheiro seja armazenado num armazenamento na nuvem de terceiros com a biblioteca de cliente JavaScript (TeamsJS) do Microsoft Teams.

Pré-requisitos

Para a aplicação Teams suportar o armazenamento na cloud de terceiros para ficheiros removidos de arrastar:

  • Utilize a versão mais recente do SDK do TeamsJS.

  • O manifesto da aplicação (anteriormente denominado manifesto de aplicação do Teams) tem de ser configurado com o ID da aplicação de armazenamento de terceiros. Procure a propriedade com o nome defaultFilesUploadAppId e configure o ID da aplicação.

    Observação

    Utilize apenas cadeia simples e não utilize vírgulas invertidas.

    Em alternativa, os administradores também podem configurar o ID da aplicação de armazenamento na cloud de terceiros. Para obter mais informações, veja definições de administração para arrastar/largar ficheiros para armazenamento de terceiros.

  • O manifesto da aplicação tem de ter a primeira ação como Upload. Esta ação abre automaticamente a aplicação no modo de carregamento quando os ficheiros são arrastados para a área de composição de mensagens.

    O exemplo de código seguinte mostra a primeira ação adicionada como Upload em 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"
      ]
    }
    

Arrastar e largar ficheiros para o armazenamento na cloud de terceiros

Se quiser que a sua aplicação teams tenha um armazenamento de terceiros da sua preferência, tem de utilizar a getDragAndDropFiles API do no SDK do thirdPartyCloudStorage TeamsJS. Esta API permite carregar ficheiros a partir da área de composição de mensagens de um chat ou canal do Teams para uma aplicação de armazenamento de terceiros.

Observação

A thirdPartyCloudStorage API só é utilizada em cenários em que os ficheiros são removidos. Não é utilizado quando os ficheiros são adicionados com o ícone de adição na barra de ferramentas de composição de mensagens.

Para implementar o armazenamento na cloud de terceiros para os ficheiros arrastados no Teams, siga estes passos:

  1. Certifique-se de que a propriedade defaultFilesUploadAppId está configurada com o ID da aplicação de armazenamento de terceiros e que a primeira ação está definida como Upload no manifesto da aplicação.

  2. Crie o ID exclusivo com os seguintes parâmetros no contexto da aplicação:

    • const uniqueIdForChats = replyToId + id (ou seja, threadId).

      Todos os valores acima estão presentes no contexto da aplicação. Se "commandContext" = "thirdParty", ajuda a aplicação de armazenamento na cloud de terceiros a determinar que a aplicação é aberta programaticamente. Se replyToId não estiver presente no contexto, o ID exclusivo é ""+threadId.

      A imagem seguinte mostra o exemplo do contexto da aplicação com os valores para criar o ID exclusivo realçado:

      Captura de ecrã a mostrar o contexto de exemplo onde estão presentes os dois valores para criar o ID exclusivo.

  3. Utilize a getDragAndDropFiles API do thirdPartyCloudStorage SDK no TeamsJS para a aplicação de armazenamento de terceiros para obter os ficheiros arrastados.

  4. É implementada uma função de chamada de retorno para receber e processar os ficheiros.

    Chamada de retorno: (files: FilesFor3PStorage[], error?: SdkError): void;**

    O seguinte exemplo de código mostra a função de chamada de retorno:

    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. Em seguida, a aplicação de armazenamento na cloud de terceiros carrega os ficheiros recebidos para o armazenamento na cloud de terceiros.

Eis como os ficheiros são carregados para uma aplicação de armazenamento na cloud de terceiros:

  1. Quando os ficheiros são removidos na área de composição de mensagens, os ficheiros são temporariamente armazenados na cache do Teams.

  2. A aplicação de armazenamento na cloud de terceiros chama a getDragAndDropFiles API com o uniqueID para obter os ficheiros que foram removidos.

  3. A thirdPartyCloudStorage API devolve os ficheiros que foram removidos.

  4. Os ficheiros são recebidos na aplicação de armazenamento na cloud de terceiros através da função de chamada de retorno.

  5. Em seguida, a aplicação de armazenamento na cloud de terceiros carrega os ficheiros para o respetivo armazenamento.

Exemplo de código

Nome do exemplo Descrição Node.js .NET Python
Armazenamento na cloud de terceiros Demonstra como implementar uma aplicação de armazenamento na cloud de terceiros para ficheiros que são arrastados na área de composição de mensagens. View View Exibir

Confira também

Manifesto do aplicativo