プライベート タブを作成する
[個人] タブは、個人を対象としたボットと共に、個人用アプリの一部であり、1 人のユーザーを対象としています。 簡単にアクセスできるように、左側のナビゲーション バーにピン留めすることができます。 個人用タブの順序を変更することもできます。
個人用タブを作成するための前提条件がすべて揃っていることを確認します。
注:
このトピックでは、Microsoft Teams JavaScript クライアント ライブラリ (TeamsJS) のバージョン 2.0.x を反映しています。 以前のバージョンを使用している場合は、 最新の TeamsJS と以前のバージョンの違いに関するガイダンスについては、TeamsJS ライブラリの概要を参照してください。
Node.js を使用して個人用タブを作成する
コマンド プロンプトで、Node.js のインストール後に次のコマンドを入力して Yeoman パッケージと gulp-cli パッケージをインストールします。
npm install yo gulp-cli --global
コマンド プロンプトで、次のコマンドを入力して Microsoft Teams アプリ ジェネレーターをインストールします。
npm install generator-teams --global
個人用タブを作成する手順を次に示します。
- 個人用タブを使用してアプリケーションを生成する
- 個人用タブにコンテンツ ページを追加する
- アプリ パッケージを作成する
- デーモン アプリケーションをビルドして実行する
- 個人用タブへのセキュリティで保護されたトンネルを確立する
- Microsoft Teams にアプリ パッケージをアップロードする
個人用タブを使用してアプリケーションを生成する
コマンド プロンプトで、個人用タブの新しいディレクトリを作成します。
新しいディレクトリに次のコマンドを入力して、Microsoft Teams アプリ ジェネレーターを開始します。
yo teams
ファイルを更新するように Microsoft Teams アプリ ジェネレーターから求められた一連の質問に値を指定します
manifest.json
。manifest.json ファイルを更新するための一連の質問
ソリューション名は何ですか?
ソリューション名はプロジェクト名です。 候補の名前をそのまま使用するには、Enter キーを押します。
ファイルをどこに保存しますか?
現在、プロジェクト ディレクトリにいます。 Enter キーを押します。
Microsoft Teams アプリ プロジェクトのタイトル
タイトルはアプリ パッケージ名であり、アプリ マニフェストと説明で使用されます。 タイトルを入力するか、Enter キーを押して既定の名前をそのまま使用します。
(会社名) の名前は? (最大 32 文字)
会社名はアプリ マニフェストで使用されます。 会社名を入力するか、Enter キーを押して既定の名前をそのまま使用します。
使用するマニフェスト バージョン
既定のスキーマを選択します。
クイック スキャフォールディング? (Y/n)
既定値は [はい] です。Microsoft パートナー ID を入力するには、[n] を入力します。
Microsoft パートナー ID をお持ちの場合は、入力してください。 (スキップするには空白のままにします)
このフィールドは必須ではなく、既に Microsoft Partner Network に参加している場合にのみ使用する必要があります。
プロジェクトに何を追加しますか?
[ * ) A タブを選択します。
このソリューションをホストする URL
既定では、ジェネレーターは Azure Web サイト URL を提案します。 アプリをローカルでのみテストしているため、有効な URL は必要ありません。
アプリ/タブが読み込まれたときに、読み込みインジケーターを表示しますか?
アプリまたはタブの読み込み時に読み込みインジケーターを含めないことを選択します。 既定値は [いいえ] です。[n] を入力します。
個人用アプリをタブ ヘッダーバーなしでレンダリングしますか?
タブのヘッダーバーなしで表示される個人用アプリを含めないことを選択します。 既定値は [いいえ] です。[n] を入力します。
テスト フレームワークと初期テストを含めますか? (y/N)
このプロジェクトのテスト フレームワークを含めないことを選択します。 既定値は [いいえ] です。[n] を入力します。
ESLint サポートを含めますか? (y/N)
ESLint サポートを含めないことを選択します。 既定値は [いいえ] です。[n] を入力します。
テレメトリに Azure Applications Insights を使用しますか? (y/N)
Azure Application Insights を含めないことを選択します。 既定値は [いいえ] です。[n] を入力します。
既定のタブ名 (最大 16 文字)
タブに名前を付けます。このタブ名は、ファイルまたは URL パス コンポーネントとしてプロジェクト全体で使用されます。
作成するタブの種類を選択してください。
方向キーを使用して、[個人用] を選択します。
タブのMicrosoft Azure Active Directory (Azure AD) シングル サインオンのサポートが必要ですか?
タブの Azure AD シングル サインオンを含めないことを選択します。既定値は yes で、n と入力します。
注:
タブでは、ユーザーが戻るボタン (またはタブから移動) を選択してホーム ページに戻った場合にのみ、タブのホーム ページが表示されます。 タブは、デザインによって以前の状態を維持または保持しません。
個人用タブにコンテンツ ページを追加する
コンテンツ ページを作成し、個人用タブ アプリケーションの既存のファイルを更新します:
次のマークアップを使用して、Visual Studio Code に新しい personal.html ファイルを作成します。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> <!-- Todo: add your a title here --> </title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- inject:css --> <!-- endinject --> </head> <body> <h1>Personal Tab</h1> <p><img src="/assets/icon.png"></p> <p>This is your personal tab!</p> </body> </html>
次の場所にあるアプリケーションのパブリック フォルダーに personal.html を保存します。
./src/public/<yourDefaultTabNameTab>/personal.html
Visual Studio Code 内の次の場所から
manifest.json
を開きます。./src/manifest/manifest.json
空の
staticTabs
配列 (staticTabs":[]
) に次を追加し、次の JSON オブジェクトを追加します:{ "entityId": "personalTab", "name": "Personal Tab ", "contentUrl": "https://{{PUBLIC_HOSTNAME}}/<yourDefaultTabNameTab>/personal.html", "websiteUrl": "https://{{PUBLIC_HOSTNAME}}", "scopes": ["personal"] }
重要
path コンポーネント yourDefaultTabNameTab は、既定のタブ名 のジェネレーターに入力した値プラス単語 Tab になります。
たとえば、DefaultTabName は MyTab、次に /MyTabTab/ です。
contentURL パス コンポーネント yourDefaultTabNameTab を実際のタブ名で更新します。
更新された
manifest.json
ファイルを保存します。次のパスから Visual Studio Code で Tab.ts を開き、iFrame にコンテンツ ページを提供します。
./src/server/<yourDefaultTabNameTab>/<yourDefaultTabNameTab>.ts
iFrame デコレーターの一覧に次を追加します。
@PreventIframe("/<yourDefaultTabName Tab>/personal.html")
更新されたファイルを保存します。 コードはこれで完了です。
アプリ パッケージを作成する
Teams でアプリケーションをビルドして実行するには、アプリ パッケージが必要です。 アプリ パッケージは、manifest.json
ファイルを検証し、./package
ディレクトリに zip フォルダーを生成する gulp タスクを使用して作成されます。 コマンド プロンプトで、コマンド gulp manifest
を実行します。
アプリケーションをビルドして実行する
アプリケーションをビルドする
コマンド プロンプトで次のコマンドを入力して、ソリューションを ./dist フォルダーに移します:
gulp build
アプリケーションを実行する
コマンド プロンプトで、次のコマンドを入力してローカル Web サーバーを起動します。
gulp serve
ブラウザーで
http://localhost:3007/<yourDefaultAppNameTab>/
を入力して、アプリケーションのホーム ページを表示します。http://localhost:3007/<yourDefaultAppNameTab>/personal.html
を参照して、個人用タブを表示します。
タブへのセキュリティで保護されたトンネルを確立する
コマンド プロンプトでローカルホストを終了し、次のコマンドを入力して、タブへのセキュリティで保護されたトンネルを確立します:
gulp ngrok-serve
タブが ngrok を介して Microsoft Teams にアップロードされ、正常に保存されたら、トンネル セッションが終了するまで Teams で表示できます。
Microsoft Teams にアプリ パッケージをアップロードする
[Teams] に移動し、[ Apps
] を選択します。
[アプリの管理] [アプリ>>のアップロード] [カスタム アプリのアップロード] の順に選択します。
プロジェクト ディレクトリに移動し、 ./package フォルダーに移動し、zip フォルダーを選択して [開く] を選択します。
ダイアログで [追加] を選択します。 タブが Teams にアップロードされます。
Teams の左側のウィンドウで省略記号 ●●● を選択し、アップロードしたアプリを選択して個人用タブを表示します。
これで、Teams で個人用タブが正常に作成され、追加されました。
Teams に個人用タブがあるため、個人用タブを並べ替えることもできます。
ASP.NET Coreを使用して個人用タブを作成する
コマンド プロンプトで、タブ プロジェクトの新しいディレクトリを作成します。
次のコマンドを使用してサンプル リポジトリを新しいディレクトリに複製するか、ソース コード をダウンロードしてファイルを抽出できます:
git clone https://github.com/OfficeDev/Microsoft-Teams-Samples.git
個人用タブを作成する手順を次に示します。
- 個人用タブを使用してアプリケーションを生成する
- アプリケーションを更新して実行する
- タブへのセキュリティで保護されたトンネルを確立する
- 開発者ポータルを使用してアプリ パッケージを更新する
- Teams でアプリをプレビューする
個人用タブを使用してアプリケーションを生成する
Visual Studio を開き、[プロジェクトまたはソリューションを開く] を選択します。
[Microsoft-Teams-Samples] > [samples] > [tab-personal] > [razor-csharp] フォルダーに移動し、PersonalTab.sln を開きます。
Visual Studioで F5 を選択するか、アプリケーションの [デバッグ] メニューから [デバッグの開始] を選択して、アプリケーションが正しく読み込まれたかどうかを確認します。 ブラウザーで、次の URL に移動します。
<http://localhost:3978/>
<http://localhost:3978/personalTab>
<http://localhost:3978/privacy>
<http://localhost:3978/tou>
ソース コードを確認する
Startup.cs
このプロジェクトは ASP.NET Core 3.1 Web アプリケーションの空のテンプレートから作成され、セットアップ時に [Advanced - Configure for HTTPS] チェック ボックスがオンになっています。 MVC サービスは、依存関係挿入フレームワーク ConfigureServices()
のメソッドによって登録されます。 また、空のテンプレートでは、既定では静的コンテンツの提供が有効にされないため、次のコードを使用して静的ファイル ミドルウェアがメソッド Configure()
に追加されます。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseMvc();
}
wwwroot フォルダー
ASP.NET Core では、Web ルート フォルダーは、アプリケーションが静的ファイルを検索する場所です。
Index.cshtml
ASP.NET Core は、Index という名前のファイルをサイトの既定またはホーム ページとして扱います。 ブラウザー URL がサイトのルートを指すと、Index.cshtml がアプリケーションのホーム ページとして表示されます。
AppManifest フォルダー
このフォルダーには、次の必須アプリ パッケージ ファイルが含まれています:
- 192 x 192 ピクセルのフル カラー アイコン。
- 32 x 32 ピクセルの透明なアウトライン アイコン。
- アプリの属性を指定する
manifest.json
ファイル。
これらのファイルは、Teams へのタブのアップロードに使用するために、アプリ パッケージで zip 形式にする必要があります。 Teams は、マニフェストで指定された をcontentUrl
読み込み、それを iframe> に<埋め込み、タブにレンダリングします。
.csproj
Visual Studio ソリューション エクスプローラーで、プロジェクトを右クリックし、[プロジェクト ファイルの編集] を選択します。 ファイルの最後には、アプリケーションのビルド時に zip フォルダーを作成して更新する次のコードが表示されます。
<PropertyGroup>
<PostBuildEvent>powershell.exe Compress-Archive -Path \"$(ProjectDir)AppManifest\*\" -DestinationPath \"$(TargetDir)tab.zip\" -Force</PostBuildEvent>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Include="AppManifest\icon-outline.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="AppManifest\icon-color.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="AppManifest\manifest.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>
アプリケーションを更新して実行する
Visual Studio ソリューション エクスプローラーを開き、[ページ] > [共有] フォルダーに移動し、_Layout.cshtml を開き、
<head>
タグ セクションに次を追加します:<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.4.1.min.js"></script> <script src="https://res.cdn.office.net/teams-js/2.0.0/js/MicrosoftTeams.min.js" integrity="sha384-QtTBFeFlfRDZBfwHJHYQp7MdLJ2C3sfAEB1Qpy+YblvjavBye+q87TELpTnvlXw4" crossorigin="anonymous"></script>
Visual Studio ソリューション エクスプローラーで、Pages フォルダーから PersonalTab.cshtml を開き、タグを追加
microsoftTeams.app.initialize()
します<script>
。[保存] を選択します。
Visual Studioで F5 を選択するか、アプリケーションの [デバッグ] メニューから [デバッグの開始] を選択します。
タブへのセキュリティで保護されたトンネルを確立する
プロジェクト ディレクトリのルートにあるコマンド プロンプトで、次のコマンドを実行して、タブへのセキュリティで保護されたトンネルを確立します。
ngrok http 3978 --host-header=localhost
開発者ポータルを使用してアプリ パッケージを更新する
開発者ポータルに移動します。
アプリを開き、[アプリのインポート] を選択します。
アプリ パッケージ ファイル名は であり
tab.zip
、パスで/bin/Debug/netcoreapp3.1/tab.zip
使用できます。開発者ポータルで
tab.zip
を選択して開きます。既定の アプリ ID が作成され、[基本情報] セクションに入力されます。
[説明] にアプリの短い説明と長い説明を追加します。
[開発者情報] で、必要な詳細を追加し、Web サイト (有効な HTTPS URL である必要があります) に ngrok HTTPS URL を指定します。
[アプリ URL] で、[プライバシー ポリシー] と [使用条件] を に
https://<yourngrokurl>/privacy
https://<yourngrokurl>/tou
更新し、[保存] を選択します。[アプリの機能] で、[個人用アプリ] [最初の個人用アプリ>の作成] タブを選択し、名前を入力し、 で
https://<yourngrokurl>/personalTab
コンテンツ URL を更新します。 [Web サイト URL] フィールドは空白のままにし、ドロップダウン リスト から [Context as personalTab] を選択し、[確認] を選択 します。[保存] を選択します。
[ドメイン] セクションでは、タブのドメインに HTTPS プレフィックス
<yourngrokurl>.ngrok.io
のない ngrok URL を含める必要があります。
Teams でアプリをプレビューする
[開発者ポータル] ツール バーの [Teamsでプレビュー] を選択すると、アプリが正常にサイドロードされたことを開発者ポータルから通知されます。 アプリの [追加] ページが表示されます。
[追加] を選択して、Teams にアプリを読み込みます。 タブが Teams で利用できるようになりました。
これで、Teams で個人用タブが正常に作成され、追加されました。
Teams に個人用タブがあるため、個人用タブを並べ替えることもできます。
ASP.NET Core MVC を使用して個人用タブを作成する
コマンド プロンプトで、タブ プロジェクトの新しいディレクトリを作成します。
次のコマンドを使用してサンプル リポジトリを新しいディレクトリに複製するか、ソース コード をダウンロードしてファイルを抽出できます:
git clone https://github.com/OfficeDev/Microsoft-Teams-Samples.git
個人用タブを作成する手順を次に示します。
- 個人用タブを使用してアプリケーションを生成する
- アプリケーションを更新して実行する
- タブへのセキュリティで保護されたトンネルを確立する
- 開発者ポータルを使用してアプリ パッケージを更新する
- Teams でアプリをプレビューする
個人用タブを使用してアプリケーションを生成する
Visual Studio を開き、[プロジェクトまたはソリューションを開く] を選択します。
[Microsoft-Teams-Samples] > [samples] > [tab-personal] > [mvc-csharp] フォルダーに移動し、Visual Studio で PersonalTabMVC.sln を開きます。
Visual Studio で F5 を選択するか、アプリケーションの [デバッグ] メニューから [デバッグの開始] を選択して、アプリケーションが正しく読み込まれたかどうかを確認します。 ブラウザーで、次の URL に移動します。
<http://localhost:3978>
<http://localhost:3978/personalTab>
<http://localhost:3978/privacy>
<http://localhost:3978/tou>
ソース コードを確認する
Startup.cs
このプロジェクトは ASP.NET Core 3.1 Web アプリケーションの空のテンプレートから作成され、セットアップ時に [Advanced - Configure for HTTPS] チェック ボックスがオンになっています。 MVC サービスは、依存関係挿入フレームワーク ConfigureServices()
のメソッドによって登録されます。 また、空のテンプレートでは、既定では静的コンテンツの提供が有効にされないため、次のコードを使用して静的ファイル ミドルウェアがメソッド Configure()
に追加されます。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseMvc();
}
wwwroot フォルダー
ASP.NET Core では、Web ルート フォルダーは、アプリケーションが静的ファイルを検索する場所です。
AppManifest フォルダー
このフォルダーには、次の必須アプリ パッケージ ファイルが含まれています:
- 192 x 192 ピクセルのフル カラー アイコン。
- 32 x 32 ピクセルの透明なアウトライン アイコン。
- アプリの属性を指定する
manifest.json
ファイル。
これらのファイルは、Teams へのタブのアップロードに使用するために、アプリ パッケージで zip 形式にする必要があります。 Teams は、マニフェストで指定された を contentUrl
読み込み、それを iFrame に埋め込み、タブにレンダリングします。
.csproj
Visual Studio ソリューション エクスプローラーで、プロジェクトを右クリックし、[プロジェクト ファイルの編集] を選択します。 ファイルの最後には、アプリケーションのビルド時に zip フォルダーを作成して更新する次のコードが表示されます:
<PropertyGroup>
<PostBuildEvent>powershell.exe Compress-Archive -Path \"$(ProjectDir)AppManifest\*\" -DestinationPath \"$(TargetDir)tab.zip\" -Force</PostBuildEvent>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Include="AppManifest\icon-outline.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="AppManifest\icon-color.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="AppManifest\manifest.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>
モデル
PersonalTab.cs は、ユーザーが [PersonalTab] ビューでボタンを選択したときに PersonalTabController から呼び出されるメッセージ オブジェクトとメソッドを表示します。
ビュー
これらのビューは、ASP.NET Core MVC のさまざまなビューです。
ホーム: ASP.NET Core は、Index という名前のファイルをサイトの既定またはホーム ページとして扱います。 ブラウザー URL がサイトのルートを指すと、Index.cshtml がアプリケーションのホーム ページとして表示されます。
共有: 部分ビュー マークアップ _Layout.cshtml には、アプリケーションの全体的なページ構造と共有ビジュアル要素が含まれています。 また、Teams ライブラリも参照します。
コントローラー
コントローラーは、ViewBag
プロパティを使用して、値を Views に動的に転送します。
アプリケーションを更新して実行する
Visual Studio ソリューション エクスプローラーを開き、[ビュー] > [[共有] フォルダーに移動し、_Layout.cshtml を開き、
<head>
タグ セクションに次を追加します:<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.4.1.min.js"></script> <script src="https://res.cdn.office.net/teams-js/2.0.0/js/MicrosoftTeams.min.js" integrity="sha384-QtTBFeFlfRDZBfwHJHYQp7MdLJ2C3sfAEB1Qpy+YblvjavBye+q87TELpTnvlXw4" crossorigin="anonymous"></script>
Visual Studio ソリューション エクスプローラーで、Views>PersonalTab フォルダーから PersonalTab.cshtml を開き、タグ内にを追加
microsoftTeams.app.initialize()
します<script>
。[保存] を選択します。
Visual Studioで F5 を選択するか、アプリケーションの [デバッグ] メニューから [デバッグの開始] を選択します。
タブへのセキュリティで保護されたトンネルを確立する
プロジェクト ディレクトリのルートにあるコマンド プロンプトで、次のコマンドを実行して、タブへのセキュリティで保護されたトンネルを確立します。
ngrok http 3978 --host-header=localhost
開発者ポータルを使用してアプリ パッケージを更新する
開発者ポータルに移動します。
アプリを開き、[アプリのインポート] を選択します。
アプリ パッケージの名前は tab.zip です。 次のパスで使用できます:
/bin/Debug/netcoreapp3.1/tab.zip
tab.zip を選択し、開発者ポータルで開きます。
既定の アプリ ID が作成され、[基本情報] セクションに入力されます。
[説明] にアプリの短い説明と長い説明を追加します。
[ 開発者情報] で、必要な詳細を追加し、 Web サイト (有効な HTTPS URL である必要があります) に ngrok HTTPS URL を指定します。
[アプリ URL] で、[プライバシー ポリシー] と [使用条件] を に
https://<yourngrokurl>/privacy
https://<yourngrokurl>/tou
更新し、[保存] を選択します。[アプリの機能] で、[個人用アプリ] [最初の個人用アプリ>の作成] タブを選択し、名前を入力し、 で
https://<yourngrokurl>/personalTab
コンテンツ URL を更新します。 [Web サイト URL] フィールドは空白のままにし、ドロップダウン リスト から [Context as personalTab] を選択し、[確認] を選択 します。[保存] を選択します。
[ドメイン] セクションでは、タブのドメインに HTTPS プレフィックス
<yourngrokurl>.ngrok.io
のない ngrok URL を含める必要があります。
Teams でアプリをプレビューする
[開発者ポータル] ツール バーの [Teamsでプレビュー] を選択すると、アプリが正常にサイドロードされたことを開発者ポータルから通知されます。 アプリの [追加] ページが表示されます。
[追加] を選択して、Teams にアプリを読み込みます。 タブが Teams で利用できるようになりました。
これで、Teams で個人用タブが正常に作成され、追加されました。
Teams に個人用タブがあるため、個人用タブを並べ替えることもできます。
静的な個人用タブの並べ替え
マニフェスト バージョン 1.7 以降では、開発者が個人用アプリ内のすべてのタブを再配置できます。 ボット チャット タブは移動できます。これは常に既定で最初の位置に設定され、個人用アプリ タブ ヘッダー内の任意の場所に移動できます。 2 つの予約済みタブ entityId
キーワードが宣言されます:会話とプロフィール。
個人用スコープを使用してボットを作成すると、既定では個人用アプリの最初のタブ位置に表示されます。 別の位置に移動する場合は、予約済みのキーワードである "会話" を使用して静的タブ オブジェクトをマニフェストに追加する必要があります。 [会話] タブは、staticTabs
配列内の [会話] タブを追加する場所に応じて、Web またはデスクトップに表示されます。
{
"staticTabs":[
{
},
{
"entityId":"conversations",
"scopes":[
"personal"
]
}
]
}
コード サンプル
サンプルの名前 | 説明 | .NET | Node.js | マニフェスト |
---|---|---|---|---|
Tab personal | ASP.Net Core と MVC を使用したカスタム チャネル/グループ タブの作成を紹介するサンプル アプリ。 | 表示 | 該当なし | 表示 |