Recepción de todos los mensajes de conversación

El modelo de permisos de consentimiento específico de recursos (RSC), desarrollado originalmente para las API de Microsoft Teams Graph, se está ampliando a escenarios de bot. Con RSC, los propietarios de conversaciones pueden dar su consentimiento para que un bot reciba todos los mensajes de usuario en canales y chats estándar sin ser @mentioned. Esto se puede habilitar especificando las cadenas de permiso o ChatMessage.Read.Chat en el ChannelMessage.Read.Group manifiesto de la aplicación (anteriormente denominado manifiesto de aplicación de Teams). Los propietarios de conversaciones pueden conceder consentimiento durante el proceso de instalación o actualización de la aplicación después de publicar las actualizaciones de la aplicación. Para obtener más información sobre cómo habilitar RSC para la aplicación y dentro de un inquilino, consulte consentimiento específico del recurso.

Nota:

Los bots que reciben todos los mensajes de conversación con RSC se admiten en entornos de Government Community Cloud (GCC), GCC-High y Department of Defense (DOD).

Permitir que los bots reciban todos los mensajes de canal o chat

Los ChannelMessage.Read.Group permisos y ChatMessage.Read.Chat RSC se extienden a los bots. Con el consentimiento del usuario y la instalación de aplicaciones, estos permisos:

  • Permitir que una aplicación de grafos especificada obtenga todos los mensajes en canales y chats, respectivamente.
  • Habilite un bot definido en el manifiesto de la aplicación para recibir todos los mensajes de conversación sin estar @mentioned en contextos pertinentes en los que se aplican los permisos.

Filtrado por mensajes de mención

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

Permiso de RSC

Los servicios que necesitan acceso a todos los datos de mensajes de Teams deben usar las API de Graph que proporcionan acceso a los datos archivados en canales y chats. Los bots deben usar el ChannelMessage.Read.Group permiso Y ChatMessage.Read.Chat RSC adecuadamente para crear y mejorar la experiencia atractiva para que los usuarios pasen la aprobación de Microsoft Teams Store. La descripción de la aplicación debe incluir cómo usa el bot los datos que lee:

  • Los ChannelMessage.Read.Group bots no pueden usar el permiso y ChatMessage.Read.Chat RSC para extraer grandes cantidades de datos de clientes.
  • La capacidad de que los bots reciban todos los mensajes en chats mediante ChatMessage.Read.Chat solo está habilitada después de una nueva instalación o una nueva instalación en un chat.
  • Si tiene una aplicación que usa el ChatMessage.Read.Chat permiso RSC para escenarios de Graph, pruebe la aplicación siguiendo los pasos descritos en Cargar una aplicación personalizada en una conversación y modifique la aplicación antes de que la característica esté disponible con carácter general. Si no desea que el bot reciba todos los mensajes de chat, implemente el siguiente fragmento de código. Si no se realiza ninguna acción, el bot recibirá todos los mensajes después de las nuevas instalaciones.

Actualizar el manifiesto de la aplicación

Para que el bot reciba todos los mensajes de conversación, las cadenas de permiso RSC pertinentes deben especificarse en la authorization.permissions.resourceSpecific propiedad del manifiesto de la aplicación. Para obtener más información, consulte esquema de manifiesto de aplicación.

Captura de pantalla que muestra los cambios que se realizarán en el manifiesto de la aplicación.

El código siguiente proporciona un ejemplo del manifiesto de la aplicación:

  • webApplicationInfo.id: identificador de la aplicación de Microsoft Entra. El identificador de la aplicación puede ser el mismo que el identificador del bot.
  • webApplicationInfo.resource: cualquier cadena. El campo de recurso no tiene ninguna operación en RSC, pero debe agregarse con un valor para evitar la respuesta de error.
  • authorization.permissions.resourceSpecific: permisos de RSC para la aplicación con o ambos ChannelMessage.Read.Group y ChatMessage.Read.Chat especificados. Para obtener más información, vea permisos específicos del recurso.

El código siguiente proporciona un ejemplo del manifiesto de aplicación versión 1.12 o 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": []
}

Carga de una aplicación personalizada en una conversación

Los pasos siguientes le guían para cargar y validar el bot que recibe todos los mensajes de canal en un equipo sin ser @mentioned:

  1. Seleccione o cree un equipo.

  2. Seleccione ●●● en el panel izquierdo. Aparece el menú desplegable.

  3. Seleccione Administrar equipo en el menú desplegable.

    Captura de pantalla que muestra la opción de equipo de administración en la aplicación Teams.

  4. Seleccione Aplicaciones. Aparecen varias aplicaciones.

  5. Seleccione Cargar una aplicación personalizada en la esquina inferior derecha.

    Captura de pantalla que muestra la opción cargar una aplicación personalizada.

  6. Seleccione Abrir.

    Captura de pantalla que muestra el cuadro de diálogo abierto para seleccionar el paquete de la aplicación.

  7. Seleccione Agregar en la ventana emergente de detalles de la aplicación para agregar el bot al equipo seleccionado.

    Captura de pantalla que muestra el botón Agregar para agregar un bot a un equipo.

  8. Seleccione un canal y escriba un mensaje en el canal del bot.

    El bot recibe el mensaje sin ser @mentioned.

    Captura de pantalla que muestra un bot que recibe un mensaje en un canal.

Fragmentos de código

El código siguiente proporciona un ejemplo de los permisos de 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."));
}

Ejemplo de código

Ejemplo de nombre Descripción .NET Node.js Manifiesto de la aplicación
Mensajes de canal con permisos RSC Esta aplicación de ejemplo muestra cómo un bot puede recibir todos los mensajes de canal con RSC sin ser @mentioned. View View Ver

Consulte también