Abrufen von Teams-spezifischem Kontext für Ihren Agent

Ein Agent kann auf zusätzliche Kontextdaten über das Team oder den Chat zugreifen, in dem es installiert ist. Diese Informationen können verwendet werden, um Antworten zu personalisieren und umfangreichere Workflows zu erstellen.

Abrufen der Mitgliederliste oder des Benutzerprofils

Ihr Agent kann die Liste der Mitglieder im aktuellen Team oder Chat abfragen und diese Daten verwenden, um Antworten zu personalisieren oder Folgeaktionen durchzuführen.

Verwenden Sie die Teams-SDK-Conversations-Mitglieder-API, um Dienstplaninformationen abzurufen.

Zum Abrufen von Konversationsmitgliedern:

  • Minimale Seitengröße: 50
  • Standard-Seitenformat: 200
  • Maximale Seitengröße: 500

Verwenden Sie keinen nicht paginierten Mitgliederabruf in Teams und Kanälen. Bei großen Dienstplänen können nicht paginierte Anrufe unvollständig sein oder gedrosselt sein.

Hinweis

  • Paginierung ist in Team- und Kanalunterhaltungen verfügbar.
  • Die Paginierung wird in Chatunterhaltungen nicht unterstützt. In Chats wird die vollständige Liste vom Dienst zurückgegeben.

Der folgende Beispielcode verwendet das Abrufen von ausgelagerten Membern:

teams.OnMessage(async (context, cancellationToken) =>
{
    var membersClient = context.Api.Conversations.Members;
    var allMembers = new List<TeamsChannelAccount>();
    string? continuationToken = null;

    do
    {
        var page = await membersClient.GetPagedAsync(
            context.Activity.Conversation.Id,
            pageSize: 50,
            continuationToken: continuationToken,
            cancellationToken: cancellationToken
        );

        allMembers.AddRange(page.Members.Where(m => m is not null).Select(m => m!));
        continuationToken = page.ContinuationToken;
    }
    while (!string.IsNullOrEmpty(continuationToken));
});
app.on("message", async ({ activity, api }) => {
  const membersClient = api.conversations.members(activity.conversation.id);
  const allMembers = [];
  let continuationToken = undefined;

  do {
    const page = await membersClient.getPaged({
      pageSize: 50,
      continuationToken,
    });

    allMembers.push(...page.members);
    continuationToken = page.continuationToken;
  } while (continuationToken);
});
@app.on_message
async def list_members(ctx: ActivityContext[MessageActivity]) -> None:
    members_client = ctx.api.conversations.members(ctx.activity.conversation.id)

    all_members = []
    continuation_token: str | None = None

    while True:
        result = await members_client.get_paged(
            page_size=50,
            continuation_token=continuation_token,
        )
        all_members.extend(result.members)

        if not result.continuation_token:
            break

        continuation_token = result.continuation_token

Nachdem Sie die Liste abgerufen haben, können Sie Details zu einem einzelnen Mitglied abrufen.

Abrufen von Details zu einzelnen Mitgliedern

Sie können Details eines bestimmten Elements mithilfe von Benutzer-IDs aus dem Aktivitätskontext abrufen.

Im folgenden Beispielcode werden Teams SDK-APIs verwendet:

teams.OnMessage(async (context, cancellationToken) =>
{
    var memberId = context.Activity.From?.Id;
    if (string.IsNullOrEmpty(memberId))
    {
        return;
    }

    var member = await context.Api.Conversations.Members.GetByIdAsync(
        context.Activity.Conversation.Id,
        memberId,
        cancellationToken: cancellationToken
    );
});
app.on("message", async ({ activity, api }) => {
    const memberId = activity.from?.id;
    if (!memberId) {
        return;
    }

    const member = await api.conversations
        .member.getById(activity.conversation.id, memberId);
});
@app.on_message
async def get_member(ctx: ActivityContext[MessageActivity]) -> None:
    member_id = ctx.activity.from_.id
    member = await ctx.api.conversations.member.get_by_id(ctx.activity.conversation.id, member_id)

Nachdem Sie Details zu einem Mitglied erhalten haben, können Sie Teamdetails abrufen.

Abrufen von Teamdetails

Wenn er in einem Team installiert ist, kann Ihr Agent Metadaten wie die Team-ID und die Microsoft Entra-Gruppen-ID abfragen.

Im folgenden Beispielcode werden Teams SDK-APIs verwendet:

teams.OnMessage(async (context, cancellationToken) =>
{
    var teamId = context.Activity.ChannelData?.Team?.Id;
    if (string.IsNullOrEmpty(teamId))
    {
        return;
    }

    var team = await context.Api.Teams.GetByIdAsync(
        teamId,
        cancellationToken: cancellationToken
    );
});
app.on("message", async ({ activity, api }) => {
    const teamId = activity.channelData?.team?.id;
    if (!teamId) {
        return;
    }

    const team = await api.teams.getById(teamId);
});
@app.on_message
async def get_team_details(ctx: ActivityContext[MessageActivity]) -> None:
    team_id = ctx.activity.channel_data.team.id
    team = await ctx.api.teams.get_by_id(team_id)

Nachdem Sie die Teamdetails erhalten haben, können Sie die Liste der Kanäle in diesem Team abrufen.

Abrufen der Liste der Kanäle in einem Team

Ihr Agent kann die Liste der Kanäle in einem Team abfragen.

Hinweis

  • Der Name des Standardkanals "Allgemein" wird als null zurückgegeben, um die Lokalisierung zu ermöglichen.
  • Die Kanal-ID für den Kanal "Allgemein" stimmt immer mit der Team-ID überein.

Der folgende Beispielcode wird verwendet, um die Liste der Kanäle in einem Team abzurufen:

teams.OnMessage(async (context, cancellationToken) =>
{
    var teamId = context.Activity.ChannelData?.Team?.Id;
    if (string.IsNullOrEmpty(teamId))
    {
        return;
    }

    var channels = await context.Api.Teams.GetConversationsAsync(
        teamId,
        cancellationToken: cancellationToken
    );
});
app.on("message", async ({ activity, api }) => {
  const teamId = activity.channelData?.team?.id;
  if (!teamId) {
    return;
  }

  const channels = await api.teams.getConversations(teamId);
});
@app.on_message
async def list_channels(ctx: ActivityContext[MessageActivity]) -> None:
    team_id = ctx.activity.channel_data.team.id
    channels = await ctx.api.teams.get_conversations(team_id)

Wenn Sie unformatierte Connector-REST-Endpunkte benötigen, verwenden Sie die Teams SDK-API für die meisten Agent-Szenarien und verwenden Sie REST nur direkt für erweiterte Fälle, die nicht durch SDK-Abstraktionen abgedeckt werden.

Nächster Schritt

Siehe auch