Exibições Específicas do Usuário

Anteriormente, se cartões adaptáveis fossem enviados em uma conversa do Teams, todos os usuários veriam exatamente o mesmo cartão conteúdo. Com a introdução do modelo de Ações Universais e refresh para Cartões Adaptáveis, os desenvolvedores de bot agora podem fornecer exibições específicas do usuário de cartões adaptáveis aos usuários. O mesmo Cartão Adaptável agora pode ser atualizado para um cartão adaptável específico do usuário. O Cartão Adaptável fornece cenários poderosos, como aprovações, controles do criador da pesquisa, tíquetes, gerenciamento de incidentes e cartões de gerenciamento de projetos.

Observação

  • A Exibição Específica do Usuário tem suporte para cartões adaptáveis enviados por um bot e depende de Ações Universais.
  • No máximo 60 usuários diferentes podem ver uma versão diferente do cartão com informações ou ações adicionais.

Por exemplo, Megan, inspetora de segurança da Contoso, quer criar um incidente e atribuí-lo a Alex. Megan também quer que todos na equipe estejam cientes sobre o incidente. Megan usa a extensão de mensagem de relatório de incidentes contoso alimentada por Ações Universais para Cartões Adaptáveis.

Exibições específicas do usuário para cartões adaptáveis

O código a seguir fornece um exemplo de Cartões Adaptáveis:

{
  "$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 para o bot:

  1. Quando Megan cria um novo incidente, o bot envia o Cartão Adaptável ou cartão comum com detalhes do incidente na conversa do Teams.
  2. Agora este cartão é atualizado automaticamente para a Exibição Específica do Usuário para Megan e Alex. As MRIs de usuário de Alex e Megan são adicionadas na userIds propriedade da refresh JSON do Cartão Adaptável. O cartão permanece o mesmo para outros usuários na conversa.
  3. Para Megan, a atualização automática dispara uma solicitação de invocação adaptiveCard/action para o bot. O bot pode retornar um criador de incidentes cartão com Edit o botão como resposta a essa solicitação de invocação.
  4. Da mesma forma para Alex, a atualização automática dispara outra adaptiveCard/action solicitação de invocação para o bot. O bot pode retornar um botão cartão Resolve proprietário de incidentes como resposta a essa solicitação de invocação.

Invocar solicitação enviada do cliente do Teams para o bot

O código a seguir fornece um exemplo de uma solicitação de invocação enviada do cliente do Teams de Alex e Megan para o 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 invoke response cartão

O código a seguir fornece um exemplo de uma resposta de invocação adaptávelCard/action cartão 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>",
            ...
      }
    }
  ]
}

adaptiveCard/action invoke response cartão for Alex

O código a seguir fornece um exemplo de uma resposta de invocação adaptávelCard/action cartão 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>",
            ...
      }
    }
  ]
}

Invocar resposta para retornar cartões adaptáveis

O código a seguir fornece um exemplo de uma resposta de invocação para retornar Cartões Adaptáveis:

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
 });

A lista a seguir fornece diretrizes de design cartão para exibições específicas do usuário:

  • Comportamento de atualização: você pode criar um máximo de 60 exibições específicas do usuário para um determinado cartão enviados para uma conversa especificando-as userIds na Refresh propriedade.

    • Se o userIds campo não for especificado na propriedade, o cliente do Refresh Teams poderá disparar automaticamente a atualização para todos os usuários quando houver menos ou igual a 60 membros na conversa.

    • Para que os usuários acionem manualmente cartão atualização, eles podem selecionar Atualizar no menu de opções de mensagem. Isso acontece com todos os usuários quando há menos de 60 membros em uma conversa ou com o conjunto de usuários não especificados na userIds lista quando há todos ou menos 60 usuários em uma conversa.

  • Base cartão: o bot envia a mensagem, que insira com a versão base do cartão. Todos os membros da conversa podem exibir o mesmo. O bot posteriormente busca o Cartão Específico do Usuário por meio da atualização para os usuários especificados na userIds seção.

  • Tempo limite de atualização: o cliente do Teams dispara uma atualização de duas maneiras, por meio da Atualização ou selecionando Executar. A atualização dispara somente se o cartão da última invocação for mais antigo que um minuto. Você pode controlar o comportamento de atualização adicionando um carimbo de data/hora ao saco de dados e verificando-o antes de enviar o cartão atualizado.

  • Para exibições específicas do usuário, o cliente do Teams armazena 50 cartões armazenados em cache mais recentes por usuário. Quando um novo cartão requer cache, o repositório remove o cartão mais antigo com base em quando é lido pela última vez e o substitui pelo cartão mais recente. Não há processo para restaurar os cartões removidos após um determinado período. O usuário também pode limpar o cache do Teams para excluir cartões da loja.

  • Uma atualização de mensagem pode ser usada para atualizar o cartão base e atualizar simultaneamente o Cartão Específico do Usuário. Abrir o chat ou canal também atualiza o cartão para usuários com Atualização habilitada.

  • Para cenários com grupos maiores em que os usuários alternam para uma exibição sobre a ação, que precisa de atualizações dinâmicas para os respondentes, você pode continuar somando 60 usuários à userIds lista. Você pode remover o socorrista da lista quando o 61º usuário responder. Para os usuários que são removidos da userIds lista, você pode fornecer uma Atualização manual para obter o resultado mais recente.

  • Forneça um prompt aos usuários para obter uma exibição específica do usuário, em que eles veem apenas uma exibição específica do cartão ou algumas ações.

Observação

O Cartão Específico do Usuário retornado pelo bot é enviado apenas para o cliente específico que o solicitou. Por exemplo, se um usuário alternar para um cliente diferente, como da área de trabalho para o celular, outro evento de invocação será disparado para buscar o cartão atualizado.

Exemplo de código

Nome do exemplo Descrição .NET Node.js Manifesto
Cartões Adaptáveis de Fluxos de Trabalho Sequenciais Este exemplo demonstra a implementação de fluxos de trabalho sequenciais, exibições específicas do usuário e cartões adaptáveis atuais em bots. View View Exibir

Confira também