Vistas específicas de usuario

Anteriormente, si se enviaran tarjetas adaptables en una conversación de Teams, todos los usuarios verían exactamente el mismo contenido de tarjeta. Con la introducción del modelo de acciones universales y refresh las tarjetas adaptables, los desarrolladores de bots ahora pueden proporcionar vistas específicas del usuario de tarjetas adaptables a los usuarios. La misma tarjeta adaptable ahora puede actualizarse a una tarjeta adaptable específica del usuario. La tarjeta adaptable proporciona escenarios eficaces, como aprobaciones, controles de creador de sondeos, vales, administración de incidentes y tarjetas de administración de proyectos.

Nota:

  • La vista específica del usuario es compatible con las tarjetas adaptables enviadas por un bot y depende de Las acciones universales.
  • Un máximo de 60 usuarios diferentes pueden ver una versión diferente de la tarjeta con información o acciones adicionales.

Por ejemplo, Megan, un inspector de seguridad de Contoso, quiere crear un incidente y asignarlo a Alex. Megan también quiere que todos los miembros del equipo estén al tanto del incidente. Megan usa la extensión de mensajes de informes de incidentes de Contoso con tecnología de Acciones universales para tarjetas adaptables.

Vistas específicas del usuario para tarjetas adaptables

El código siguiente proporciona un ejemplo de tarjetas adaptables:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "originator":"c9b4352b-a76b-43b9-88ff-80edddaa243b",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "editOrResolveView",
      "data": {
            "refresh info": "<refresh info>"
      }
    },
    "userIds": ["<Megan's user MRI>", "<Alex's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Incident 1234"
    },
    {
      "type": "TextBlock",
      "text": "Incident details: <incident details>"
    }
  ]
}

Para enviar tarjetas adaptables, actualice vistas específicas del usuario e invoque solicitudes al bot:

  1. Cuando Megan crea un nuevo incidente, el bot envía la tarjeta adaptable o la tarjeta común con los detalles del incidente en la conversación de Teams.
  2. Ahora esta tarjeta se actualiza automáticamente a la vista específica del usuario para Megan y Alex. Las MRI de usuario de Alex y Megan se agregan en userIds la propiedad de la refresh propiedad del JSON de tarjeta adaptable. La tarjeta sigue siendo la misma para otros usuarios de la conversación.
  3. Para Megan, la actualización automática desencadena una adaptiveCard/action solicitud de invocación al bot. El bot puede devolver una tarjeta de creador de incidentes con Edit el botón como respuesta a esta solicitud de invocación.
  4. De forma similar para Alex, la actualización automática desencadena otra adaptiveCard/action solicitud de invocación al bot. El bot puede devolver un botón de tarjeta Resolve de propietario del incidente como respuesta a esta solicitud de invocación.

Invocación de la solicitud enviada desde el cliente de Teams al bot

El código siguiente proporciona un ejemplo de una solicitud de invocación enviada desde el cliente de Alex y De Megan Teams al bot:

{ 
  "type": "invoke",
  "name": "adaptiveCard/action",

  // ... other properties omitted for brevity

  "value": { 
    "action": { 
      "type": "Action.Execute", 
      "id": "", 
      "verb": "editOrResolveView",
      "data": { 
            "refresh info": "<refresh info>"
      } 
    },
    "trigger": "automatic" 
  }
}

tarjeta de respuesta adaptiveCard/action invoke

El código siguiente proporciona un ejemplo de una tarjeta de respuesta adaptiveCard/action invoke para Megan:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "originator":"c9b4352b-a76b-43b9-88ff-80edddaa243b",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "editOrResolveView"
    },
    "userIds": ["<Megan's user MRI>", "<Alex's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Incident 1234"
    },
    {
      "type": "TextBlock",
      "text": "Incident details: <incident details>"
    }
  ],
  "actions": [
    {
      "type": "Action.Execute",
      "title": "Edit",
      "verb": "edit",
      "data": {
            "additional info": "<additional info>",
            ...
      }
    }
  ]
}

tarjeta de respuesta adaptiveCard/action invoke para Alex

El código siguiente proporciona un ejemplo de una tarjeta de respuesta adaptiveCard/action invoke para Alex:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "originator":"c9b4352b-a76b-43b9-88ff-80edddaa243b",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "editOrResolveView"
    },
    "userIds": ["<Megan's user MRI>", "<Alex's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Incident 1234"
    },
    {
      "type": "TextBlock",
      "text": "Incident details: <incident details>"
    }
  ],
  "actions": [
    {
      "type": "Action.Execute",
      "title": "Resolve",
      "verb": "resolve",
      "data": {
            "additional info": "<additional info>",
            ...
      }
    }
  ]
}

Invocación de la respuesta para devolver tarjetas adaptables

El código siguiente proporciona un ejemplo de una respuesta de invocación para devolver tarjetas adaptables:

string cardJson = "<adaptive card json>";
var card = JsonConvert.DeserializeObject(cardJson);

var adaptiveCardResponse = JObject.FromObject(new
 {
    statusCode = 200,
    type = "application/vnd.microsoft.adaptive.card",
    value = card
 });

En la lista siguiente se proporcionan directrices de diseño de tarjetas para vistas específicas del usuario:

  • Comportamiento de actualización: puede crear un máximo de 60 vistas específicas del usuario para una tarjeta determinada enviada a una conversación especificando su userIds en la Refresh propiedad .

    • Si el userIds campo no se especifica en la propiedad , el Refresh cliente de Teams puede desencadenar automáticamente la actualización para todos los usuarios cuando haya menos o igual que 60 miembros en la conversación.

    • Para que los usuarios desencadenen manualmente la actualización de tarjetas, pueden seleccionar Actualizar en el menú de opciones del mensaje. Esto sucede a todos los usuarios cuando hay menos de 60 miembros en una conversación, o al conjunto de usuarios no especificados en la userIds lista cuando hay todos o menos de 60 usuarios en una conversación.

  • Tarjeta base: el bot envía el mensaje, que se inserta con la versión base de la tarjeta. Todos los miembros de la conversación pueden ver lo mismo. Posteriormente, el bot captura la tarjeta específica del usuario mediante la actualización de los usuarios especificados en la userIds sección .

  • Tiempo de espera de actualización: el cliente de Teams desencadena una actualización de dos maneras, ya sea a través de Actualizar o seleccionando Ejecutar. La actualización solo se desencadena si la tarjeta de la última invocación es anterior a un minuto. Para controlar el comportamiento de la actualización, agregue una marca de tiempo al contenedor de datos y la compruebe antes de enviar la tarjeta actualizada.

  • Para vistas específicas del usuario, el cliente de Teams almacena 50 tarjetas almacenadas en caché más recientes por usuario. Cuando una nueva tarjeta requiere almacenamiento en caché, el almacén quita la tarjeta más antigua en función de cuándo se lee por última vez y la reemplaza por la tarjeta más reciente. No hay ningún proceso para restaurar las tarjetas eliminadas después de un período determinado. El usuario también puede borrar la memoria caché de Teams para eliminar tarjetas del almacén.

  • Se puede usar una actualización de mensajes para actualizar la tarjeta base y actualizar simultáneamente la tarjeta específica del usuario. Al abrir el chat o el canal también se actualiza la tarjeta para los usuarios con la actualización habilitada.

  • En escenarios con grupos más grandes en los que los usuarios cambian a una vista sobre la acción, que necesita actualizaciones dinámicas para los respondedores, puede seguir sumando hasta 60 usuarios a la userIds lista. Puede quitar el primer respondedor de la lista cuando el usuario 61 responda. Para los usuarios que se quitan de la userIds lista, puede proporcionar una actualización manual para obtener el resultado más reciente.

  • Pida a los usuarios que obtengan una vista específica del usuario, donde solo ven una vista determinada de la tarjeta o algunas acciones.

Nota:

La tarjeta específica del usuario devuelta por el bot solo se envía al cliente específico que solicitó para ella. Por ejemplo, si un usuario cambia a otro cliente, como de escritorio a móvil, se desencadena otro evento de invocación para capturar la tarjeta actualizada.

Ejemplo de código

Ejemplo de nombre Descripción .NET Node.js Manifiesto
Tarjetas adaptables de flujos de trabajo secuenciales En este ejemplo se muestra la implementación de flujos de trabajo secuenciales, vistas específicas del usuario y tarjetas adaptables actuales en bots. View View Ver

Consulte también