Obtenha o contexto específico do Teams para seu bot

Importante

Os exemplos de código nesta seção são baseados na versão 4.6 e versões posteriores do SDK da Estrutura de Bot. Se você estiver procurando documentação para versões anteriores, consulte a seção bots - V3 SDK na pasta Recursos da documentação.

Um bot pode acessar dados de contexto adicionais sobre uma equipe ou chat onde está instalado. Essas informações podem ser usadas para enriquecer a funcionalidade do bot e fornecer uma experiência mais personalizada.

Buscar a lista ou perfil de usuário

Seu bot pode consultar a lista de membros e seus perfis de usuário básicos, incluindo IDs de usuário do Teams e informações do Microsoft Azure Active Directory (Azure AD), como nome e objectId. Você pode usar essas informações para correlacionar identidades de usuários. Por exemplo, para verificar se um usuário conectado a uma guia por meio de credenciais do Azure Active Directory, é um membro da equipe. Para obter membros da conversa, o tamanho mínimo ou máximo da página depende da implementação. Tamanho de página menor que 50, são tratados como 50 e maiores que 500, são limitados a 500. Mesmo se você usar a versão não paginada, ela não é confiável em grandes equipes e não deve ser usada. Para obter mais informações, alterações nas APIs de Bot do Teams para buscar membros da equipe ou de chat.

O código de amostra a seguir usa o ponto de extremidade paginado para buscar a lista:

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

Depois de buscar a lista ou perfil de usuário, você pode obter detalhes de um único membro. Atualmente, para recuperar informações de um ou mais membros de um chat ou equipe, use as APIs de bot do Microsoft Teams TeamsInfo.GetMembersAsync para C# ou TeamsInfo.getMembers para APIs TypeScript.

Obter detalhes de membro único

Você também pode recuperar os detalhes de um usuário específico usando sua ID de usuário, UPN ou ID de Objeto do Azure Active Directory do Teams.

O código de exemplo a seguir é usado para obter detalhes de um único membro:

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

Depois de obter detalhes de um único membro, você pode obter detalhes da equipe. Atualmente, para recuperar informações de uma equipe, use as APIs de bot do Teams TeamsInfo.GetMemberDetailsAsync para C# ou TeamsInfo.getTeamDetails para TypeScript.

Obter detalhes da equipe

Quando instalado em uma equipe, seu bot pode consultar metadados sobre essa equipe, incluindo a ID de grupo do Azure Active Directory.

O código de exemplo a seguir é usado para obter os detalhes da equipe:

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

Depois de obter os detalhes da equipe, você pode obter a lista de canais em uma equipe. Atualmente, para recuperar informações de uma lista de canais em uma equipe, use as APIs de bot do Teams TeamsInfo.GetTeamChannelsAsync para C# ou TeamsInfo.getTeamChannels para APIs TypeScript.

Obter a lista de canais em uma equipe

Seu bot pode consultar a lista de canais em uma equipe.

Observação

  • O nome do canal geral padrão é retornado como null para permitir a localização.
  • A ID do canal para o canal Geral sempre corresponde à ID da equipe.

O código de exemplo a seguir é usado para obter a lista de canais em uma equipe:

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 de bot

Exemplo de código

Para obter exemplos de trabalho completos que demonstram a funcionalidade, consulte os seguintes exemplos Teams para o Bot Framework:

Amostra Descrição .NET JavaScript Python
Bot de conversas do Teams Sistema de mensagens e manipulação de eventos de conversa. View View View
Autenticação com OAuthPrompt Autenticação e mensagens básicas no Bot Framework v4. View View Exibir
Teams de arquivos Trocar arquivos com um bot em uma conversa um-para-um. View View View
Módulo de tarefa Recuperar um módulo de tarefa e valores de cartões nele para uma extensão de mensagem. View View View
Iniciar novo tópico em um canal Criando um novo thread em um canal. View View View

Próxima etapa