Share via


Receber todas as mensagens de conversa

O modelo de permissões RSC (consentimento específico do recurso), originalmente desenvolvido para APIs do Microsoft Teams Graph, está sendo estendido para cenários de bot. Com o RSC, os proprietários de conversas podem consentir que um bot receba todas as mensagens de usuário em canais e chats padrão sem ser @mentioned. Isso pode ser habilitado especificando as ChannelMessage.Read.Group cadeias de caracteres de permissão ou ChatMessage.Read.Chat no manifesto do aplicativo (anteriormente chamado de manifesto do aplicativo Teams). Os proprietários de conversas podem conceder consentimento durante o processo de instalação ou atualização do aplicativo após a publicação das atualizações do aplicativo. Para obter mais informações sobre como habilitar o RSC para seu aplicativo e dentro de um locatário, consulte consentimento específico do recurso.

Observação

Bots que recebem todas as mensagens de conversa com o RSC têm suporte em ambientes de GCC (Government Community Cloud), GCC-High e Departamento de Defesa (DOD ).

Permitir que os bots recebam todas as mensagens de canal ou chat

As ChannelMessage.Read.Group permissões E ChatMessage.Read.Chat RSC estão sendo estendidas para bots. Com o consentimento do usuário e a instalação do aplicativo, essas permissões:

  • Permitir que um aplicativo de grafo especificado obtenha todas as mensagens em canais e chats, respectivamente.
  • Habilite um bot definido no manifesto do aplicativo para receber todas as mensagens de conversas sem estar @mentioned em contextos relevantes em que as permissões se aplicam.

Filtragem em mensagens menção

// When ChannelMessage.Read.Group or ChatMessage.Read.Chat RSC is in the app manifest, this method is called even when bot is not @mentioned.
// This code snippet allows the bot to ignore all messages that do not @mention the bot.
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
        // Ignore the message if bot was not mentioned. 
        // Remove this if block to process all messages received by the bot.
        if (!turnContext.Activity.GetMentions().Any(mention => mention.Mentioned.Id.Equals(turnContext.Activity.Recipient.Id, StringComparison.OrdinalIgnoreCase)))
        {
            return;
        }
        // Sends an activity to the sender of the incoming activity.
        await turnContext.SendActivityAsync(MessageFactory.Text("Using RSC the bot can receive messages across channels or chats in team without being @mentioned."));
}

Permissão RSC

Os serviços que precisam de acesso a todos os dados de mensagens do Teams devem usar as APIs do Graph que fornecem acesso a dados arquivados em canais e chats. Os bots devem usar a ChannelMessage.Read.Group permissão E ChatMessage.Read.Chat RSC adequadamente para criar e aprimorar a experiência envolvente para que os usuários passem pela aprovação da Microsoft Teams Store. A descrição do aplicativo deve incluir como o bot usa os dados que ele lê:

  • A ChannelMessage.Read.Group permissão E ChatMessage.Read.Chat RSC pode não ser usada por bots para extrair grandes quantidades de dados do cliente.
  • A capacidade dos bots de receber todas as mensagens em chats usando ChatMessage.Read.Chat só é habilitada após uma reinstalação ou nova instalação em um chat.
  • Se você tiver um aplicativo que esteja usando a ChatMessage.Read.Chat permissão RSC para cenários do Graph, teste o aplicativo seguindo as etapas em carregar um aplicativo personalizado em uma conversa e modifique o aplicativo antes que o recurso esteja geralmente disponível. Se você não quiser que o bot receba todas as mensagens de chat, implemente o snippet de código a seguir. Se nenhuma ação for tomada, o bot receberá todas as mensagens após novas instalações.

Atualizar manifesto do aplicativo

Para que o bot receba todas as mensagens de conversa, as cadeias de caracteres de permissão RSC relevantes devem ser especificadas na authorization.permissions.resourceSpecific propriedade do manifesto do aplicativo. Para obter mais informações, consulte esquema de manifesto do aplicativo.

A captura de tela mostra as alterações a serem feitas no manifesto do aplicativo.

O código a seguir fornece um exemplo do CSS:

  • webApplicationInfo.id: sua ID do aplicativo Microsoft Entra. A ID do aplicativo pode ser a mesma que a ID do bot.
  • WebApplicationInfo.resource: Qualquer cadeia de caracteres. O campo de recursos não tem nenhuma operação no RSC, mas deve ser adicionado com um valor para evitar a resposta de erro.
  • authorization.permissions.resourceSpecific: permissões RSC para seu aplicativo com ou ambos ChannelMessage.Read.Group e ChatMessage.Read.Chat especificados. Para obter mais informações, consulte permissões específicas do recurso.

O código a seguir fornece um exemplo do manifesto do aplicativo versão 1.12 ou posterior:

{
    "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.12/MicrosoftTeams.schema.json",
    "manifestVersion": "1.12",
    "version": "1.0.0",
    "id": "8239c8f3-ed78-4512-933e-babfd28856f1",
    "packageName": "com.contoso.rscechobot",
    "developer": {
        "name": "Contoso",
        "websiteUrl": "https://www.contoso.com",
        "privacyUrl": "https://www.contoso.com/privacy",
        "termsOfUseUrl": "https://www.contoso.com/tos"
    },
    "icons": {
        "color": "color.png",
        "outline": "outline.png"
    },
    "name": {
        "short": "RscEchoBot",
        "full": "Echo bot with RSC configured for all conversation messages"
    },
    "description": {
        "short": "Echo bot with RSC configured for all channel and chat messages",
        "full": "Echo bot configured with all channel and chat messages RSC permission in manifest"
    },
    "accentColor": "#FFFFFF",
    "staticTabs": [
        {
            "entityId": "conversations",
            "scopes": [
                "personal"
            ]
        },
        {
            "entityId": "about",
            "scopes": [
                "personal"
            ]
        }
    ],
    "webApplicationInfo": {
        "id": "07338883-af76-47b3-86e4-2603c50be638",
        "resource": "https://AnyString"
    },
    "authorization": {
        "permissions": {
            "resourceSpecific": [
                {
                    "type": "Application",
                    "name": "ChannelMessage.Read.Group"
                },
                {
                    "type": "Application",
                    "name": "ChatMessage.Read.Chat"
                }
            ]
        }
    },
    "bots": [
        {
            "botId": "07338883-af76-47b3-86e4-2603c50be638",
            "scopes": [
                "personal",
                "team",
                "groupchat"
            ],
            "supportsFiles": false,
            "isNotificationOnly": false
        }
    ],
    "permissions": [
        "identity",
        "messageTeamMembers"
    ],
    "validDomains": []
}

Carregar um aplicativo personalizado em uma conversa

As etapas a seguir orientam você a carregar e validar o bot que recebe todas as mensagens de canal em uma Equipe sem ser @mentioned:

  1. Selecione ou crie uma equipe.

  2. Selecione ●●● no painel esquerdo. O menu suspenso é exibido.

  3. Selecione Gerenciar equipe no menu suspenso.

    A captura de tela mostra a opção de equipe de gerenciamento no aplicativo teams.

  4. Selecione Aplicativos. Múltiplos aplicativos aparecem.

  5. Escolha Upload um aplicativo personalizado no canto inferior direito.

    A captura de tela mostra a opção carregar um aplicativo personalizado.

  6. Selecione Abrir.

    A captura de tela mostra a caixa de diálogo aberta para selecionar o pacote do aplicativo.

  7. Selecione Adicionar através do pop-up com detalhes do aplicativo para adicionar o bot à sua equipe selecionada.

    A captura de tela mostra o botão adicionar para adicionar um bot a uma equipe.

  8. Selecione um canal e insira uma mensagem no canal para seu bot.

    O bot recebe a mensagem sem ser @mentioned.

    A captura de tela mostra um bot recebendo mensagem em um canal.

Trechos de código

O código a seguir fornece um exemplo das permissões 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)
{
        // Sends an activity to the sender of the incoming activity.
         await turnContext.SendActivityAsync(MessageFactory.Text("Using RSC the bot can receive messages across channels or chats in team without being @mentioned."));
}

Exemplo de código

Nome do exemplo Descrição .NET Node.js Manifesto do aplicativo
Mensagens de canal com permissões RSC Este aplicativo de exemplo mostra como um bot pode receber todas as mensagens de canal com RSC sem ser @mentioned. View View Exibir

Confira também