Teams の特定のコンテキストをボット用に取得する

重要

このセクションのコード サンプルは、バージョン 4.6 以降のバージョンの Bot Framework SDK に基づいて作成されます。 以前のバージョンのドキュメントを探している場合は、ドキュメントの Resources フォルダーの 「bots - v3 SDK」 セクションを参照してください。

ボットは、インストールされているチームまたはチャットに関する追加のコンテキスト データにアクセスできます。 この情報は、ボットの機能を強化し、よりパーソナライズされたエクスペリエンスを提供するために使用できます。

名簿またはユーザー プロファイルをフェッチする

ボットは、メンバーとその基本的なユーザー プロファイルの一覧 (Teams ユーザー ID、名前や objectId などの Microsoft Azure Active Directory (Azure AD) 情報を含む) を照会できます。 この情報を使用して、ユーザー ID を関連付けることができます。 たとえば、ユーザーが Azure AD 資格情報を使用してタブにログインしているかどうかを確認するには、チームのメンバーです。 会話メンバーを取得する場合、最小または最大ページ サイズは実装によって異なります。 ページ サイズが 50 未満の場合は 50 として扱われ、500 を超える場合は 500 に制限されます。 ページ化されていないバージョンを使用している場合でも、大規模なチームでは信頼性が低いため、使用しないでください。 詳細については、「チームまたはチャット メンバーをフェッチするための Teams ボット API に対する変更」を参照してください。

次のサンプル コードは、ページ化されたエンドポイントを使用して名簿を取得します。

public class MyBot : TeamsActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        var members = new List<TeamsChannelAccount>();
        string continuationToken = null;

        do
        {
            var currentPage = await TeamsInfo.GetPagedMembersAsync(turnContext, 100, continuationToken, cancellationToken);
            continuationToken = currentPage.ContinuationToken;
            members.AddRange(currentPage.Members);
         }
         while (continuationToken != null);
     }
}

名簿またはユーザー プロファイルをフェッチすると、単一のメンバーの詳細を取得できます。 現在、チャットまたはチームの 1 人以上のメンバーの情報を取得するには、Microsoft Teams ボット API TeamsInfo.GetMembersAsync (C# の場合) または TeamsInfo.getMembers (TypeScript API の場合) を使用します。

単一のメンバーの詳細を取得する

Teams のユーザー ID、UPN、または Azure AD オブジェクト ID を使用して、特定のユーザーの詳細を取得することもできます。

次のサンプル コードは、単一メンバーの詳細を取得するために使用されます。

public class MyBot : TeamsActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        var member = await TeamsInfo.GetMemberAsync(turnContext, turnContext.Activity.From.Id, cancellationToken);
    }
}

単一のメンバーの詳細を取得した後、チームの詳細を取得できます。 現在、チームの情報を取得するには、Teams ボット API TeamsInfo.GetMemberDetailsAsync (C# の場合) または TeamsInfo.getTeamDetails (TypeScript の場合) を使用します。

チームの詳細を取得する

チームにインストールすると、ボットは Azure AD グループ ID を含むそのチームに関するメタデータをクエリできます。

次のサンプル コードは、チームの詳細を取得するために使用されます。

public class MyBot : TeamsActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        TeamDetails teamDetails = await TeamsInfo.GetTeamDetailsAsync(turnContext, turnContext.Activity.TeamsGetTeamInfo().Id, cancellationToken);
        if (teamDetails != null) {
            await turnContext.SendActivityAsync($"The groupId is: {teamDetails.AadGroupId}");
        }
        else {
            await turnContext.SendActivityAsync($"Message did not come from a channel in a team.");
        }
    }
}

チームの詳細を取得したら、チーム内のチャネルのリストを取得できます。 現在、チーム内のチャネルのリストの情報を取得するには、Teams ボット API TeamsInfo.GetTeamChannelsAsync (C# の場合) または TeamsInfo.getTeamChannels (TypeScript API の場合) を使用します。

チーム内のチャネルの一覧を取得します。

ボットは、チーム内のチャネルのリストをクエリできます。

注意

  • ローカリゼーションを可能にするために、既定の一般チャネルの名前が null として返されます。
  • 一般チャネルのチャネル ID は、常にチーム ID と一致します。

次のサンプル コードは、チーム内のチャネルのリストを取得するために使用されます。

public class MyBot : TeamsActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        IEnumerable<ChannelInfo> channels = await TeamsInfo.GetTeamChannelsAsync(turnContext, turnContext.Activity.TeamsGetTeamInfo().Id, cancellationToken);

        await turnContext.SendActivityAsync($"The channel count is: {channels.Count()}");
    }
}

Teams ボットのサンプル

コード サンプル

機能を示す完全な作業サンプルについては、Bot Framework の次のTeamsサンプルを参照してください。

サンプル 説明 .NET JavaScript Python
Teams 会話ボット メッセージングと会話イベントの処理。 表示 表示 表示
OAuthPrompt を使用した認証 Bot Framework v4 での認証と基本メッセージング。 表示 表示 表示
Teams ファイルのアップロード 1 対 1 の会話でボットとファイルを交換する。 表示 表示 表示
タスク モジュール メッセージ拡張機能のタスク モジュールとその中のカードから値を取得する。 表示 表示 表示
チャネルで新しいスレッドを開始する チャネルに新しいスレッドを作成する。 表示 表示 表示

次のステップ