次の方法で共有


サード パーティのクラウド ストレージ アプリ

Microsoft Teamsでは、既定のストレージを OneDrive と SharePoint から優先サード パーティのクラウド ストレージ プロバイダー アプリに柔軟に変更できます。 Teams チャットまたはチャネルのメッセージ作成領域にファイルをドラッグ アンド ドロップすると、Microsoft Teams JavaScript クライアント ライブラリ (TeamsJS) を使用して、ファイルをサード パーティのクラウド ストレージに格納できます。

前提条件

Teams アプリで、ドラッグ アンド ドロップされたファイルのサード パーティ製クラウド ストレージをサポートする場合:

  • TeamsJS SDK の最新バージョンを使用します。

  • アプリ マニフェスト (以前は Teams アプリ マニフェストと呼ばれる) は、サード パーティのストレージ アプリのアプリ ID で構成する必要があります。 defaultFilesUploadAppId という名前のプロパティを検索し、アプリ ID を構成します。

    注:

    プレーン文字列のみを使用し、逆コンマを使用しないでください。

    または、管理者はサード パーティのクラウド ストレージ アプリ ID を構成することもできます。 詳細については、「 サードパーティのストレージへのファイル のドラッグ ドロップの管理設定」を参照してください。

  • アプリ マニフェストには、 Uploadとしての最初のアクションが必要です。 ファイルがメッセージ作成領域にドラッグ アンド ドロップされると、このアクションによってアプリがアップロード モードで自動的に開きます。

    次のコード サンプルは、composeExtensionsの下にUploadとして追加された最初のアクションを示しています。

    {
      "$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 アプリにサード パーティ製のストレージを設定する場合は、TeamsJS SDK でthirdPartyCloudStoragegetDragAndDropFiles API を使用する必要があります。 この API を使用すると、Teams チャットまたはチャネルのメッセージ作成領域からサード パーティのストレージ アプリにファイルをアップロードできます。

注:

thirdPartyCloudStorage API は、ファイルがドラッグ アンド ドロップされるシナリオでのみ使用されます。 メッセージ作成ツール バーのプラス記号アイコンを使用してファイルを追加する場合は使用されません。

Teams でドラッグ アンド ドロップされたファイルにサード パーティ製のクラウド ストレージを実装するには、次の手順に従います。

  1. プロパティ defaultFilesUploadAppId がサード パーティのストレージ アプリ ID で構成されており、最初のアクションがアプリ マニフェストで Upload として設定されていることを確認します。

  2. アプリケーション コンテキストから次のパラメーターを使用して、一意の ID を作成します。

    • const uniqueIdForChats = replyToId + id (つまり、 threadId)。

      上記のすべての値は、アプリケーション コンテキストに存在します。 "commandContext" = "thirdParty"場合は、サード パーティのクラウド ストレージ アプリがプログラムで開かれていることを判断するのに役立ちます。 コンテキストに replyToId が存在しない場合、一意の ID は ""+threadId

      次の図は、一意の ID を作成するための値が強調表示されたアプリケーション コンテキストのサンプルを示しています。

      一意の ID を作成する 2 つの値が存在するサンプル コンテキストを示すスクリーンショット。

  3. TeamsJS SDK のthirdPartyCloudStoragegetDragAndDropFiles API を使用して、ドラッグ アンド ドロップされたファイルをフェッチします。

  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. サード パーティのクラウド ストレージ アプリは、uniqueIDを使用して getDragAndDropFiles API を呼び出して、ドラッグ アンド ドロップされたファイルをフェッチします。

  3. thirdPartyCloudStorage API は、ドラッグ アンド ドロップされたファイルを返します。

  4. ファイルは、コールバック関数を介してサード パーティのクラウド ストレージ アプリで受信されます。

  5. その後、サード パーティのクラウド ストレージ アプリによってファイルがストレージにアップロードされます。

コード サンプル

サンプルの名前 説明 Node.js .NET Python
サード パーティのクラウド ストレージ メッセージ作成領域にドラッグ アンド ドロップされたファイルに対してサード パーティ製クラウド ストレージ アプリを実装する方法を示します。 表示 表示 表示

関連項目

アプリ マニフェスト