Cartões atualizados

Agora você pode fornecer informações mais recentes aos seus usuários em Cartões Adaptáveis. Inclua uma combinação de edições de atualização e mensagem no Teams. Atualize as exibições específicas do usuário dinamicamente para seu estado mais recente como e quando houver uma alteração em seu serviço. Por exemplo, para gerenciamento de projetos ou cartões de bilhetagem, atualize os comentários e a tarefa status. Para aprovações, o estado mais recente é refletido ao mesmo tempo em que fornece informações e ações diferenciadas.

Por exemplo, um usuário pode criar uma solicitação de aprovação de ativo em uma conversa do Teams. Alex cria uma solicitação de aprovação e a atribui a Megan e Nestor. A seguir estão as duas partes para criar a solicitação de aprovação:

  • Exibições específicas do usuário podem ser aplicadas usando a refresh propriedade dos Cartões Adaptáveis. Usando exibições específicas do usuário, é possível mostrar uma cartão com botões Aprovar ou Rejeitar para um conjunto de usuários e mostrar uma cartão sem esses botões para outros usuários.

  • Para manter o estado cartão sempre atualizado, o mecanismo de edição de mensagens do Teams pode ser usado. Por exemplo, para cada aprovação, o bot pode disparar uma edição de mensagem para todos os usuários. Essa edição de mensagem de bot dispara uma solicitação de invocação adaptiveCard/action para todos os usuários de atualização automática, à qual o bot pode responder com o usuário atualizado cartão específico.

Para obter mais informações, confira como fazer uma edição de mensagem de bot.

Cartão de base de aprovação

O código a seguir fornece um exemplo de uma base de aprovação cartão:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "acceptRejectView"
    },
    "userIds": ["<Megan's user MRI>", "<Nestor's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Asset Request B12"
    },
    {
      "type": "TextBlock",
      "text": "Submitted by **Alex**"
    },
    {
      "type": "TextBlock",
      "text": "Approval pending from **Megan and Nestor**"
    }
  ]
}

Aprovação cartão com botões Aprovar e Rejeitar

O código a seguir fornece um exemplo de uma cartão de aprovação com botões Aprovar e Rejeitar:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "acceptRejectView"
    },
    "userIds": ["<Nestor's user MRI>", "<Megan's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Approval Request B12"
    },
    {
      "type": "TextBlock",
      "text": "Submitted by **Alex**"
    },
    {
      "type": "TextBlock",
      "text": "Approval pending from **Megan and Nestor**"
    }
  ],
  "actions": [
    {
      "type": "Action.Execute",
      "title": "Approve",
      "verb": "approve",
      "data": {
            "more info": "<more info>"
      }
    },
    {
      "type": "Action.Execute",
      "title": "Reject",
      "verb": "reject",
      "data": {
            "more info": "<more info>"
      }
    }
  ]
}

A seguir estão as duas funções mostradas aos usuários dependendo da solicitação de aprovação:

  • Base de aprovação cartão: mostrado aos usuários que não fazem parte da lista de aprovadores e a solicitação ainda não foi aprovada ou rejeitada, e não faz parte da userIds lista na refresh propriedade do JSON do Cartão Adaptável.
  • Aprovação cartão com botões Aprovar ou Rejeitar: mostrado aos usuários que fazem parte da lista de aprovadores e à userIds lista na refresh propriedade do JSON do Cartão Adaptável.

Para enviar a solicitação de aprovação do ativo:

  1. Alex levanta uma solicitação de aprovação de ativos em uma conversa do Teams e atribui-a a Megan e Nestor.

  2. O bot envia a base de aprovação cartão na conversa.

  3. Todos os outros usuários na conversa veem o cartão enviado pelo bot. A atualização automática é disparada para Megan e Nestor, que agora veem o usuário específico cartão com botões Aprovar ou Rejeitar à medida que suas MRIs de usuário são adicionadas à userIds lista na refresh propriedade do Cartão Adaptável.

    Exibições Específicas do Usuário

  4. O Nestor seleciona o botão Aprovar , que é alimentado com Action.Execute. O bot obtém uma solicitação de invocação adaptiveCard/action à qual pode retornar um Cartão Adaptável em resposta.

  5. O bot dispara uma edição de mensagem com um cartão atualizado, que diz que Nestor aprovou a solicitação enquanto a aprovação de Megan está pendente.

  6. A edição de mensagem de bot dispara uma atualização automática para Megan e ela vê a cartão específica do usuário atualizada, que diz que Nestor aprovou a solicitação, mas também vê os botões Aprovar ou Rejeitar. A ressonância magnética de usuário do Nestor é removida da userIds lista na refresh propriedade deste JSON de Cartão Adaptável nas etapas 4 e 5. Agora, a atualização automática só é disparada para Megan.

    Exibições específicas do usuário atualizadas

  7. Agora, Megan seleciona o botão Aprovar , que é alimentado com Action.Execute. O bot obtém uma solicitação de invocação adaptiveCard/action à qual pode retornar um Cartão Adaptável em resposta.

  8. O bot dispara uma edição de mensagem com uma cartão atualizada, que diz que Nestor e Megan aprovaram a solicitação.

  9. A edição de mensagens de bot não dispara nenhuma atualização automática. A ressonância magnética de usuário de Megan também é removida da userIds lista na refresh propriedade deste JSON de Cartão Adaptável nas etapas 7 e 8.

    Exibições atualizadas

Cartão Adaptável enviado como resposta de adaptiveCard/action e message edit

O código a seguir fornece um exemplo de Cartões Adaptáveis enviados como resposta de adaptiveCard/action e message edit para as etapas 4 e 5:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "acceptRejectView"
    },
    "userIds": ["<Megan's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Asset Request B12"
    },
    {
      "type": "TextBlock",
      "text": "Submitted by **Alex**"
    },
    {
      "type": "TextBlock",
      "text": "Approval pending from **Megan**"
    },
    {
      "type": "TextBlock",
      "text": "Approved by **Nestor**"
    }
  ]
}

O código a seguir fornece um exemplo de Cartões Adaptáveis enviados como resposta de invocação por meio da adaptiveCard/action atualização automática para a etapa 6:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "acceptRejectView"
    },
    "userIds": ["<Megan's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Approval Request B12"
    },
    {
      "type": "TextBlock",
      "text": "Submitted by **Alex**"
    },
    {
      "type": "TextBlock",
      "text": "Approval pending from **Megan**"
    },
    {
      "type": "TextBlock",
      "text": "Approved by **Nestor**"
    }
  ],
  "actions": [
    {
      "type": "Action.Execute",
      "title": "Approve",
      "verb": "approve",
      "data": {
            "more info": "<more info>"
      }
    },
    {
      "type": "Action.Execute",
      "title": "Reject",
      "verb": "reject",
      "data": {
            "more info": "<more info>"
      }
    }
  ]
}

O código a seguir fornece um exemplo de Cartões Adaptáveis enviados como resposta de adaptiveCard/action e message edit para as etapas 7 e 8:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "acceptRejectView"
    },
    "userIds": []
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Asset Request B12"
    },
    {
      "type": "TextBlock",
      "text": "Submitted by **Alex**"
    },
    {
      "type": "TextBlock",
      "text": "Approved by **Nestor and Megan**"
    }
  ]
}

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