Exibições Específicas do Usuário
Anteriormente, se os Cartões Ajustáveis fossem enviados numa conversação do Teams, todos os utilizadores veriam exatamente o mesmo conteúdo do cartão. Com a introdução do modelo de Ações Universais e refresh
dos Cartões Ajustáveis, os programadores de bots podem agora fornecer Vistas Específicas do Utilizador de Cartões Ajustáveis aos utilizadores. O mesmo Cartão Ajustável pode agora ser atualizado para um Cartão Ajustável Específico do Utilizador. O Cartão Ajustável fornece cenários avançados, como aprovações, controlos para criadores de inquéritos, pedidos de suporte, gestão de incidentes e cartões de gestão de projetos.
Observação
- A Vista Específica do Utilizador é suportada para Cartões Ajustáveis enviados por um bot e depende das Ações Universais.
- No máximo, 60 utilizadores diferentes podem ver uma versão diferente do cartão com informações ou ações adicionais.
Por exemplo, a Megan, inspetora de segurança da Contoso, quer criar um incidente e atribuí-lo ao Alex. A Megan também quer que todos na equipa estejam atentos ao incidente. A Megan utiliza a extensão de mensagem de relatório de incidentes da Contoso com tecnologia Ações Universais para Cartões Ajustáveis.
Vistas Específicas do Utilizador para Cartões Ajustáveis
O código seguinte fornece um exemplo de Cartões Ajustá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 Ajustáveis, atualize as Vistas Específicas do Utilizador e invoque pedidos para o bot:
- Quando a Megan cria um novo incidente, o bot envia o Cartão Ajustável ou cartão comum com os detalhes do incidente na conversação do Teams.
- Agora, este cartão é atualizado automaticamente para a Vista Específica do Utilizador para Megan e Alex. As RMs de utilizador de Alex e Megan são adicionadas na
userIds
propriedade darefresh
propriedade do Cartão Ajustável JSON. O cartão permanece o mesmo para outros utilizadores na conversação. - Para a Megan, a atualização automática aciona um pedido de invocação
adaptiveCard/action
para o bot. O bot pode devolver um cartão de criador de incidentes comEdit
o botão como resposta a este pedido de invocação. - Da mesma forma, para Alex, a atualização automática aciona outro
adaptiveCard/action
pedido de invocação para o bot. O bot pode devolver um botão de cartãoResolve
do proprietário do incidente como resposta a este pedido de invocação.
Invocar pedido enviado do cliente do Teams para o bot
O código seguinte fornece um exemplo de um pedido de invocação enviado do cliente teams da Alex e da 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"
}
}
cartão de resposta adaptiveCard/action invoke
O código seguinte fornece um exemplo de um cartão de resposta adaptávelCard/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>",
...
}
}
]
}
adaptiveCard/action invocam cartão de resposta para Alex
O código seguinte fornece um exemplo de um cartão de resposta adaptávelCard/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>",
...
}
}
]
}
Invocar resposta para devolver Cartões Ajustáveis
O código seguinte fornece um exemplo de uma resposta de invocação para devolver Cartões Ajustá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 seguinte fornece diretrizes de design de cartões para Vistas Específicas do Utilizador:
Comportamento de atualização: pode criar um máximo de 60 Vistas Específicas do Utilizador para um determinado cartão enviado para uma conversação ao especificar as
Refresh
mesmasuserIds
na propriedade .Se o
userIds
campo não estiver especificado na propriedade, o cliente doRefresh
Teams pode acionar automaticamente a atualização para todos os utilizadores quando houver menos ou igual a 60 membros na conversação.Para que os utilizadores acionem manualmente a atualização do cartão, podem selecionar Atualizar no menu de opções de mensagem. Isto acontece a todos os utilizadores quando existem menos de 60 membros numa conversação ou ao conjunto de utilizadores não especificado na
userIds
lista quando existem todos ou menos de 60 utilizadores numa conversação.
Cartão base: o bot envia a mensagem, que incorpora com a versão base do cartão. Todos os membros da conversação podem ver o mesmo. Posteriormente, o bot obtém o Cartão Específico do Utilizador através da atualização para os utilizadores especificados na
userIds
secção .Tempo limite de atualização: o cliente do Teams aciona uma atualização de duas formas, seja através de Atualizar ou selecionando Executar. A atualização só é acionada se o cartão da última invocação tiver mais de um minuto. Pode controlar o comportamento da atualização ao adicionar um carimbo de data/hora ao saco de dados e verificá-lo antes de enviar o cartão atualizado.
Para Vistas Específicas do Utilizador, o cliente do Teams armazena 50 cartões em cache mais recentes por utilizador. Quando um novo cartão requer colocação em cache, o arquivo remove o cartão mais antigo com base na última leitura e substitui-o pelo cartão mais recente. Não existe nenhum processo para restaurar os cartões removidos após um determinado período. O utilizador também pode limpar a cache do Teams para eliminar cartões da loja.
Uma atualização de mensagens pode ser utilizada para atualizar o cartão base e atualizar simultaneamente o Cartão Específico do Utilizador. Abrir o chat ou canal também atualiza o cartão para os utilizadores com a opção Atualizar ativada.
Para cenários com grupos maiores em que os utilizadores mudam para uma vista sobre a ação, que precisa de atualizações dinâmicas para os participantes, pode continuar a adicionar até 60 utilizadores à
userIds
lista. Pode remover o primeiro participante da lista quando o 61.º utilizador responder. Para os utilizadores que são removidos dauserIds
lista, pode fornecer uma Atualização manual para obter o resultado mais recente.Dê um pedido aos utilizadores para obterem uma Vista Específica do Utilizador, onde veem apenas uma vista específica do cartão ou algumas ações.
Observação
O Cartão Específico do Utilizador devolvido pelo bot é enviado apenas para o cliente específico que o pediu. Por exemplo, se um utilizador mudar para um cliente diferente, como do ambiente de trabalho para o telemóvel, é acionado outro evento de invocação para obter 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, Vistas Específicas do Utilizador e Cartões Ajustáveis atuais em bots. | View | View | Exibir |