プロアクティブ インストール メッセージを送信する
Teams でのプロアクティブ メッセージング
プロアクティブ メッセージは、ユーザーとの会話を開始するためにボットによって開始されます。 ウェルカム メッセージの送信、アンケートや投票の実施、組織全体の通知のブロードキャストなど、さまざまな目的に対応しています。 Teams のプロアクティブ メッセージは、アドホックまたはダイアログ ベースの会話として配信できます。
メッセージの種類 | 説明 |
---|---|
アドホック プロアクティブ メッセージ | ボットは、会話フローを中断することなくメッセージを挿入します。 |
ダイアログ ベースのプロアクティブ メッセージ | ボットは新しいダイアログ スレッドを作成し、会話を制御し、プロアクティブ メッセージを配信し、閉じて、前のダイアログに制御を返します。 |
Teams でのプロアクティブ アプリのインストール
ボットがユーザーに事前にメッセージを送信するには、個人用アプリとして、またはユーザーがメンバーであるチームにインストールする必要があります。 場合によっては、アプリをインストールしていない、または以前に操作していないユーザーに事前にメッセージを送信する必要があります。 たとえば、組織内のすべてのユーザーに重要な情報を伝える必要がある場合は、Microsoft Graph API を使用して、ユーザー用にボットを事前にインストールできます。
アクセス許可
Microsoft Graph teamsAppInstallation リソースの種類のアクセス許可は、Microsoft Teams プラットフォーム内のすべてのユーザー (個人) またはチーム (チャネル) スコープに対するアプリのインストール ライフサイクルを管理するのに役立ちます。
アプリケーションのアクセス許可 | 説明 |
---|---|
TeamsAppInstallation.ReadWriteSelfForUser.All |
Teams アプリは、事前のサインインや使用なしで、任意のユーザーの読み取り、インストール、アップグレード、アンインストールを行うことができます。 |
TeamsAppInstallation.ReadWriteSelfForTeam.All |
ユーザーがサインインしていない状態で、任意のチームに対して Teams アプリが自分自身を読み取り、インストール、アップグレード、アンインストールすることを許可します。 |
これらのアクセス許可を使用するには、次の値を持つ webApplicationInfo キーをアプリ マニフェスト (以前は Teams アプリ マニフェスト) に追加する必要があります。
- id: Microsoft Entra アプリ ID。
- リソース: アプリのリソース URL。
注:
インストールは他のユーザー向けであるため、ボットにはアプリケーションが必要であり、ユーザーが委任したアクセス許可は必要ありません。
Microsoft Entra テナント管理者は 、アプリケーションへのアクセス許可を明示的に付与する必要があります。 アプリケーションにアクセス許可が付与されると、Microsoft Entra テナントのすべてのメンバーが付与されたアクセス許可を取得します。
プロアクティブなボットをインストールしてメッセージングを有効にする
重要
Microsoft Graph では、組織のアプリ ストアまたはMicrosoft Teams ストアに発行されたアプリのみをインストールできます。
Teams 用のプロアクティブ メッセージング ボットを作成して発行する
作業を開始するには、組織のアプリ ストアまたは Teams ストアにあるプロアクティブ メッセージング機能を備えた Teams用のボットが必要です。
ヒント
運用環境対応の Company Communicator アプリ テンプレートは、ブロードキャスト メッセージングを許可し、プロアクティブなボット アプリケーションを構築するための優れたスタートです。
アプリの teamsAppId
を入手する
teamsAppId
は次の方法で取得できます。
組織のアプリ カタログから:
Microsoft Graph ページ リファレンス:teamsApp リソースの種類
HTTP GET リクエスト:
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=externalId eq '{IdFromManifest}'
リクエストは、アプリのカタログで生成されたアプリ ID である
teamsApp
オブジェクトid
を返す必要があります。 これは、アプリ マニフェストで指定した ID とは異なります。{ "value": [ { "id": "b1c5353a-7aca-41b3-830f-27d5218fe0e5", "externalId": "f31b1263-ba99-435a-a679-911d24850d7c", "name": "Test App", "version": "1.0.1", "distributionMethod": "Organization" } ] }
注:
アプリが Teams ストアにある場合、
teamsAppId
はIdFromManifest
と同じであり、この場合はexternalId
を使用しないでください。個人用スコープ内のユーザーに対してアプリが既にアップロードされている場合:
Microsoft Graph ページ リファレンス:ユーザー用にインストールされたアプリの一覧表示
HTTP GET リクエスト:
GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/externalId eq '{IdFromManifest}'
チーム スコープ内のチャネルに対してアプリが既にアップロードされている場合:
Microsoft Graph ページ リファレンス:チーム内のアプリを一覧表示する
HTTP GET リクエスト:
GET https://graph.microsoft.com/v1.0/teams/{team-id}/installedApps?$expand=teamsApp&$filter=teamsApp/externalId eq '{IdFromManifest}'
ヒント
結果の一覧を絞り込むには、 teamsApp オブジェクトの任意のフィールドをフィルター処理できます。
メッセージ受信者にボットがインストールされているかどうかを判断する
次のように、ボットがメッセージ受信者にインストールされているかどうかを判断できます。
Microsoft Graph ページ リファレンス:ユーザー用にインストールされたアプリの一覧表示
HTTP GET リクエスト:
GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/id eq '{teamsAppId}'
要求は次を返します。
- アプリがインストールされていない場合は空の配列。
- アプリがインストールされている場合は、単一 の teamsAppInstallation オブジェクトを持つ配列。
サイトにアプリ パーツをインストールします。
アプリは次のようにインストールできます。
Microsoft Graph ページ リファレンス:ユーザー用アプリのインストール
HTTP POST リクエスト
POST https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps
Content-Type: application/json
{
"teamsApp@odata.bind" : "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/{teamsAppId}"
}
ユーザーが Microsoft Teams を実行している場合は、アプリのインストールが直ちに行われます。 インストールされているアプリを表示するには、再起動が必要になる場合があります。
会話 chatId
を取得する
アプリがユーザーにインストールされると、ボットはプロアクティブ メッセージを送信するために必要な情報を含む conversationUpdate
イベント通知 を受け取ります。
Microsoft Graph ページ リファレンス:チャットを取得する
アプリの
{teamsAppInstallationId}
が必要です。 持っていない場合は、次を使用します。HTTP GET リクエスト:
GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/id eq '{teamsAppId}'
応答の id プロパティは
teamsAppInstallationId
です。次の要求を行って、
chatId
をフェッチします。HTTP GET 要求 (アクセス許可 —
TeamsAppInstallation.ReadWriteSelfForUser.All
):GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps/{teamsAppInstallationId}/chat
応答の id プロパティは
chatId
です。次のリクエストで
chatId
を取得することもできますが、より広範なChat.Read.All
権限が必要です。HTTP GET 要求 (アクセス許可 —
Chat.Read.All
):GET https://graph.microsoft.com/v1.0/users/{user-id}/chats?$filter=installedApps/any(a:a/teamsApp/id eq '{teamsAppId}')
プロアクティブ メッセージを送信する
ボットは、ユーザーまたはチームに対してボットが追加され、すべてのユーザー情報を受信した後に プロアクティブ メッセージを送信 できます。
コード スニペット
次のコードは、プロアクティブ メッセージを送信する例を示しています。
public async Task<int> SendNotificationToAllUsersAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
int msgSentCount = 0;
// Send notification to all the members.
foreach (var conversationReference in _conversationReferences.Values)
{
await turnContext.Adapter.ContinueConversationAsync(_configuration["MicrosoftAppId"], conversationReference, BotCallback, cancellationToken);
msgSentCount++;
}
return msgSentCount;
}
private async Task BotCallback(ITurnContext turnContext, CancellationToken cancellationToken)
{
// Sends an activity to the sender of the incoming activity.
await turnContext.SendActivityAsync("Proactive hello.");
}
コード サンプル
サンプルの名前 | 説明 | .NET | Node.js |
---|---|---|---|
アプリのプロアクティブ インストールとプロアクティブ通知の送信 | このサンプルは、ユーザー向けのアプリのプロアクティブなインストールを使用し、Microsoft Graph API を呼び出してプロアクティブな通知を送信する方法を示しています。 | 表示 | 表示 |
追加のコード サンプル
関連項目
Platform Docs