アプリ マニフェストのスキーマ
アプリ マニフェスト (以前は Teams アプリ マニフェスト) では、アプリが Microsoft Teams 製品に統合される方法について説明します。 アプリ マニフェストは、https://developer.microsoft.com/json-schemas/teams/v1.16/MicrosoftTeams.schema.json
でホストされているスキーマに準拠している必要があります。 以前のバージョン 1.0、1.1,...,1.15、および現在のバージョンはそれぞれ 1.16 です (URL で "v1.x" を使用)。
各バージョンで行われた変更の詳細については、「 アプリ マニフェストの変更ログ 」を参照し、以前のバージョンについては、「 アプリ マニフェストのバージョン」を参照してください。
次の表は、さまざまなアプリのシナリオに応じた TeamsJS バージョンとアプリ マニフェスト バージョンを示しています。
TeamsJS のバージョン | アプリ マニフェストのバージョン | 次のステップ | |
---|---|---|---|
Microsoft 365 / Outlook に拡張された Teams アプリ | TeamsJS v.2.0 以降 | 1.13 以降 | Teams アプリを拡張して Microsoft 365 全体で実行する、または新しい Microsoft 365 アプリを作成する |
既存の Teams 専用アプリ | 可能な場合、TeamsJS v.2.0 に更新する (v.1.12 はまだサポートされています*) | 1.12 | TeamsJS の下位互換性について理解し、TeamsJS v.2.0 に更新する |
新しい Teams 専用アプリ | TeamsJS v.2.0 以降 | 1.12 | Teams Toolkit を使用して新しい Teams アプリを作成する |
*Teams 専用アプリを含む最新の機能強化と新機能のサポートを利用するには、可能な限り最新の TeamsJS (v.2.0 以降) を使用します。TeamsJS v.1.12 は引き続きサポートされますが、新機能や機能強化は追加されません。1.12 スキーマと 1.13 スキーマは同じです。詳細については、「 TeamsJS ライブラリ」を参照してください。
注:
Teams アプリでアプリ マニフェスト バージョン 1.13 以降を使用している場合は、アプリが Microsoft 365 または Outlook 全体で実行されるようにアプリを拡張するための条件を満たしていることを確認します。
アプリ マニフェスト スキーマのサンプルを次に示します。
サンプル アプリ マニフェスト
{
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
"manifestVersion": "1.16",
"version": "1.0.0",
"id": "%MICROSOFT-APP-ID%",
"localizationInfo": {
"defaultLanguageTag": "en-us",
"additionalLanguages": [
{
"languageTag": "es-es",
"file": "en-us.json"
}
]
},
"developer": {
"name": "Publisher Name",
"websiteUrl": "https://example.com/",
"privacyUrl": "https://example.com/privacy",
"termsOfUseUrl": "https://example.com/app-tos",
"mpnId": "1234567890"
},
"name": {
"short": "Name of your app (<=30 chars)",
"full": "Full name of app, if longer than 30 characters (<=100 chars)"
},
"description": {
"short": "Short description of your app (<= 80 chars)",
"full": "Full description of your app (<= 4000 chars)"
},
"icons": {
"outline": "A relative path to a transparent .png icon — 32px X 32px",
"color": "A relative path to a full color .png icon — 192px X 192px"
},
"accentColor": "A valid HTML color code.",
"configurableTabs": [
{
"configurationUrl": "https://contoso.com/teamstab/configure",
"scopes": [
"team",
"groupChat"
],
"canUpdateConfiguration": true,
"context": [
"channelTab",
"privateChatTab",
"meetingChatTab",
"meetingDetailsTab",
"meetingSidePanel",
"meetingStage"
],
"sharePointPreviewImage": "Relative path to a tab preview image for use in SharePoint — 1024px X 768",
"supportedSharePointHosts": [
"sharePointFullPage",
"sharePointWebPart"
]
}
],
"staticTabs": [
{
"entityId": "unique Id for the page entity",
"scopes": [
"personal"
],
"context": [
"personalTab",
"channelTab"
],
"name": "Display name of tab",
"contentUrl": "https://contoso.com/content (displayed in Teams canvas)",
"websiteUrl": "https://contoso.com/content (displayed in web browser)",
"searchUrl": "https://contoso.com/content (displayed in web browser)"
}
],
"supportedChannelTypes": [
"sharedChannels",
"privateChannels"
],
"bots": [
{
"botId": "%MICROSOFT-APP-ID-REGISTERED-WITH-BOT-FRAMEWORK%",
"scopes": [
"team",
"personal",
"groupChat"
],
"needsChannelSelector": false,
"isNotificationOnly": false,
"supportsFiles": true,
"supportsCalling": false,
"supportsVideo": true,
"commandLists": [
{
"scopes": [
"team",
"groupChat"
],
"commands": [
{
"title": "Command 1",
"description": "Description of Command 1"
},
{
"title": "Command 2",
"description": "Description of Command 2"
}
]
},
{
"scopes": [
"personal",
"groupChat"
],
"commands": [
{
"title": "Personal command 1",
"description": "Description of Personal command 1"
},
{
"title": "Personal command N",
"description": "Description of Personal command N"
}
]
}
]
}
],
"connectors": [
{
"connectorId": "GUID-FROM-CONNECTOR-DEV-PORTAL%",
"scopes": [
"team"
],
"configurationUrl": "https://contoso.com/teamsconnector/configure"
}
],
"composeExtensions": [
{
"canUpdateConfiguration": true,
"botId": "%MICROSOFT-APP-ID-REGISTERED-WITH-BOT-FRAMEWORK%",
"commands": [
{
"id": "exampleCmd1",
"title": "Example Command",
"type": "query",
"context": [
"compose",
"commandBox"
],
"description": "Command Description; e.g., Search on the web",
"initialRun": true,
"fetchTask": false,
"parameters": [
{
"name": "keyword",
"title": "Search keywords",
"inputType": "choiceset",
"description": "Enter the keywords to search for",
"value": "Initial value for the parameter",
"choices": [
{
"title": "Title of the choice",
"value": "Value of the choice"
}
]
}
]
},
{
"id": "exampleCmd2",
"title": "Example Command 2",
"type": "action",
"context": [
"message"
],
"description": "Command Description; e.g., Add a customer",
"initialRun": true,
"fetchTask": false ,
"parameters": [
{
"name": "custinfo",
"title": "Customer name",
"description": "Enter a customer name",
"inputType": "text"
}
]
},
{
"id": "exampleCmd3",
"title": "Example Command 3",
"type": "action",
"context": [
"compose",
"commandBox",
"message"
],
"description": "Command Description; e.g., Add a customer",
"fetchTask": false,
"taskInfo": {
"title": "Initial dialog title",
"width": "Dialog width",
"height": "Dialog height",
"url": "Initial webview URL"
}
}
],
"messageHandlers": [
{
"type": "link",
"value": {
"domains": [
"mysite.someplace.com",
"othersite.someplace.com"
],
"supportsAnonymizedPayloads": false
}
}
]
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"devicePermissions": [
"geolocation",
"media",
"notifications",
"midi",
"openExternal"
],
"validDomains": [
"contoso.com",
"mysite.someplace.com",
"othersite.someplace.com"
],
"webApplicationInfo": {
"id": "AAD App ID",
"resource": "Resource URL for acquiring auth token for SSO"
},
"authorization": {
"permissions": {
"resourceSpecific": [
{
"type": "Application",
"name": "ChannelSettings.Read.Group"
},
{
"type": "Delegated",
"name": "ChannelMeetingParticipant.Read.Group"
}
]
}
},
"showLoadingIndicator": false,
"isFullScreen": false,
"activities": {
"activityTypes": [
{
"type": "taskCreated",
"description": "Task created activity",
"templateText": "<team member> created task <taskId> for you"
},
{
"type": "userMention",
"description": "Personal mention activity",
"templateText": "<team member> mentioned you"
}
]
},
"defaultBlockUntilAdminAction": true,
"publisherDocsUrl": "https://website.com/app-info",
"defaultInstallScope": "meetings",
"defaultGroupCapability": {
"meetings": "tab",
"team": "bot",
"groupChat": "bot"
},
"configurableProperties": [
"name",
"shortDescription",
"longDescription",
"smallImageUrl",
"largeImageUrl",
"accentColor",
"developerUrl",
"privacyUrl",
"termsOfUseUrl"
],
"subscriptionOffer": {
"offerId": "publisherId.offerId"
},
"meetingExtensionDefinition": {
"scenes": [
{
"id": "9082c811-7e6a-4174-8173-6ccd57d377e6",
"name": "Getting started sample",
"file": "scenes/sceneMetadata.json",
"preview": "scenes/scenePreview.png",
"maxAudience": 15,
"seatsReservedForOrganizersOrPresenters": 0
},
{
"id": "afeaed22-f89b-48e1-98b4-46a514344e4a",
"name": "Sample-1",
"file": "scenes/sceneMetadata.json",
"preview": "scenes/scenePreview.png",
"maxAudience": 15,
"seatsReservedForOrganizersOrPresenters": 3
}
]
}
}
スキーマは次のプロパティを定義します。
$schema
省略可能ですが、推奨 – 文字列
アプリ マニフェストの JSON スキーマを参照する https:// URL。
manifestVersion
必須 – 文字列
このマニフェストで使用されているアプリ マニフェスト スキーマのバージョン。 1.13
Outlook と Microsoft 365 アプリで Teams アプリのサポートを有効にするには、 を使用します。Teams 専用アプリには (またはそれ以前のバージョン) を使用1.12
します。
version
必須 – 文字列
特定のアプリのバージョン。 アプリ マニフェストで何かを更新する場合は、バージョンもインクリメントする必要があります。 これにより、新しいアプリ マニフェストがインストールされると、既存のマニフェストが上書きされ、ユーザーは新しい機能を受け取ります。 このアプリが Microsoft Teams ストアに送信されたら、新しいアプリ マニフェストを再送信して再検証する必要があります。 アプリ ユーザーは、アプリ マニフェストが承認されてから数時間後に、更新された新しいアプリ マニフェストを自動的に受け取ります。
アプリが権限の変更を要求した場合、ユーザーはアプリをアップグレードして再承認するよう求められます。
このバージョン文字列は、semver 標準 (MAJOR.MINOR.PATCH) に従う必要があります。
ID
必須 – Microsoft アプリ ID
ID は、Microsoft が生成したアプリの一意の識別子です。 ID の形式は GUID です。 ボットが Microsoft Bot Framework を介して登録されている場合は、ID があります。 タブの Web アプリが既に Microsoft にサインインしている場合は、ID があります。 ここに ID を入力する必要があります。 それ以外の場合は、Microsoft アプリケーション登録ポータルで新しい ID を生成する必要があります。 ボットを追加する場合は、同じ ID を使用してください。
Teams 管理 センターに格納されている ID は外部アプリ ID であり、トレースでは ExternalID として表示されます。
注:
AppSource で既存のアプリに更新プログラムを送信する場合は、アプリ マニフェストの ID を変更しないでください。
developer
必須 – オブジェクト
会社に関する情報を指定します。 Teams ストアに送信されるアプリの場合、これらの値は Teams ストアの登録情報の情報と一致する必要があります。 詳細については、 Teams ストアの発行ガイドラインに関するページを参照してください。 開発者名は、Teams ストアでのアプリの検出可能性を高めるのに役立ちます。
名前 | 最大サイズ | 必須 | 説明 |
---|---|---|---|
name |
32 文字 | ✔️ | 開発者の表示名。 |
websiteUrl |
2048 文字 | ✔️ | 開発者の Web サイトの The https:// URL。 このリンクは、ユーザーを会社または製品固有のランディング ページに移動する必要があります。 |
privacyUrl |
2048 文字 | ✔️ | 開発者のプライバシー ポリシーの https:// URL。 |
termsOfUseUrl |
2048 文字 | ✔️ | 開発者の使用条件の https:// URL。 |
mpnId |
10 文字 | 省略可能 アプリを構築しているパートナー組織を識別するMicrosoft パートナー ネットワーク ID。 |
name
必須 – オブジェクト
Teams エクスペリエンスでユーザーに表示されるアプリ エクスペリエンスの名前。 AppSource に送信されるアプリの場合、これらの値は AppSource エントリの情報と一致する必要があります。 short
と full
の値は異なっている必要があります。 アプリ名は、Teams ストアでのアプリの検出可能性を高めるのに役立ちます。
名前 | 最大サイズ | 必須 | 説明 |
---|---|---|---|
short |
30 文字 | ✔️ | アプリの短い表示名。 |
full |
100 文字 | ✔️ | アプリのフル ネーム。アプリのフル ネームが 30 文字を超える場合に使用されます。 |
description
必須 – オブジェクト
アプリについてユーザーに説明します。 AppSource に送信されるアプリの場合、これらの値は AppSource エントリの情報と一致する必要があります。 アプリの説明は、Teams ストアでのアプリの検出可能性を向上させるのに役立ちます。
説明があなたの経験をについて述べており、潜在的な顧客があなたの経験が何をするかを理解するのに役立つことを確認してください。 外部アカウントを使用する必要がある場合は、完全な説明にするよう気を配る必要があります。 short
と full
の値は異なっている必要があります。 短い説明は長い説明の中で繰り返すことはできません。また、他のアプリ名を含めることはできません。
名前 | 最大サイズ | 必須 | 説明 |
---|---|---|---|
short |
80 文字 | ✔️ | スペースが限られている場合に使用される、アプリ エクスペリエンスの簡単な説明。 |
full |
4,000 文字 | ✔️ | アプリの完全な説明。 |
localizationInfo
省略可能 – オブジェクト
既定の言語の指定を許可し、より多くの言語ファイルへのポインターを提供します。 詳細については、ローカライズをご覧ください。
名前 | 最大サイズ | 必須 | 説明 |
---|---|---|---|
defaultLanguageTag |
✔️ | この最上位レベルのアプリ マニフェスト ファイル内の文字列の言語タグ。 |
localizationInfo.additionalLanguages
より多くの言語翻訳を指定するオブジェクトの配列。
名前 | 最大サイズ | 必須 | 説明 |
---|---|---|---|
languageTag |
✔️ | 提供されたファイルの文字列の言語タグ。 | |
file |
2048 文字 | ✔️ | 翻訳された文字列を含む .json ファイルへの相対ファイル パス。 |
アイコン
必須 – オブジェクト
Teams アプリ内で使用されるアイコン。 アイコン ファイルは、アップロード パッケージの一部として含まれている必要があります。 詳細については、アイコンを参照してください。
名前 | 最大サイズ | 必須 | 説明 |
---|---|---|---|
outline |
32 x 32 ピクセル | ✔️ | 透明な 32x32 PNG アウトライン アイコンへの相対ファイル パス。 罫線の色は白にする必要があります。 |
color |
192 x 192 ピクセル | ✔️ | フル カラーの 192x192 PNG アイコンへの相対ファイル パス。 |
accentColor
必須 – HTML 16 進カラー コード
使用する色と、色アイコンの背景として。
値は、'#' で始まる有効な HTML カラー コードである必要があります (例; #4464ee
)。 詳細については、「 accentColor」を参照してください。
configurableTabs
省略可能 – 配列
アプリ エクスペリエンスにチーム チャネル タブ エクスペリエンスがあり、追加する前に追加の構成が必要な場合に使用されます。 構成可能なタブは、team
スコープおよび groupChat
スコープでのみサポートされており、同じタブを複数回構成できます。 ただし、アプリ マニフェストで定義できるのは 1 回だけです。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
configurationUrl |
String | 2048 文字 | ✔️ | タブを構成するときに使用する https:// URL。 |
scopes |
列挙型の配列 | 2 | ✔️ | 現在、構成可能なタブは、team スコープと groupChat スコープのみをサポートしています。 |
canUpdateConfiguration |
ブール値 | タブの構成のインスタンスを作成後にユーザーが更新できるかどうかを示す値。 既定値: true。 | ||
meetingSurfaces |
列挙型の配列 | 2 | タブがサポートされているmeetingSurfaceItem スコープのセット。 既定値: [sidepanel, stage]. |
|
context |
列挙型の配列 | 8 | タブがサポートされているcontextItem スコープのセット。 受け入れられた値: [personalTab、channelTab、privateChatTab、meetingChatTab、meetingDetailsTab、meetingSidePanel、meetingStage、callingSidepanel]。 |
|
sharePointPreviewImage |
String | 2048 | SharePoint で使用するためのタブ プレビュー画像への相対ファイル パス。 サイズは 1024x768 です。 | |
supportedSharePointHosts |
列挙型の配列 | 2 | タブを SharePoint で使用できるようにする方法を定義します。 オプションは sharePointFullPage と sharePointWebPart です。 |
staticTabs
省略可能 – 配列
ユーザーが手動で追加することなく、既定でピン留めできる一連のタブを定義します。 personal
スコープで宣言された静的タブは、常にアプリの個人的なエクスペリエンスに固定されます。 team
スコープで宣言された静的タブは現在サポートされていません。
このアイテムは、型 object
のすべての要素を持つ配列 (最大 16 要素) です。 このブロックは、静的タブ ソリューションを提供するソリューションにのみ必要です。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
entityId |
String | 64 文字 | ✔️ | タブが表示されるエンティティの一意の識別子。 |
name |
String | 128 文字 | タブの表示名。 | |
contentUrl |
String | 2048 文字 | Teams キャンバスに表示されるエンティティ UI を指す https:// URL。 | |
contentBotId |
String | 128 文字 | Bot Framework ポータルでボットに対して指定された Microsoft アプリ ID。 | |
websiteUrl |
String | 2048 文字 | ユーザーがブラウザでの表示を選択した場合に示す https:// URL。 | |
searchUrl |
String | 2048 文字 | ユーザーの検索クエリを指すhttps:// URL。 | |
scopes |
列挙型の配列 | 3 | ✔️ | 受け入れられる値: team 、、 personal 。 groupChat |
context |
列挙型の配列 | 8 | タブがサポートされているコンテキストのcontextItem セット。 受け入れられる値: personalTab 、channelTab 、、privateChatTab 、meetingChatTab 、meetingDetailsTab 、meetingStage 、meetingSidepanel 。 teamLevelApp 既定値: personalTab 、、channelTab 、privateChatTab 、meetingChatTab 。 meetingDetailsTab |
注:
groupChat
スコープとteam
スコープは、パブリック開発者プレビューでのみサポートされます。- コンテキストは
teamLevelApp
Education テナント専用です。 - この
searchUrl
機能は、サード パーティの開発者には使用できません。 - 関連するコンテンツを表示したり、認証フローを開始したりするためにタブにコンテキスト依存の情報が必要な場合は、詳細について「Microsoft Teams タブのコンテキストを取得する」を参照してください。
ボット
省略可能 – 配列
既定のコマンド プロパティなどのオプション情報とともに、ボット ソリューションを定義します。
項目は配列です (最大 1 つの要素 (現在、アプリごとに 1 つのボットのみが許可されています)、型 object
のすべての要素が含まれます。 このブロックは、ボット エクスペリエンスを提供するソリューションにのみ必要です。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
botId |
String | ✔️ | Bot Framework に登録された、ボット用の一意の Microsoft アプリ ID。 ID は、全体的なアプリ ID と同じにすることができます。 | |
scopes |
列挙型の配列 | 3 | ✔️ | ボットがエクスペリエンスを提供するのは、team 内のチャネルのコンテキスでなのか、グループ チャット (groupChat ) でなのか、あるいは個別のユーザーのみをエクスペリエンスの対象にする (personal ) のかを指定します。 これらのオプションは非排他的です。 |
needsChannelSelector |
ブール型 | ボットがユーザー ヒントを使用してボットを特定のチャネルに追加するかどうかを説明します。 既定: false |
||
isNotificationOnly |
Boolean | ボットが会話ボットではなく、一方向性の通知専用ボットなのかどうかを示します。 既定: false |
||
supportsFiles |
Boolean | パーソナル チャットでのファイルのアップロード/ダウンロード機能をボットでサポートするかどうかを示します。 既定: false |
||
supportsCalling |
ブール値 | ボットが音声通話をサポートしている場所を示す値。 重要: このプロパティは現在実験中です。 試験的なプロパティは不完全であり、完全に使用可能になる前に変更が加えられる可能性があります。 このプロパティは、テストと探索の目的でのみ提供されており、本番アプリケーションで使用することはできません。 既定: false |
||
supportsVideo |
Boolean | ボットがビデオ通話をサポートしている場所を示す値。 重要: このプロパティは現在実験中です。 試験的なプロパティは不完全であり、完全に使用可能になる前に変更が加えられる可能性があります。 このプロパティは、テストと探索の目的でのみ提供されており、本番アプリケーションで使用することはできません。 既定: false |
bots.commandLists
ボットがユーザーに推奨できるコマンドの一覧。 オブジェクトは、型 object
のすべての要素を持つ配列 (最大 2 つの要素) です。 ボットがサポートするスコープごとに個別のコマンド リストを定義する必要があります。 詳細については、「ボット メニュー」を参照してください。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
items.scopes |
列挙型の配列 | 3 | ✔️ | コマンド リストが有効なスコープを指定します。 team 、personal 、groupChat の中から選択できます。 |
items.commands |
オブジェクトの配列 | 10 | ✔️ | ボットがサポートするコマンドの配列:title : ボット コマンドの名前 (文字列、32)description : コマンド構文とその引数 (文字列、128) の簡単な説明または例。 |
bots.commandLists.command
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
title | String | 32 | ✔️ | ボット コマンド名。 |
description | String | 128 文字 | ✔️ | 簡単なテキストの説明またはコマンド構文とその引数の例。 |
コネクタ
省略可能 – 配列
ブロックはconnectors
、アプリのMicrosoft 365 グループ用のコネクタ カードを定義します。
オブジェクトは、型object
のすべての要素を持つ配列 (最大 1 つの要素) です。 このブロックは、Connector を提供するソリューションにのみ必要です。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
configurationUrl |
String | 2048 文字 | ✔️ | インライン構成エクスペリエンスを使用してコネクタを構成するときに使用する https:// URL。 |
scopes |
列挙型の配列 | 1 | ✔️ | コネクタがエクスペリエンスを提供するのは、team 内のチャネルのコンテキスでなのか、個別のユーザーのみをエクスペリエンスの対象にする (personal ) のかを指定します。 現在、team スコープだけがサポートされています。 |
connectorId |
String | 64 文字 | ✔️ | コネクタ開発者ダッシュボードの ID に一致するコネクタの一意の識別子です。 |
composeExtensions
省略可能 – 配列
アプリのメッセージ拡張機能を定義します。
注:
機能の名前は 2017 年 11 月に "compose extension" から "message extension" に変更されましたが、既存の拡張機能が引き続き機能するように、アプリ マニフェスト名は変わりません。
アイテムは、型 object
のすべての要素を持つ配列 (最大 1 つの要素) です。 このブロックは、メッセージ拡張機能を提供するソリューションにのみ必要です。
名前 | 種類 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
botId |
String | ✔️ | ボット フレームワークに登録されている、メッセージ拡張機能をサポートするボットの一意の Microsoft アプリ ID。 ID は、全体のアプリ ID と同じにできます。 | |
commands |
オブジェクトの配列 | 10 | ✔️ | メッセージ拡張機能がサポートするコマンドの配列。 |
canUpdateConfiguration |
ブール型 | メッセージ拡張機能の構成をユーザーが更新できるかどうかを示す値。 既定値: false | ||
messageHandlers |
オブジェクトの配列 | 5 | 特定の条件が満たされた場合にアプリを呼び出すことができるハンドラーの一覧。 | |
messageHandlers.type |
String | メッセージ ハンドラーの種類。 "link" である必要があります。 |
||
messageHandlers.value.domains |
文字列の配列 | 2048 文字 | リンク メッセージ ハンドラーが登録できるドメインの配列。 | |
messageHandlers.value.supportsAnonymizedPayloads |
ブール型 | アプリのリンク メッセージ ハンドラーが匿名呼び出しフローをサポートするかどうかを示すブール値。 既定値は false です。 |
composeExtensions.commands
メッセージ拡張機能では、最大 10 のコマンドで 1 つ以上のコマンドを宣言する必要があります。 各コマンドは、UI ベースのエントリ ポイントからの潜在的な相互作用として Microsoft Teams に表示されます。
各コマンド 項目は、次の構造を持つオブジェクトです。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
id |
String | 64 文字 | ✔️ | コマンドの ID。 |
title |
String | 32 文字 | ✔️ | ユーザーフレンドリーなコマンド名。 |
type |
String | コマンドの種類。 query または action のいずれか。 既定: クエリ |
||
description |
String | 128 文字 | このコマンドの目的を示すためにユーザーに表示される説明。 | |
initialRun |
Boolean | ブール値は、コマンドがパラメーターなしで最初に実行されるかどうかを示します。 既定値は false です。 | ||
context |
文字列の配列 | 3 | メッセージ拡張機能の呼び出し先を定義します。 compose 、commandBox 、message の任意の組み合わせ。 既定値は ["compose","commandBox"] です。 |
|
fetchTask |
Boolean | タスク モジュールを動的にフェッチする必要があるかどうかを示すブール値。 既定値は false です。 | ||
taskInfo |
オブジェクト | メッセージ拡張コマンドを使用するときにプリロードするタスク モジュールを指定します。 | ||
taskInfo.title |
String | 64 文字 | 最初のダイアログ タイトル。 | |
taskInfo.width |
String | ダイアログの幅 - ピクセル単位の数値、または '大'、'中'、'小' などの既定のレイアウト。 | ||
taskInfo.height |
String | ダイアログの高さ - ピクセル単位の数値、または '大'、'中'、'小' などの既定のレイアウト。 | ||
taskInfo.url |
String | 初期 Web ビュー URL。 | ||
parameters |
オブジェクトの配列 | 5 個の項目 | ✔️ | コマンドが取得するパラメーターの一覧。 最小: 1; 最大: 5。 |
parameters.name |
String | 64 文字 | ✔️ | クライアントに表示されるパラメーターの名前。 パラメーター名は、ユーザー要求に含まれます。 |
parameters.title |
String | 32 文字 | ✔️ | パラメーターのユーザーフレンドリーなタイトル。 |
parameters.description |
String | 128 文字 | このパラメーターの目的を説明するユーザーフレンドリーな文字列。 | |
parameters.value |
String | 512 文字 | パラメーターの初期値。 現在、値はサポートされていません | |
parameters.inputType |
String | fetchTask: false のタスクモジュールに表示されるコントロールの型を定義します。 入力値には、 の 1 つだけを text, textarea, number, date, time, toggle, choiceset 指定できます。 |
||
parameters.choices |
オブジェクトの配列 | 10 個 | choiceset の選択オプションです。 parameter.inputType が choiceset である場合にのみ使用してください。 |
|
parameters.choices.title |
String | 128 文字 | ✔️ | 選択したタイトル。 |
parameters.choices.value |
String | 512 文字 | ✔️ | Value of the choice. |
アクセス許可
省略可能 – 文字列の配列
string
の配列。これは、アプリが要求する権限を指定し、エンド ユーザーに拡張機能の機能を知らせます。 次のオプションは、非排他的です。
identity
ユーザー ID 情報が必要です。messageTeamMembers
チーム メンバーに直接メッセージを送信するためのアクセス許可が必要です。
アプリの更新中にこれらの権限を変更すると、ユーザーは更新されたアプリを実行した後、同意プロセスを繰り返すことになります。 詳細については、「アプリの更新」を参照してください。
注:
アクセス許可は現在非推奨になっています。
devicePermissions
省略可能 – 文字列の配列
アプリがアクセスを要求するユーザーのデバイスにネイティブ機能を提供します。 オプションは、次のとおりです。
geolocation
media
notifications
midi
openExternal
validDomains
省略可能です。ただし 、必須の 場合は省略可能です。
アプリが Teams クライアント内にロードすることを予測する Web サイトの有効なドメインのリスト。 ドメイン リストには、*.example.com
などのワイルドカードを含めることができます。 有効なドメインは、ドメインの 1 つのセグメントと正確に一致します。 a.b.example.com
と一致させる必要がある場合は、*.*.example.com
を使用してください。 タブ構成またはコンテンツ UI がタブ構成以外のドメインに移動する場合は、そのドメインをここで指定する必要があります。
サポートする ID プロバイダーのドメインをアプリに含めないでください。 たとえば、Google ID を使用して認証するには、accounts.google.com にリダイレクトする必要がありますが、 に validDomains[]
accounts.google.com を含めてはいけません。
正常に機能するために独自の SharePoint URL を必要とする Teams アプリでは、有効なドメインリストに "{teamsitedomain}" が含まれています。
重要
直接またはワイルドカード () を使用して、コントロールの外部にあるドメインを追加しないでください。たとえば、.yoursite.com は有効ですが、*.onmicrosoft.com はコントロールの下に存在しないため無効です。
ワイルドカードを使用する場合は、次の規則が適用されます。
- サブドメイン セグメントにワイルドカードが含まれている場合は、セグメント内の唯一の文字である必要があります。
- ワイルドカード セグメントの前のセグメントもワイルドカード セグメントである必要があります。
たとえば、 *.*.domain.com は有効ですが、 foo.*.myteam.domain.com は無効です。
オブジェクトは、型 string
のすべての要素を含む配列です。 オブジェクトの最大項目は 16 文字、最大長は 2048 文字です。
WebApplicationInfo
省略可能 – オブジェクト
ユーザーがアプリにシームレスにサインインできるように、Microsoft Entraアプリ ID と Microsoft Graph 情報を指定します。 アプリが Microsoft Entra ID で登録されている場合は、アプリ ID を指定する必要があります。 管理者は、Teams 管理センターで権限を簡単に確認して同意を与えることができます。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
id |
String | ✔️ | アプリのアプリケーション ID をMicrosoft Entraします。 この ID は GUID である必要があります。 | |
resource |
String | 2048 文字 | SSO の認証トークンを取得するためのアプリのリソース URL。 メモ: SSO を使用していない場合は、エラー応答を回避するために、 https://example このフィールドにダミーの文字列値をアプリ マニフェストに入力してください。 |
graphConnector
省略可能 – オブジェクト
アプリの Graph コネクタ構成を指定します。 これが存在する場合は、 webApplicationInfo.id も指定する必要があります。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
notificationUrl |
String | 2048 文字 | ✔️ | アプリケーションの Graph コネクタ通知を送信する URL。 |
showLoadingIndicator
省略可能 – ブール値
アプリまたはタブの読み込み中に読み込みインジケーターを表示するかどうかを示します。 既定値は false です。
注:
- アプリ マニフェストで true として選択
showLoadingIndicator
した場合、ページを正しく読み込むには、「ネイティブ読み込 みインジケーター ドキュメントを表示する」の説明に従って、タブとタスク モジュールのコンテンツ ページを変更します。 - タブのコンテンツ ページを変更しない場合、タブ アプリは読み込まず、エラー が表示されます
There was a problem reaching this app
。
IsFullScreen
省略可能 – ブール値
個人用アプリがタブ ヘッダー バーなしでレンダリングされるかどうかを示します (全画面表示モードを示します)。 既定値は false です。
注:
isFullScreen
は、組織に発行されたアプリでのみ機能します。 アップロードおよび発行されたサード パーティ製アプリでは、このプロパティを使用できません (無視されます)。isFullScreen=true
は、Teams が提供するヘッダー バーとタイトルを個人用アプリとタスク モジュールのダイアログから削除します。
activities
省略可能 – オブジェクト
アプリがユーザー アクティビティ フィードを投稿するために使用するプロパティを定義します。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
activityTypes |
オブジェクトの配列 | 128 項目 | アプリがユーザーのアクティビティ フィードに投稿できるアクティビティの種類を提供します。 アクティビティの systemDefault 種類は予約済みで無効な文字列です。 |
activity.activityTypes
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
type |
String | 32 文字 | ✔️ | 通知の種類。 以下を参照してください。 |
description |
String | 128 文字 | ✔️ | 通知の簡単な説明。 以下を参照してください。 |
templateText |
String | 128 文字 | ✔️ | 例: "あなたに {actor} が作成したタスク {taskId}" |
{
"activities":{
"activityTypes":[
{
"type":"taskCreated",
"description":"Task Created Activity",
"templateText":"{actor} created task {taskId} for you"
},
{
"type":"teamMention",
"description":"Team Mention Activity",
"templateText":"{actor} mentioned team"
},
{
"type":"channelMention",
"description":"Channel Mention Activity",
"templateText":"{actor} mentioned channel"
},
{
"type":"userMention",
"description":"Personal Mention Activity",
"templateText":"{actor} mentioned user"
},
{
"type":"calendarForward",
"description":"Forwarding a Calendar Event",
"templateText":"{actor} sent user an invite on behalf of {eventOwner}"
},
{
"type":"calendarForward",
"description":"Forwarding a Calendar Event",
"templateText":"{actor} sent user an invite on behalf of {eventOwner}"
},
{
"type":"creatorTaskCreated",
"description":"Created Task Created",
"templateText":"The Creator created task {taskId} for you"
}
]
}
}
defaultInstallScope
省略可能 – 文字列
このアプリに既定で定義されているインストール スコープを指定します。 定義されたスコープは、ユーザーがアプリを追加しようとしたときにボタンに表示されるオプションです。 オプションは、次のとおりです。
personal
team
groupChat
meetings
defaultGroupCapability
省略可能 – オブジェクト
グループインストールスコープを選択すると、ユーザーがアプリをインストールするときの既定の機能が定義されます。 オプションは、次のとおりです。
team
groupChat
meetings
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
team |
String | 選択したインストール スコープが team の場合、このフィールドは使用可能な既定の機能を指定します。 オプション: tab 、bot 、または connector 。 |
||
groupChat |
String | 選択したインストール スコープが groupChat の場合、このフィールドは使用可能な既定の機能を指定します。 オプション: tab 、bot 、または connector 。 |
||
meetings |
String | 選択したインストール スコープが meetings の場合、このフィールドは使用可能な既定の機能を指定します。 オプション: tab 、bot 、または connector 。 |
configurableProperties
省略可能 – 配列
configurableProperties
ブロックは、チーム管理者がカスタマイズできるアプリのプロパティを定義します。 詳細については、「アプリのカスタマイズを有効にする」を参照してください。 アプリのカスタマイズ機能は、組織 (LOB アプリ) 用に構築されたカスタム アプリやカスタム アプリではサポートされていません。
注:
少なくとも 1 つのプロパティを定義する必要があります。 このブロックでは、最大 9 つのプロパティを定義できます。
次のプロパティを定義できます。
- name: アプリの表示名。
- shortDescription: アプリの簡単な説明。
- longDescription: アプリの長い説明。
- smallImageUrl: アプリのアウトライン アイコン。
- largeImageUrl: アプリの色アイコン。
- accentColor: 使用する色とアウトライン アイコンの背景。
- developerUrl: 開発者の Web サイトの HTTPS URL。
- privacyUrl: 開発者のプライバシー ポリシーの HTTPS URL。
- termsOfUseUrl: 開発者の使用条件の HTTPS URL。
supportedChannelTypes
省略可能 – 配列
非標準チャネルでアプリを有効にします。 アプリがチーム スコープをサポートしていて、このプロパティが定義されている場合、Teams ではそれに応じてそれぞれの種類のチャネルでアプリが有効になります。 supportedChannelTypes プロパティでは、 と privateChannels
のみがサポートされますsharedChannels
。
注:
- アプリがチーム スコープをサポートしている場合、このプロパティで定義されている値に関係なく、標準チャネルで機能します。
- アプリは、それぞれの種類のチャネルの一意のプロパティを考慮して、適切に機能することができます。 プライベート チャネルと共有チャネルのタブを有効にするには、「プライベート チャネルでコンテキストを取得し、共有チャネルでコンテキストを取得する」を参照してください。
defaultBlockUntilAdminAction
省略可能 – ブール値
defaultBlockUntilAdminAction
プロパティ が true に 設定されている場合、管理者が許可するまで、アプリは既定でユーザーから非表示になります。 true に 設定すると、アプリは、すべてのテナントとエンド ユーザーに対して非表示になります。 テナント管理者は、Teams 管理センターでアプリを確認し、アプリを許可またはブロックするためのアクションを実行できます。 既定値は false です。 既定のアプリ ブロックの詳細については、「 管理者が承認するまでユーザーのアプリを既定でブロックする」を参照してください。
publisherDocsUrl
省略可能 – 文字列
最大サイズ - 2048 文字
パラメーターの publisherDocsUrl
値は、アプリ開発者が提供することを選択したアプリのドキュメントと情報ページへのセキュリティで保護された HTTPS URL です。 テナント管理者は、この URL でアプリに関するドキュメントを取得します。 Teams 管理センターは、アプリの詳細ページに URL を表示します。 このドキュメントには、アプリの導入とアプリのロールアウトを容易にする管理者向けの手順が含まれている場合があります。 アプリのドキュメントには、テナント管理者、ユーザー、その他のビジネス関係者に役立つアプリに関する手順や情報を含めることもできます。
subscriptionOffer
省略可能 – オブジェクト
アプリに関連付けられている SaaS オファーを指定します。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
offerId |
string | 2,048 文字 | ✔️ | パートナー センターで見つけることができるパブリッシャー ID とオファー ID を含む一意の識別子。 文字列を publisherId.offerId として書式設定する必要があります。 |
meetingExtensionDefinition
省略可能 – オブジェクト
会議拡張機能の定義を指定します。 詳細については、「Teams のカスタム Together Mode シーン」を参照してください。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
scenes |
オブジェクトの配列 | 5 個の項目 | 会議でサポートされているシーン。 | |
supportsStreaming |
ブール型 | アプリが会議のオーディオとビデオのコンテンツをリアルタイム会議プロトコル (RTMP) エンドポイントにストリーミングできるかどうかを示す値です。 既定値は false です。 | ||
supportsAnonymousGuestUsers |
ブール型 | アプリが匿名ユーザーのアクセスをサポートするかどうかを示す値。 既定値は false です。 |
meetingExtensionDefinition.scenes
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
id |
String | ✔️ | シーンの一意の識別子。 この ID は GUID である必要があります。 | |
name |
String | 128 文字 | ✔️ | シーンの名前。 |
file |
String | 2048 文字 | ✔️ | シーンの metadata json ファイルへの相対ファイル パス。 |
preview |
String | 2048 文字 | ✔️ | シーンの PNG プレビュー アイコンへの相対ファイル パス。 |
maxAudience |
整数 | 50 | ✔️ | シーンでサポートされている対象ユーザーの最大数。 |
seatsReservedForOrganizersOrPresenters |
整数 | 50 | ✔️ | 開催者または発表者用に予約されたシートの数。 |
承認
省略可能 – オブジェクト
注:
authorization
は、アプリ マニフェスト バージョン 1.12 以降でのみサポートされています。
アプリの承認に関する情報を指定して統合します。
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
permissions |
オブジェクト | アプリを実行する必要があるアクセス許可の一覧。 |
authorization.permissions
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
resourceSpecific |
オブジェクトの配列 | 16 項目 | リソース インスタンス レベルでのデータ アクセスを保護するアクセス許可。 |
authorization.permissions.resourceSpecific
名前 | 型 | 最大サイズ | 必須 | 説明 |
---|---|---|---|---|
type |
String | ✔️ | リソース固有の同意 (RSC) アクセス許可の種類。 オプション: Application と Delegated 。 |
|
name |
String | 128 文字 | ✔️ | RSC アクセス許可の名前。 詳細については、「RSC アプリケーションのアクセス許可」と「RSC 委任されたアクセス許可」を参照してください。 |
RSC アプリケーションのアクセス許可
アプリケーションのアクセス許可により、アプリはサインインしたユーザーなしでデータにアクセスできます。 アプリケーションのアクセス許可の詳細については、「 Microsoft Graph と Microsoft BotSDK の RSC アクセス許可」を参照してください。
RSC 委任されたアクセス許可
委任されたアクセス許可を使用すると、アプリはサインインしているユーザーの代わりにデータにアクセスできます。
チームの RSC 委任されたアクセス許可
名前 説明 ChannelMeetingParticipant.Read.Group
サインインしたユーザーの代理で、このチームに関連付けられたチャネル会議の名前、役割、ID、参加時間と退会時間などの参加者情報を読み取ることができるようにします。 ChannelMeetingIncomingAudio.Detect.Group
アプリがチームに関連付けられているチャネル会議で受信オーディオを検出できるようにします。 ChannelMeetingActiveSpeaker.Read.Group
チームに関連付けられているチャネル会議に現在オーディオを送信している参加者をアプリで読み取ることができます。 ChannelMeetingAudioVideo.Stream.Group
アプリがチームに関連付けられているチャネル会議からオーディオ ビデオ コンテンツをストリーミングできるようにします。 InAppPurchase.Allow.Group
サインインしているユーザーの代わりに、アプリがチーム内のユーザーにマーケットプレース オファーを表示し、アプリ内で購入を完了できるようにします。 ChannelMeetingStage.Write.Group
サインインしているユーザーの代わりに、チームに関連付けられているチャネル会議の会議ステージのコンテンツをアプリに表示できるようにします。 LiveShareSession.ReadWrite.Group
アプリがチームに関連付けられている会議の Live Share セッションを作成および同期し、サインインしているユーザーの代わりに、メンバーの会議ロールなどの会議の名簿に関する関連情報にアクセスできるようにします。 MeetingParticipantReaction.Read.Group
アプリがチームに関連付けられているチャネル会議の参加者の反応を読み取ることができます。 チャットまたは会議の RSC 委任されたアクセス許可
名前 説明 InAppPurchase.Allow.Chat
アプリがチャット内のユーザーと関連する会議に Marketplace オファーを表示し、サインインしているユーザーに代わってアプリ内で購入を完了できるようにします。 MeetingStage.Write.Chat
アプリで、サインインしているユーザーの代わりに、チャットに関連付けられている会議の会議ステージのコンテンツを表示できるようにします。 OnlineMeetingParticipant.Read.Chat
アプリは、サインインしているユーザーの代わりに、チャットに関連付けられている会議の名前、ロール、ID、参加済み、および退席時刻などの参加者情報を読み取ることができます。 OnlineMeetingParticipant.ToggleIncomingAudio.Chat
アプリで、サインインしているユーザーの代わりに、チャットに関連付けられている会議の参加者の受信オーディオを切り替えることができます。 LiveShareSession.ReadWrite.Chat
アプリがチャットに関連付けられている会議の Live Share セッションを作成および同期し、サインインしているユーザーの代わりに、メンバーの会議ロールなどの会議の名簿に関する関連情報にアクセスできるようにします。 MeetingParticipantReaction.Read.Chat
アプリがチャットに関連付けられている会議の参加者の反応を読み取ることができます。 OnlineMeetingIncomingAudio.Detect.Chat
サインインしているユーザーの代わりに、チャットに関連付けられている会議での受信オーディオの状態の変更をアプリで検出できるようにします。 OnlineMeetingActiveSpeaker.Read.Chat
チャットに関連付けられている会議に現在オーディオを送信している参加者をアプリで読み取ることができます。 OnlineMeetingAudioVideo.Stream.Chat
アプリがチャットに関連付けられている会議のオーディオ ビデオ コンテンツをストリーミングできるようにします。 ユーザーの RSC 委任されたアクセス許可
名前 説明 CameraStream.Read.User
アプリがユーザーのカメラ ストリームを読み取ることができます。 InAppPurchase.Allow.User
サインインしているユーザーの代わりに、アプリでユーザー マーケットプレース オファーを表示し、アプリ内でユーザーの購入を完了できるようにします。 OutgoingVideoStream.Write.User
アプリがユーザーの送信ビデオを変更できるようにします。 MicrophoneStream.Read.User
アプリがユーザーのマイク ストリームを読み取ることができます。 MeetingParticipantReaction.Read.User
アプリが会議に参加している間にユーザーの反応を読み取ることができます。
アプリ マニフェスト ファイルを作成する
アプリにアプリ マニフェスト ファイルがない場合は、作成する必要があります。
アプリ マニフェスト ファイルを作成するには:
- サンプル アプリ マニフェスト スキーマを使用して、.json ファイルを作成します。
- これをプロジェクト フォルダーのルートに、
manifest.json
として保存します。
SSO が有効になっているタブ アプリのアプリ マニフェスト スキーマの例を次に示します。
注:
ここに示すアプリ マニフェストのサンプル コンテンツは、タブ アプリ専用です。 サブドメイン URI の値の例を使用します。 詳細については、「 サンプル アプリ マニフェスト スキーマ」を参照してください。
{
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.11/MicrosoftTeams.schema.json",
"manifestVersion": "1.12",
"version": "1.0.0",
"id": "{new GUID for this Teams app - not the Microsoft Entra App ID}",
"developer": {
"name": "Microsoft",
"websiteUrl": "https://www.microsoft.com",
"privacyUrl": "https://www.microsoft.com/privacy",
"termsOfUseUrl": "https://www.microsoft.com/termsofuse"
},
"name": {
"short": "Teams Auth SSO",
"full": "Teams Auth SSO"
},
"description": {
"short": "Teams Auth SSO app",
"full": "The Teams Auth SSO app"
},
"icons": {
"outline": "outline.png",
"color": "color.png"
},
"accentColor": "#60A18E",
"staticTabs": [
{
"entityId": "auth",
"name": "Auth",
"contentUrl": "https://subdomain.example.com/Home/Index",
"scopes": [ "personal" ]
}
],
"configurableTabs": [
{
"configurationUrl": "https://subdomain.example.com/Home/Configure",
"canUpdateConfiguration": true,
"scopes": [
"team"
]
}
],
"permissions": [ "identity", "messageTeamMembers" ],
"validDomains": [
"{subdomain or ngrok url}"
],
"webApplicationInfo": {
"id": "{Microsoft Entra AppId}",
"resource": "api://subdomain.example.com/{Microsoft Entra AppId}"
}
}