Получите Teams контекст для бота

Важно!

Примеры кода в этом разделе основаны на версии 4.6 и более поздних версиях SDK Bot Framework. Если вы ищете документацию для более ранних версий, см. в разделе bots - v3 SDK в папке Ресурсы документации.

Бот может получить доступ к дополнительным данным контекста о группе или чате, где она установлена. Эти сведения можно использовать для обогащения функциональных возможностей бота и предоставления более персонализированного опыта.

Извлечение реестра или профиля пользователя

Бот может запрашивать список участников и их базовые профили пользователей, включая Teams и Azure Active Directory (AAD), например имя и objectId. Эти сведения можно использовать для сопоставления удостоверений пользователей. Например, чтобы проверить, входит ли пользователь в вкладку AAD учетных данных, является членом группы. Для получения участников беседы минимальный или максимальный размер страницы зависит от реализации. Размер страницы меньше 50, рассматриваются как 50 и более 500, имеют ограничения на уровне 500. Даже если вы используете ненастоячивую версию, она ненадежна в больших группах и не должна использоваться. Дополнительные сведения см. в Teams API-Teams для получения участников группы или чата.

В следующем примере кода используется страница конечной точки для получения реестра:

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);
     }
}

После получения реестра или профиля пользователя можно получить сведения об одном члене. В настоящее время для получения сведений для одного или более членов чата или группы используйте API Microsoft Teams бота для C# или TeamsInfo.GetMembersAsync TeamsInfo.getMembers API TypeScript.

Получить сведения об одном члене

Вы также можете получить сведения о конкретном пользователе с помощью Teams, upN или AAD объекта.

Для получения сведений об одном члене используется следующий пример кода:

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);
    }
}

После получения сведений об одном члене вы можете получить сведения о команде. В настоящее время для получения сведений для группы используйте API Microsoft Teams бота для C# или TeamsInfo.GetMemberDetailsAsync TeamsInfo.getTeamDetails typeScript.

Сведения о команде

При установке в команде бот может запрашивать метаданные о группе, включая AAD группы.

Для получения сведений о команде используется следующий пример кода:

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.");
        }
    }
}

После получения сведений о команде вы можете получить список каналов в команде. В настоящее время для получения сведений о списке каналов в группе используйте API Microsoft Teams для C# или TeamsInfo.GetTeamChannelsAsync TeamsInfo.getTeamChannels API TypeScript.

Получить список каналов в команде

Бот может запрашивать список каналов в команде.

Примечание

  • Для локализации возвращается имя общего канала по null умолчанию.
  • 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 образцы ботов

Пример кода

Полные рабочие примеры, демонстрирующие функциональность, см. в следующих Teams для Bot Framework:

Пример Описание .NET JavaScript Python
Бот для беседы в Teams Обработка событий обмена сообщениями и бесед. View View View
Проверка подлинности с помощью OAuthPrompt Проверка подлинности и базовый обмен сообщениями в Bot Framework v4. View View View
Teams файла Обмен файлами с ботом в беседе один к одному. View View View
Модуль задач Ирисовка модуля задач и значений из карт в нем для расширения обмена сообщениями. View View View
Запуск нового потока в канале Создание нового потока в канале. View View View

Следующий этап