Exibições específicas do usuárioUser Specific Views

Anteriormente, se cartões adaptáveis foram enviados em uma conversa Teams, todos os usuários verão exatamente o mesmo conteúdo do cartão.Earlier if Adaptive Cards was sent in a Teams conversation, all users see the exact same card content. Com a introdução do modelo de Ações Universais e para Cartões Adaptáveis, os desenvolvedores de bot agora podem fornecer exibições específicas do usuário de cartões refresh adaptáveis aos usuários.With the introduction of the Universal Actions model and refresh for Adaptive Cards, bot developers can now provide User Specific Views of Adaptive Cards to users. O mesmo Cartão Adaptável agora pode atualizar para um Cartão Adaptável Específico do Usuário.The same Adaptive Card can now refresh to a User Specific Adaptive Card.

Por exemplo, Megan, uma inspetora de segurança da Contoso, deseja criar um incidente e atribuí-lo a Alex.For example, Megan, a safety inspector at Contoso, wants to create an incident and assign it to Alex. Ela também quer que todos na equipe sejam cientes sobre o incidente.She also wants everyone in the team to be aware about the incident. Megan usa a extensão de mensagem de relatório de incidentes da Contoso alimentada por Ações Universais para Cartões Adaptáveis.Megan uses Contoso incident reporting message extension powered by Universal Actions for Adaptive Cards.

Exibições específicas do usuário

Exibições específicas do usuário para cartões adaptáveisUser Specific Views for Adaptive Cards

O código a seguir fornece um exemplo de Cartões Adaptáveis:The following code provides an example of Adaptive Cards:

{
  "$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 cartões adaptáveis, atualize exibições específicas do usuário e invoque solicitações ao botTo send Adaptive Cards, refresh User Specific Views, and invoke requests to the bot

  1. Quando Megan cria um novo incidente, o bot envia o Cartão Adaptável ou o cartão comum com detalhes de incidentes na Teams conversa.When Megan creates a new incident, the bot sends the Adaptive Card or common card with incident details in the Teams conversation.
  2. Agora, esse cartão é atualizado automaticamente para o User Specific View para Megan e Alex.Now this card automatically refreshes to User Specific View for Megan and Alex. Os MRIs de usuário de Alex e Megan são adicionados na propriedade da propriedade userIds refresh JSON do Cartão Adaptável.Alex's and Megan's user MRIs are added in userIds property of refresh property of the Adaptive Card JSON. O cartão permanece o mesmo para outros usuários na conversa.The card remains the same for other users in the conversation.
  3. Para Megan, a atualização automática dispara uma adaptiveCard/action solicitação de invocação para o bot.For Megan, automatic refresh triggers an adaptiveCard/action invoke request to the bot. O bot pode retornar um cartão de criador de incidentes com Edit um botão como resposta a essa solicitação de invocação.The bot can return an incident creator card with Edit button as a response to this invoke request.
  4. Da mesma forma para Alex, a atualização automática dispara outra adaptiveCard/action solicitação de invocação para o bot.Similarly for Alex, automatic refresh triggers another adaptiveCard/action invoke request to the bot. O bot pode retornar um botão de cartão de proprietário Resolve de incidente como resposta a essa solicitação de invocação.The bot can return an incident owner card Resolve button as a response to this invoke request.

Invocar solicitação enviada Teams cliente para o botInvoke request sent from Teams client to the bot

O código a seguir fornece um exemplo de uma solicitação de invocação enviada do cliente Teams Alex e Megan para o bot:The following code provides an example of an invoke request sent from Alex's and Megan's Teams client to the 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" 
  }
}

adaptiveCard/action invoca o cartão de respostaadaptiveCard/action invoke response card

O código a seguir fornece um exemplo de um cartão de resposta de invocação adaptiveCard/action para Megan:The following code provides an example of an adaptiveCard/action invoke response card for 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>",
            ...
      }
    }
  ]
}

adaptiveCard/action invocam o cartão de resposta para AlexadaptiveCard/action invoke response card for Alex

O código a seguir fornece um exemplo de um cartão de resposta de invocação adaptiveCard/action para Alex:The following code provides an example of an adaptiveCard/action invoke response card for 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>",
            ...
      }
    }
  ]
}

Invocar resposta para retornar cartões adaptáveisInvoke response to return Adaptive Cards

O código a seguir fornece um exemplo de uma resposta de invocação para retornar Cartões Adaptáveis:The following code provides an example of an invoke response to return Adaptive Cards:

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

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

Diretrizes de design de cartão para ter em mente ao projetar exibições específicas do usuário:Card design guidelines to keep in mind while designing User Specific Views:

  • Você pode criar no máximo 60 Exibições Específicas do Usuário para um cartão específico que está sendo enviado para um chat ou canal especificando-os userIds na refresh seção.You can create a maximum of 60 User Specific Views for a particular card being sent to a chat or channel by specifying their userIds in the refresh section.
  • Cartão Base: A versão base do cartão que o desenvolvedor de bot envia para o chat.Base Card: The base version of the card that the bot developer sends to the chat. Esta é a versão do Cartão Adaptável para todos os usuários que não são especificados na userIds seção.This is the version of the Adaptive Card for all users who are not specified in the userIds section.
  • Uma atualização ou edição de mensagem pode ser usada para atualizar o cartão base e atualizar simultaneamente o Cartão Específico do Usuário.A message update or edit can be used to update the base card and simultaneously refresh the User Specific Card.

Confira tambémSee also