Partilhar via


Receber todas as mensagens de conversação

O modelo de permissões de consentimento específico do recurso (RSC), originalmente desenvolvido para as Graph APIs do Microsoft Teams, está a ser expandido para cenários de bot. Com o RSC, os proprietários de conversações podem consentir que um bot receba todas as mensagens de utilizador em canais e chats padrão sem ser @mentioned. Isto pode ser ativado ao especificar as ChannelMessage.Read.Group cadeias de permissões ou ChatMessage.Read.Chat no manifesto da sua aplicação (anteriormente denominado manifesto de aplicação do Teams). Os proprietários de conversações podem conceder consentimento durante o processo de instalação ou atualização da aplicação após a publicação das atualizações da aplicação. Para obter mais informações sobre como ativar o RSC para a sua aplicação e dentro de um inquilino, veja Consentimento específico do recurso.

Observação

Os bots que recebem todas as mensagens de conversação com RSC são suportados em ambientes de Cloud da Comunidade Governamental (GCC), 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 a ser expandidas para bots. Com o consentimento do utilizador e a instalação da aplicação, estas permissões:

  • Permitir que uma aplicação de grafo especificada obtenha todas as mensagens em canais e chats, respetivamente.
  • Ative um bot definido no manifesto da aplicação para receber todas as mensagens de conversações sem estar @mentioned em contextos relevantes nos quais as permissões se aplicam.

Filtrar mensagens de 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 têm de utilizar as Graph APIs que fornecem acesso a dados arquivados em canais e chats. Os bots têm de utilizar a ChannelMessage.Read.Group permissão RSC e ChatMessage.Read.Chat adequadamente para criar e melhorar a experiência envolvente para que os utilizadores passem a aprovação da Microsoft Teams Store. A descrição da aplicação tem de incluir a forma como o bot utiliza os dados que lê:

  • A ChannelMessage.Read.Group permissão E ChatMessage.Read.Chat RSC não pode ser utilizada pelos bots para extrair grandes quantidades de dados do cliente.
  • A capacidade de os bots receberem todas as mensagens em chats que utilizem ChatMessage.Read.Chat só é ativada após uma nova instalação ou instalação nova num chat.
  • Se tiver uma aplicação que esteja a utilizar a ChatMessage.Read.Chat permissão RSC para cenários do Graph, teste a aplicação ao seguir os passos descritos em carregar uma aplicação personalizada numa conversação e modifique a aplicação antes de a funcionalidade estar geralmente disponível. Se não quiser que o bot receba todas as mensagens de chat, implemente o seguinte fragmento de código. Se não for efetuada nenhuma ação, o bot recebe todas as mensagens após novas instalações.

Atualizar manifesto do aplicativo

Para que o bot receba todas as mensagens de conversação, as cadeias de permissão RSC relevantes têm de ser especificadas na propriedade do authorization.permissions.resourceSpecific manifesto da sua aplicação. Para obter mais informações, veja esquema de manifesto de aplicação.

Captura de ecrã a mostrar as alterações a serem efetuadas no manifesto da aplicação.

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

  • webApplicationInfo.id: O ID da aplicação Microsoft Entra. O ID da aplicação pode ser o mesmo que o ID do bot.
  • webApplicationInfo.resource: qualquer cadeia. O campo de recurso não tem nenhuma operação no RSC, mas tem de ser adicionado com um valor para evitar a resposta ao erro.
  • authorization.permissions.resourceSpecific: permissões RSC para a sua aplicação 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 seguinte fornece um exemplo da versão 1.12 ou posterior do manifesto da aplicação:

{
    "$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 uma aplicação personalizada numa conversação

Os passos seguintes orientam-no para carregar e validar o bot que recebe todas as mensagens de canal numa Equipa sem ser @mentioned:

  1. Selecione ou crie uma equipe.

  2. Selecione ●●● no painel esquerdo. É apresentado o menu pendente.

  3. Selecione Gerir equipa no menu pendente.

    Captura de ecrã a mostrar a opção gerir equipa na aplicação Teams.

  4. Selecione Aplicativos. Múltiplos aplicativos aparecem.

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

    Captura de ecrã a mostrar a opção carregar uma aplicação personalizada.

  6. Selecione Abrir.

    Captura de ecrã a mostrar a caixa de diálogo abrir para selecionar o pacote de aplicação.

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

    Captura de ecrã a mostrar o botão Adicionar para adicionar um bot a uma equipa.

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

    O bot recebe a mensagem sem ser @mentioned.

    Captura de ecrã a mostrar um bot a receber uma mensagem num canal.

Trechos de código

O código seguinte 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 Esta aplicação de exemplo mostra como um bot pode receber todas as mensagens de canal com RSC sem ser @mentioned. View View Exibir

Confira também