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 narefresh
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 narefresh
propriedade do JSON do Cartão Adaptável.
Para enviar a solicitação de aprovação do ativo:
Alex levanta uma solicitação de aprovação de ativos em uma conversa do Teams e atribui-a a Megan e Nestor.
O bot envia a base de aprovação cartão na conversa.
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 narefresh
propriedade do Cartão Adaptável.O Nestor seleciona o botão Aprovar , que é alimentado com
Action.Execute
. O bot obtém uma solicitação de invocaçãoadaptiveCard/action
à qual pode retornar um Cartão Adaptável em resposta.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.
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 narefresh
propriedade deste JSON de Cartão Adaptável nas etapas 4 e 5. Agora, a atualização automática só é disparada para Megan.Agora, Megan seleciona o botão Aprovar , que é alimentado com
Action.Execute
. O bot obtém uma solicitação de invocaçãoadaptiveCard/action
à qual pode retornar um Cartão Adaptável em resposta.O bot dispara uma edição de mensagem com uma cartão atualizada, que diz que Nestor e Megan aprovaram a solicitação.
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 narefresh
propriedade deste JSON de Cartão Adaptável nas etapas 7 e 8.
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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de