RSC のチャネル メッセージをすべて受信する
Teams Graph API 用にもともと開発されたリソース固有の同意 (RSC) アクセス許可モデルは、ボットのシナリオに拡張されています。
RSC を使用して、チームの所有者に対して、@mention することなく、チーム内の標準チャネル間でユーザー メッセージを受信することにボットが同意するように要求できるようになりました。 この機能は、RSC 対応 Teams アプリのマニフェストで ChannelMessage.Read.Group
アクセス許可を指定することで有効になります。 構成後、チーム所有者はアプリのインストール プロセス中に同意を付与できます。
アプリの RSC を有効にする方法の詳細については、Teams のリソース固有の同意に関するページを参照してください。
ボットがすべてのチャネル メッセージを受信できるようにする
ChannelMessage.Read.Group
RSC アクセス許可はボットに拡張されます。 このアクセス許可により、グラフ アプリケーションは会話内のすべてのメッセージを取得し、ボットは @メンションすることなくすべてのチャネル メッセージを受信できます。
注意
- すべての Teams メッセージ データにアクセスする必要があるサービスでは、チャネルやチャットでアーカイブされたデータへのアクセスを提供する Graph API を使用する必要があります。
- ボットは、チーム内の
ChannelMessage.Read.Group
ユーザーの魅力的なエクスペリエンスを構築および強化するために RSC アクセス許可を適切に使用する必要があります。または、ストアの承認を渡しません。 アプリの説明には、ボットが読み取るデータの使用方法を含める必要があります。 ChannelMessage.Read.Group
RSC アクセス許可は、大量の顧客データを抽出する方法としてボットで使用することはできません。
アプリ マニフェストの更新
ボットがすべてのチャネル メッセージを受信するには、Teams アプリ マニフェストで webApplicationInfo
プロパティで指定された ChannelMessage.Read.Group
権限を使用して RSC を構成する必要があります。
webApplicationInfo
オブジェクトの例を次に示します。
- id: Microsoft Azure Active Directory (Azure AD) アプリ ID。 これは、ボット ID と同じにすることができます。
- resource: 任意の文字列。 このフィールドには RSC での操作はありませんが、エラー応答を回避するために追加して値を指定する必要があります。
- applicationPermissions:
ChannelMessage.Read.Group
を使用したアプリの RSC 権限を指定する必要があります。 詳細については、「リソース固有のアクセス許可」を参照してください。
次のコードは、アプリ マニフェストの例を示しています。
"webApplicationInfo": {
"id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
"resource": "https://AnyString",
"applicationPermissions": [
"ChannelMessage.Read.Group"
]
}
チーム内のサイドロード
テストするチームにサイドローディングするには、RSC を使用するチーム内のすべてのチャネル メッセージを @メンションせずに受信するかどうかを指定します。
チームを選択または作成します。
左側のウィンドウから省略記号 ●●● を選択します。 ドロップダウン メニューが表示されます。
ドロップダウン メニューから [表示] を選択します。 アプリの詳細が表示されます。
[アプリ] を選択します。 複数のアプリが表示されます。
右下から [カスタム アプリのアップロード] を選択します
[開く] ダイアログ ボックスからアプリ パッケージを選択します。
[開く]を選択します。
アプリの詳細ポップアップから [追加] を選択し、選択したチームにボットを追加します。
チャネルを選択し、ボットのチャネルにメッセージを入力します。
ボットは、@メンションされずにメッセージを受信します。
コード スニペット
次のコードは、アプリケーション エラーの理由の例を示しています。
// Handle when a message is addressed to the bot.
// When rsc is enabled the method will be called even when bot is addressed without being @mentioned
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
await turnContext.SendActivityAsync(MessageFactory.Text("Using RSC the bot can recieve messages across channels in team without being @mentioned."));
}
コード サンプル
サンプルの名前 | 説明 | C# | Node.js |
---|---|---|---|
RSC アクセス許可を持つチャネル メッセージ | Microsoft Teams のサンプル アプリは、ボットが @メンションされることなく RSC を使用してすべてのチャネル メッセージを受信する方法を示しています。 | 表示 | 表示 |