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 EChatMessage.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.
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
eChatMessage.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:
Selecione ou crie uma equipe.
Selecione ●●● no painel esquerdo. O menu suspenso é exibido.
Selecione Gerenciar equipe no menu suspenso.
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 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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários