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 EChatMessage.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.
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
eChatMessage.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:
Selecione ou crie uma equipe.
Selecione ●●● no painel esquerdo. É apresentado o menu pendente.
Selecione Gerir equipa no menu pendente.
Selecione Aplicativos. Múltiplos aplicativos aparecem.
Escolha Upload um aplicativo personalizado no canto inferior direito.
Selecione Abrir.
Selecione Adicionar através do pop-up com detalhes do aplicativo para adicionar o bot à sua equipe selecionada.
Selecione um canal e insira uma mensagem no canal para seu bot.
O bot recebe a mensagem sem ser @mentioned.
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 |