Formatar cartões no Teams

Importante

Essa documentação é considerada herdada. Para obter informações e recursos abrangentes relacionados à formatação de texto em Cartões Adaptáveis, visite o hub de documentação de Cartões Adaptáveis.

A captura de tela mostra a página inicial do site de Cartões Adaptáveis da Microsoft.

O hub de documentação de Cartões Adaptáveis oferece documentação de referência completa e mais recente, um Designer de Cartão Adaptável atualizado, exemplos de JSON internos, práticas recomendadas de design e um histórico de versão detalhado dos recursos do Cartão Adaptável. Para obter mais informações, consulte introdução ao hub de documentação de Cartões Adaptáveis e novas atualizações de Cartões Adaptáveis.

A seguir temos duas maneiras de adicionar uma formatação em rich text aos seus cartões:

Os cartões aceitam formatação somente na propriedade texto, excluindo as propriedades título ou subtítulo. A formatação pode ser especificada usando-se um subconjunto de formatação XML ou HTML ou em Markdown, dependendo do tipo de cartão. Para o desenvolvimento atual e futuro de Cartões Adaptáveis, recomendamos a formatação Markdown.

O suporte à formatação difere entre os tipos de cartão. A renderização do card pode diferir ligeiramente entre a área de trabalho e o dispositivo móvel, os clientes do Microsoft Teams e o Teams no navegador da área de trabalho.

Você pode incluir uma imagem embutida em qualquer cartão do Teams. Os formatos de imagem com suporte são os formatos .png, .jpg ou .gif. Mantenha as dimensões dentro de 1024 x 1024 pixels e tamanho de arquivo menor que 1 MB. Não há suporte para imagens .gif animadas. Para obter mais informações, consulte tipos de cartões.

Você pode formatar Cartões Adaptáveis e cartões de conector para Grupos do Microsoft 365 com Markdown que incluem determinados estilos com suporte.

Formatar cartões em Markdown

Os seguintes tipos de cartão aceitam a formatação Markdown no Teams:

  • Cartões Adaptáveis: há suporte para Markdown no campo Cartão Textblock Adaptável e Fact.Title e .Fact.Value Não há suporte para HTML em Cartões Adaptáveis.
  • Cartões de conector para Grupos do Microsoft 365: Markdown e HTML limitado têm suporte em cartões de conector para Grupos do Microsoft 365 nos campos de texto.

Observação

Não há suporte para Markdown para cartões de entrada OAuth em bots.

Você pode usar quebra de linha nos Cartões Adaptáveis usando as sequências de escape \r ou \n para quebras de linha nas listas. A formatação é diferente para as versões desktop e móvel do Teams para Cartões Adaptáveis. Há suporte para menções baseadas em cartões de clientes com as versões para web, desktop e móvel. Você pode usar a propriedade de mascaramento de informações para mascarar informações específicas, como senha ou informações confidenciais de usuários dentro do elemento de entrada Input.Text do Cartão Adaptável. Você pode expandir a largura de um Cartão Adaptável usando o objeto width. Você pode habilitar o suporte ao typeahead nos Cartões Adaptáveis e filtrar o conjunto de opções de entrada à medida que o usuário digita a entrada. Você pode usar a msteams propriedade para adicionar a capacidade de exibir imagens no Stageview seletivamente.

A formatação é diferente para as versões desktop e móvel do Teams para Cartões Adaptáveis e cartões de conector. Nesta seção, você pode analisar um exemplo do formato Markdown para Cartões Adaptáveis e cartões de conector.

A tabela a seguir fornece os estilos compatíveis para Textblock, Fact.Title e Fact.Value:

Estilo Exemplo Markdown
Negrito Negrito **Bold**
Itálico Itálico _Italic_
Lista não ordenada
  • texto
  • texto
- Item 1\r- Item 2\r- Item 3
Lista ordenada
  1. texto
  2. texto
1. Green\r2. Orange\r3. Blue
Hiperlinks Bing [Title](url)

Não há suporte para as seguintes marcas Markdown:

  • Cabeçalhos
  • Tabelas
  • Imagens
  • Texto pré-formatado
  • Blockquotes

Quebras de linha para Cartões Adaptáveis

Você pode usar as sequências de escape \r ou \n para quebras de linha em listas. O uso de \n\n em listas faz com que o próximo elemento da lista fique recuado. Se você precisar de quebras de linha em outro lugar do TextBlock, use \n\n.

Diferenças entre as versões desktop e móvel para Cartões Adaptáveis

Na versão desktop, a formatação Markdown para Cartões Adaptáveis aparece conforme mostrado na imagem a seguir, tanto em navegadores web quanto no aplicativo cliente do Teams:

A captura de tela mostra um exemplo de formatação Markdown do Cartão Adaptável no cliente da área de trabalho do Teams.

No iOS, a formatação Markdown para Cartões Adaptáveis aparece conforme mostrado na imagem a seguir:

A captura de tela mostra um exemplo de formatação Markdown de Cartão Adaptável na plataforma iOS do Teams.

No Android, a formatação Markdown para Cartões Adaptáveis aparece conforme mostrado na imagem a seguir:

A captura de tela mostra um exemplo de formatação Markdown de Cartão Adaptável na plataforma Teams para Android.

Para obter mais informações sobre formatação de data e hora e localização em Cartões Adaptáveis, consulte recursos de texto em Cartões Adaptáveis.

Amostra do formato para Cartões Adaptáveis

O código a seguir mostra um exemplo de formatação de Cartões Adaptáveis:

{
    "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.0",
    "body": [
        {
            "type": "TextBlock",
            "text": "This is some **bold** text"
        },
        {
            "type": "TextBlock",
            "text": "This is some _italic_ text"
        },
        {
            "type": "TextBlock",
            "text": "- Bullet \r- List \r",
            "wrap": true
        },
        {
            "type": "TextBlock",
            "text": "1. Numbered\r2. List\r",
            "wrap": true
        },
        {
            "type": "TextBlock",
            "text": "Check out [Adaptive Cards](https://adaptivecards.microsoft.com/?topic=welcome)"
        }
    ]
}

Os Cartões Adaptáveis dão suporte a emojis. O conteúdo de card a seguir mostra um Cartão Adaptável com um emoji:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.0",
  "body": [
    {
      "type": "Container",
      "items": [
        {
          "type": "TextBlock",
          "text": "Publish Adaptive Card with emojis 🥰",
          "weight": "bolder",
          "size": "medium"
        }
      ]
    }
  ]
}

A captura de tela mostra um Cartão Adaptável com um emoji.

Observação

Se você usar APIs REST, defina charset=UTF-8 em seus cabeçalhos de solicitação para adicionar emojis em Cartões Adaptáveis.

Suporte a menções dentro dos Cartões Adaptáveis

Você pode adicionar @mentions dentro de um corpo do Cartão Adaptável para bots e respostas de extensão de mensagem. Para adicionar @mentions cartões, siga a mesma lógica de notificação e renderização das menções baseadas em mensagens em conversas de canal e chat em grupo.

Bots e extensões de mensagens podem incluir menções dentro do conteúdo do cartão nos elementos TextBlock e FactSet.

Observação

  • Menções de canal e equipe não são suportadas em mensagens de bot.
  • No entanto, você pode @mention vários usuários em uma única mensagem de Cartão Adaptável, no entanto, garantir que o limite de tamanho da mensagem não exceda 28 KB para Webhooks de entrada e 100 KB para uma mensagem de bot.
  • Os Cartões Adaptáveis enviados de Webhooks de entrada dão suporte apenas a menções de usuários e não a menções de bots.

Para incluir uma menção em um Cartão Adaptável, seu aplicativo precisa incluir os seguintes elementos:

  • <at>username</at> nos elementos com suporte do Cartão Adaptável.
  • O objeto mention dentro de uma propriedade msteams no conteúdo do cartão inclui a ID do usuário do Teams que está sendo mencionado.
  • AuserId é exclusiva da ID do seu bot e de um usuário específico. Ele pode ser usado para @mention um usuário específico. A userId pode ser recuperada usando uma das opções mencionadas em como obter a ID do usuário.

Amostra de um Cartão Adaptável com uma menção

O código a seguir mostra um exemplo de Cartão Adaptável com uma menção:

{
  "contentType": "application/vnd.microsoft.card.adaptive",
  "content": {
    "type": "AdaptiveCard",
    "body": [
      {
        "type": "TextBlock",
        "text": "Hi <at>John Doe</at>"
      }
    ],
    "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.0",
    "msteams": {
      "entities": [
        {
          "type": "mention",
          "text": "<at>John Doe</at>",
          "mentioned": {
            "id": "29:123124124124",
            "name": "John Doe"
          }
        }
      ]
    }
  }
}

ID do Objeto do Microsoft Entra e UPN na menção do usuário

A plataforma Teams permite que você menção usuários com sua ID de Objeto do Microsoft Entra e seu Nome Principal do Usuário (UPN), além das IDs de menção existentes. Bots com Cartões Adaptáveis e Conectores com Webhooks de Entrada oferecem suporte às duas IDs de menção de usuário.

A tabela a seguir descreve as IDs de menção de usuário que passaram a ter suporte recentemente:

IDs Recursos que oferecem suporte Descrição Exemplo
ID do Objeto do Microsoft Entra Bot, Conector ID de Objeto do usuário do Microsoft Entra 49c4641c-ab91-4248-aebb-6a7de286397b
UPN Bot, Conector UPN do usuário do Microsoft Entra john.smith@microsoft.com

Menção de usuário em bots com Cartões Adaptáveis

Os bots dão suporte à menção do usuário com a ID do Objeto do Microsoft Entra e o UPN, além das IDs existentes. O suporte para duas novas IDs está disponível em bots para mensagens de texto, corpo de Cartões Adaptáveis e resposta de extensão de mensagem. Os bots oferecem suporte às IDs de menção em conversas e cenários invoke. O usuário recebe uma notificação do feed de atividades quando está @mentioned com as IDs.

Observação

A atualização do esquema e as alterações da interface do usuário/experiência do usuário não são necessárias para menções do usuário com Cartões Adaptáveis no Bot.

Exemplo

Exemplo de menção de usuário em bots com Cartões Adaptáveis como se segue:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.0",
  "type": "AdaptiveCard",
  "body": [
    {
      "type": "TextBlock",
      "text": "Hi <at>Adele UPN</at>, <at>Adele Microsoft Entra ID</at>"
    }
  ],
  "msteams": {
    "entities": [
      {
        "type": "mention",
        "text": "<at>Adele UPN</at>",
        "mentioned": {
          "id": "AdeleV@contoso.onmicrosoft.com",
          "name": "Adele Vance"
        }
      },
      {
        "type": "mention",
        "text": "<at>Adele Microsoft Entra ID</at>",
        "mentioned": {
          "id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd",
          "name": "Adele Vance"
        }
      }
    ]
  }
}

A imagem a seguir ilustra a menção do usuário com Cartão Adaptável no Bot:

A captura de tela mostra uma menção de usuário no bot com Cartão Adaptável.

Menção de usuário em um Webhook de Entrada com Cartões Adaptáveis

Os webhooks de entrada começam a dar suporte à menção do usuário em Cartões Adaptáveis com a ID do Objeto do Microsoft Entra e o UPN.

Observação

  • Habilite a menção do usuário no esquema para webhooks de entrada para dar suporte à ID do Objeto do Microsoft Entra e ao UPN.
  • Alterações de interface do usuário/experiência do usuário não são necessárias para menções do usuário com a ID do Objeto e o UPN do Microsoft Entra.
Exemplo

Exemplo de menção de usuário em Webhooks de Entrada como se segue:

{
    "type": "message",
    "attachments": [
        {
        "contentType": "application/vnd.microsoft.card.adaptive",
        "content": {
            "type": "AdaptiveCard",
            "body": [
                {
                    "type": "TextBlock",
                    "size": "Medium",
                    "weight": "Bolder",
                    "text": "Sample Adaptive Card with User Mention"
                },
                {
                    "type": "TextBlock",
                    "text": "Hi <at>Adele UPN</at>, <at>Adele Microsoft Entra ID</at>"
                }
            ],
            "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
            "version": "1.0",
            "msteams": {
                "entities": [
                    {
                        "type": "mention",
                        "text": "<at>Adele UPN</at>",
                        "mentioned": {
                          "id": "AdeleV@contoso.onmicrosoft.com",
                          "name": "Adele Vance"
                        }
                      },
                      {
                        "type": "mention",
                        "text": "<at>Adele Microsoft Entra ID</at>",
                        "mentioned": {
                          "id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd",
                          "name": "Adele Vance"
                        }
                      }
                ]
            }
        }
    }]
}

A imagem a seguir ilustra a menção do usuário em Webhooks de Entrada:

A captura de tela mostra uma menção do usuário no Webhook de entrada.

People icon em um Cartão Adaptável

O ícone People ajuda os usuários a exibir as imagens dos usuários em um Cartão Adaptável. Você pode inserir uma imagem e aplicar todas as propriedades com suporte nas imagens.

Há dois tipos de ícones de pessoas com suporte em um Cartão Adaptável:

  • Persona: Se você quiser mostrar um único usuário em um Cartão Adaptável, ele exibirá o ícone de pessoas e o nome do usuário.

    O código JSON a seguir é um exemplo de um Persona card:

    {
      "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
      "type": "AdaptiveCard",
      "version": "1.0.0",
      "body": [
    {
          "type": "TextBlock",
          "text": "Persona",
          "weight": "bolder"
        },
        {
          "type": "Component",
          "name": "graph.microsoft.com/user",
          "view": "compact",
          "properties": {
            "id": "65f50003-e15d-434a-9e14-0fcfeb3d7817",
            "displayName": "Daniela Mandera",
            "userPrincipalName": "damandera@microsoft.com"
          }
        }
      ]
    }
    
  • Conjunto de Personas: Se você quiser mostrar vários usuários em um Cartão Adaptável, ele exibirá apenas o ícone de pessoas dos usuários.

    O código JSON a seguir é um exemplo de um conjunto de personas:

    {
      "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
      "type": "AdaptiveCard",
      "version": "1.0.0",
      "body": [
        {
          "type": "TextBlock",
          "text": "Persona Set",
          "weight": "bolder"
        },
        {
          "type": "Component",
          "name": "graph.microsoft.com/users",
          "view": "compact",
          "properties": {
            "users": [
              {
                "id": "65f50003-e15d-434a-9e14-0fcfeb3d7817",
                "displayName": "Daniela Mandera",
                "userPrincipalName": "damandera@microsoft.com"
              },
              {
                "id": "65f50003-e15d-434a-9e14-0fcfeb3d7817",
                "displayName": "Daniela Mandera",
                "userPrincipalName": "damandera@microsoft.com"
              }
            ]
          }
        }
      ]
    }
    

    Observação

    Não é possível personalizar o estilo da Persona e do Conjunto de Persona em um Cartão Adaptável.

A imagem a seguir é um exemplo do ícone de pessoas em um Cartão Adaptável:

A captura de tela mostra um exemplo do ícone de pessoas do tipo persona e conjunto de persona em um Cartão Adaptável.

Esquema

A tabela a seguir lista as propriedades do Component elemento:

Nome da propriedade Descrição
type component
name Use graph.microsoft.com/users para pesquisar todos os membros na organização
view compact
properties Passado para o modelo de componente
id Ressonância magnética do usuário
displayName Nome do usuário
userPrincipalName O nome principal do usuário da conta no Microsoft Entra ID

Os Componentes Adaptáveis são componentes de alto nível alimentados por elementos de Modelo e Cartão Adaptável nativos. O tipo component pode ser usado em qualquer lugar dentro do corpo do card e os dados do componente são definidos no properties atributo. Os dados do componente abaixo properties são passados diretamente para o componente. A properties propriedade define o formato para Persona e Conjunto de Persona e todas as outras propriedades em properties são ignoradas por component tipo no esquema do Cartão Adaptável.

Seu bot pode consultar a lista de membros e seus perfis de usuário básicos, incluindo IDs de usuário do Teams e informações do Microsoft Entra, como name, ide userPrincipalName. Para obter mais informações, consulte Buscar a lista de participantes ou o perfil do usuário.

As imagens a seguir mostram o ícone de pessoas em um Cartão Adaptável na área de trabalho do Teams e nos clientes móveis:

Cliente de desktop:

A captura de tela mostra os ícones de uma persona e um conjunto de personas em um Cartão Adaptável no cliente da área de trabalho do Teams.

Quando um usuário passa o mouse sobre um ícone de pessoas, o card de pessoas desse usuário é exibido.

Cliente móvel

A captura de tela mostra um exemplo de ícone de pessoas em um conjunto de persona e persona no cliente móvel do Teams.

A captura de tela mostra outro exemplo de ícone de pessoas em uma persona e persona definidas no cliente móvel do Teams.

Quando um usuário seleciona um ícone de pessoas, ele exibe o card de pessoas desse usuário.

Mascaramento de informações em Cartões Adaptáveis

Use a propriedade “mascarar informações” para mascarar informações específicas, como senha ou informações confidenciais de usuários, dentro do elemento de entrada Input.Text do Cartão Adaptável.

Observação

O recurso oferece suporte apenas ao mascaramento de informações do lado do cliente. O texto de entrada mascarado é enviado como texto claro para o endereço HTTPS do ponto de extremidade especificado durante a configuração do bot.

Para mascarar informações em Cartões Adaptáveis, adicione a style propriedade a ser typeinput.text e defina seu valor como Password.

Amostra de Cartão Adaptável com a propriedade de mascaramento

O código a seguir mostra um exemplo de Cartão Adaptável com a propriedade de mascaramento:

{
    "type": "Input.Text",
    "id": "secretThing",
    "style": "password",
},

A imagem a seguir é um exemplo de mascaramento de informações em Cartões Adaptáveis:

A captura de tela mostra a exibição de informações de mascaramento em um Cartão Adaptável.

Cartão Adaptável com largura total

Você pode usar a msteams propriedade para expandir a largura de um Cartão Adaptável e usar espaço extra na tela. A próxima seção fornece informações sobre como usar a propriedade.

Observação

Teste seu Cartão Adaptável de largura total em fatores forma estreitos, como painéis laterais móveis e de reunião, para garantir que o conteúdo não seja truncado.

Como construir cartões com largura total

Para criar um Cartão Adaptável com largura total, o objeto width na propriedade msteams do conteúdo do cartão deve ser definido como Full.

Amostra de Cartão Adaptável com largura total

Para criar um Cartão Adaptável com largura total, seu aplicativo precisa incluir os elementos da amostra de código a seguir:

{
    "type": "AdaptiveCard",
    "body": [{
        "type": "Container",
        "items": [{
            "type": "TextBlock",
            "text": "Digest card",
            "size": "Large",
            "weight": "Bolder"
        }]
    }],

    "msteams": {
        "width": "Full"
    },
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.2"
}

A imagem a seguir mostra um Cartão Adaptável com largura total:

A captura de tela mostra um Cartão Adaptável de largura total.

A imagem a seguir mostra o modo de exibição padrão de um Cartão Adaptável quando você não definiu a width propriedade como Completa:

A captura de tela mostra um Cartão Adaptável de largura pequena.

Layout responsivo do Cartão Adaptável

Os Cartões Adaptáveis adaptam automaticamente sua aparência ao estilo do aplicativo host, mas têm um layout fixo que permanece o mesmo em clientes móveis e de área de trabalho do Teams. Você deve projetar seus Cartões Adaptáveis para ter uma ótima aparência em qualquer dispositivo, a fim de fornecer uma experiência de usuário aprimorada em chat, canais e chat de reunião. Neste artigo, você aprenderá a criar Cartões Adaptáveis responsivos.

O layout responsivo do Cartão Adaptável ajuda você a criar cartões com layouts diferentes que visam larguras de card diferentes.

Criar Cartões Adaptáveis responsivos

Use a targetWidth propriedade em qualquer elemento para:

  • Mostrar ou ocultar qualquer elemento com base na largura do card.

  • Defina diferentes larguras de destino em diferentes elementos para criar diferentes layouts.

    A tabela a seguir lista os valores disponíveis targetWidth :

    Valor Descrição
    veryNarrow O elemento fica visível quando a largura do Cartão Adaptável é muito estreita, como em um chat de reunião.
    narrow O elemento fica visível quando a largura do Cartão Adaptável é estreita, como em um telefone celular no modo retrato.
    standard O elemento fica visível quando a largura do Cartão Adaptável é padrão, como em um telefone celular no modo paisagem, em um tablet no modo retrato ou em um chat na área de trabalho.
    wide O elemento é visível quando a largura do Cartão Adaptável é larga, como em um tablet no modo paisagem, em um canal ou chat na área de trabalho, quando você define seu card como largura total.

    Você também pode definir a targetWidth propriedade para tornar um elemento visível para um intervalo de larguras de card usando os prefixos atLeast e atMost . Por exemplo, você pode tornar um elemento visível somente quando a largura do card for 'padrão ou superior' ou somente quando a largura do card for 'estreita ou abaixo'. A tabela a seguir fornece orientações sobre como tornar um elemento visível para um intervalo de larguras de card:

    Exemplo Descrição
    "targetWidth": "atLeast:standard" O elemento só é visível quando a largura do Cartão Adaptável é pelo menos padrão, o que significa padrão ou largo.
    "targetWidth": "atMost:narrow" O elemento só é visível quando a largura do Cartão Adaptável é no máximo estreita, o que significa muito estreita ou estreita.

    Observação

    Você não precisa definir targetWidth todos os elementos. Se você não definir targetWidth para um elemento, o elemento estará sempre visível, independentemente da largura do card.

A seguir estão exemplos de JSON para um Cartão Adaptável projetado sem uso targetWidth e modificado para usotargetWidth:

  • Cartão Adaptável projetado sem usar targetWidth:

    {
      "type": "AdaptiveCard",
      "body": [
        {
          "type": "ColumnSet",
          "columns": [
            {
              "type": "Column",
              "items": [
                {
                  "type": "Image",
                  "style": "Person",
                  "url": "https://aka.ms/AAp9xo4",
                  "size": "Small"
                }
              ],
              "width": "auto"
            },
            {
              "type": "Column",
              "spacing": "medium",
              "verticalContentAlignment": "center",
              "items": [
                {
                  "type": "TextBlock",
                  "weight": "Bolder",
                  "text": "David Claux",
                  "wrap": true
                }
              ],
              "width": "auto"
            },
            {
              "type": "Column",
              "spacing": "medium",
              "items": [
                {
                  "type": "TextBlock",
                  "text": "Platform Architect",
                  "isSubtle": true,
                  "wrap": true
                }
              ],
              "width": "stretch",
              "verticalContentAlignment": "center"
            }
          ]
        }
      ],
      "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
      "version": "1.5"
    }
    
    

    As imagens a seguir mostram a renderização do Cartão Adaptável para diferentes larguras de card:

    • Quando a largura do card é larga, o card parece bom.

      A captura de tela mostra como um Cartão Adaptável com largura de card como larga é renderizado quando o card é projetado sem usar a propriedade targetWidth.

    • Quando a largura do card é padrão ou estreita, a função é reduzida.

      A captura de tela mostra como um Cartão Adaptável com a largura do card como padrão ou estreita é renderizado quando o card é projetado sem usar a propriedade targetWidth.

    • Quando a largura do card é muito estreita, o nome e a função são significativamente reduzidos.

      A captura de tela mostra como um Cartão Adaptável com largura de card muito estreita é renderizado quando o card é projetado sem usar a propriedade targetWidth.

  • Cartão Adaptável atualizado para responder usando targetWidth:

      {
        "type": "AdaptiveCard",
        "body": [
          {
            "type": "ColumnSet",
            "columns": [
              {
                "type": "Column",
                "targetWidth": "atLeast:narrow",
                "items": [
                  {
                    "type": "Image",
                    "style": "Person",
                    "url": "https://aka.ms/AAp9xo4",
                    "size": "Small"
                  }
                ],
                "width": "auto"
              },
              {
                "type": "Column",
                "spacing": "medium",
                "verticalContentAlignment": "center",
                "items": [
                  {
                    "type": "TextBlock",
                    "weight": "Bolder",
                    "text": "David Claux",
                    "wrap": true
                  },
                  {
                    "type": "TextBlock",
                    "targetWidth": "atMost:narrow",
                    "spacing": "None",
                    "text": "Platform Architect",
                    "isSubtle": true,
                    "wrap": true
                  }
                ],
                "width": "auto"
              },
              {
                "type": "Column",
                "targetWidth": "atLeast:standard",
                "spacing": "medium",
                "items": [
                  {
                    "type": "TextBlock",
                    "text": "Platform Architect",
                    "isSubtle": true,
                    "wrap": true
                  }
                ],
                "width": "stretch",
                "verticalContentAlignment": "center"
              }
            ]
          }
        ],
        "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
        "version": "1.5"
      }
    

    Vamos ver como o mesmo Cartão Adaptável é renderizado depois de usar a targetWidth propriedade para diferentes larguras de card:

    • Quando a largura do card é larga, o card ainda parece bom.

      A captura de tela mostra como um Cartão Adaptável é renderizado quando a propriedade targetWidth é ampla.

    • Quando a largura do card é padrão ou estreita, a função é movida sob o nome, pois não há espaço horizontal para mostrá-los lado a lado.

      A captura de tela mostra como um Cartão Adaptável é renderizado quando a propriedade targetWidth é padrão ou estreita.

    • Quando a largura do card é muito estreita, podemos ocultar a imagem e manter apenas as informações mais significativas.

      A captura de tela mostra como um Cartão Adaptável é renderizado quando a propriedade targetWidth é veryNarrow.

Para obter mais informações sobre como criar um Cartão Adaptável, consulte Criando Cartões Adaptáveis para seu aplicativo do Teams.

Suporte ao typeahead

Dentro do elemento Input.ChoiceSet do esquema, pedir que os usuários filtrem e selecionem um número considerável de opções pode aumentar de forma significativa o tempo necessário para a conclusão da tarefa. O suporte ao typeahead nos Cartões Adaptáveis pode simplificar a seleção de entradas ao restringir ou filtrar o conjunto de opções de entrada à medida que o usuário digita a entrada.

Para habilitar o typeahead dentro do Input.Choiceset, defina o style como filtered e certifique-se de definir isMultiSelect como false.

Amostra de Cartão Adaptável com suporte ao typeahead

O código a seguir mostra um exemplo de Cartão Adaptável com suporte ao typeahead:

{
   "type": "Input.ChoiceSet",
   "label": "Select a user",
   "isMultiSelect": false,
   "choices":  [
      { "title": "User 1", "value": "User1" },
      { "title": "User 2", "value": "User2" }
    ],
   "style": "filtered"
}

Stageview para imagens em Cartões Adaptáveis

Em um Cartão adaptável, você pode usar a msteams propriedade para adicionar a capacidade de exibir imagens no Stageview seletivamente. Quando passam o mouse sobre as imagens, os usuários podem ver um ícone de expansão para o qual o atributo allowExpand está definido como true. O código a seguir é um exemplo da msteams propriedade:

{
    "type": "AdaptiveCard",
     "body": [
          {
            "type": "Image",
            "url": "https://picsum.photos/200/200?image=110",
            "msTeams": {
              "allowExpand": true
            }
          }
     ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.2"
}

Quando os usuários passam o mouse sobre a imagem, um ícone de expansão aparece no canto superior direito, conforme mostrado na imagem a seguir:

A captura de tela mostra um Cartão Adaptável com uma imagem expansível.

A imagem aparece no Stageview quando o usuário seleciona o ícone de expansão, conforme mostrado na imagem a seguir:

Screesnhots mostra a imagem expandida para o Stageview.

No Stageview, os usuários podem aumentar e diminuir o zoom da imagem. Você pode selecionar as imagens do seu Cartão Adaptável que precisam ter essa capacidade.

Observação

  • A capacidade de ampliar e reduzir se aplica somente aos elementos de imagem com o tipo de imagem de um Cartão Adaptável.
  • Para aplicativos móveis do Teams, a funcionalidade Stageview para imagens em Cartões Adaptáveis está disponível por padrão. Os usuários podem exibir imagens de Cartão Adaptável no Stageview simplesmente tocando na imagem, independentemente de o allowExpand atributo estar presente ou não.

CodeBlock em Cartões Adaptáveis

O CodeBlock elemento permite que você compartilhe trechos de código como Cartões Adaptáveis ricamente formatados em chats, canais e reuniões do Teams. Os Cartões Adaptáveis com o CodeBlock elemento facilitam a leitura do trecho de código, pois o recuo, a numeração e o realce de sintaxe correspondem à linguagem de programação. Além disso, você pode adicionar botões de ação para exibir o código em sua origem ou editar o código em ambientes de desenvolvimento integrados (IDEs), como Microsoft Visual Studio ou Microsoft Visual Studio Visual Studio Code.

A captura de tela a seguir mostra um Cartão Adaptável com um snippet de código:

A captura de tela mostra um Cartão Adaptável com um trecho de código.

O CodeBlock elemento suporta os seguintes idiomas:

Idioma Com suporte Idioma Com suporte
Bash ✔️ JSON ✔️
C ✔️ Perl ✔️
C++ ✔️ PHP ✔️
C# ✔️ PowerShell ✔️
CSS ✔️ Python ✔️
dos ✔️ SQL ✔️
Ir ✔️ TypeScript ✔️
GraphQL ✔️ Visual Basic ✔️
HTML ✔️ Verilog ✔️
Java ✔️ VHDL ✔️
JavaScript ✔️ XML ✔️

Observação

O CodeBlock elemento reconhece o texto sem formatação como uma linguagem se você definir o valor de enumeração como PlainText na language propriedade do esquema.

O código a seguir é um exemplo de um Cartão Adaptável exibindo um trecho de código:

{
    "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.5",
    "body": [
        {
            "type": "TextBlock",
            "text": "editor.js",
            "style": "heading"
        },
        {
            "type": "TextBlock",
            "text": "Lines 61 - 76"
        },
        {
            "type": "CodeBlock",
            "codeSnippet": "/**\n* @author John Smith <john.smith@example.com>\n*/\npackage l2f.gameserver.model;\n\npublic abstract strictfp class L2Char extends L2Object {\n  public static final Short ERROR = 0x0001;\n\n  public void moveTo(int x, int y, int z) {\n    _ai = null;\n    log(\"Shouldn't be called\");\n    if (1 > 5) { // what!?\n      return;\n    }\n  }\n}",
            "language": "java",
            "startLineNumber": 61
        }
    ],
    "actions": [
        {
            "type": "Action.OpenUrl",
            "title": "View in Azure Repos",
            "url": "https://azure.microsoft.com/en-us/products/devops/repos/"
        },
        {
            "type": "Action.OpenUrl",
            "title": "Edit in vscode.dev",
            "url": "https://vscode.dev/"
        }
    ]
}

O CodeBlock elemento suporta as seguintes propriedades:

Propriedade Tipo Obrigatório Descrição
codeSnippet Cadeia de caracteres Sim O trecho de código a ser exibido em um Cartão Adaptável.
language Enum Sim O idioma do trecho de código a ser exibido em um Cartão Adaptável.
startLineNumber Número Não O número de linha na origem onde o trecho de código começa. Se deixado em branco, o padrão é 1.

Dica

  • Caracteres especiais têm funções específicas na codeSnippet propriedade. Por exemplo, o caractere \n de nova linha dispara uma quebra de linha.
  • Para exibir o caractere \n de nova linha como parte do trecho de código em um Cartão Adaptável, certifique-se de escapar dele como \\n na codeSnippet propriedade. Caso contrário, o Teams renderizará o código após o \n na próxima linha do card.

Limitações

  • Um Cartão Adaptável com o CodeBlock elemento tem suporte apenas em clientes da Web e da área de trabalho do Teams.
  • O trecho de código em um Cartão Adaptável é somente leitura e não editável.
  • Um Cartão Adaptável visualiza apenas as primeiras 10 linhas do trecho de código. Se houver mais de 10 linhas de código, o usuário deverá selecionar Expandir para ver o restante do snippet de código.

Menu de estouro de Cartões Adaptáveis

O Cartão Adaptável no Teams dá suporte ao menu de estouro. Você pode preencher um menu de estouro para todas as ações secundárias em um Cartão Adaptável. Um menu de estouro em um Cartão Adaptável pode ser adicionado ao seguinte:

  • Ações: em ações, os botões principais aparecem no Cartão Adaptável e os botões secundários estão dentro do menu estouro.

  • ActionSet: ActionSet é uma combinação de várias ações em um Cartão Adaptável. Cada conjunto de ações pode ter um menu de estouro.

Observação

Um Cartão Adaptável dá suporte a até seis ações principais a serem exibidas no card. Qualquer ação primária adicional é exibida no menu estouro.

A representação gráfica mostra a experiência do menu de estouro em um Cartão Adaptável.

Habilitar menu de estouro

Para habilitar o menu de estouro, configure a mode propriedade com o valor como primary ou secondary no esquema do Cartão Adaptável. A tabela a seguir descreve a mode propriedade:

Propriedade Tipo Obrigatório Descrição
mode Enumeração (Primária, Secundária) Não Se a ação é primária ou secundária ou não. As ações secundárias são recolhidas em um menu de estouro.

O exemplo a seguir mostra a modeactions propriedade no tipo e no ActionSet elemento:

Ações

No exemplo a seguir, existem duas ações primárias e uma ação secundária. A ação secundária cria um menu de estouro.

{
   "type": "AdaptiveCard",
   "actions": [
        {
            "type": "Action.Submit",
            "title": "Set due date"
        },
        {
            "type": "Action.OpenUrl",
            "title": "View",
            "url": "https://adaptivecards.microsoft.com/?topic=welcome"
        },
        {
            "type": "Action.Submit",
            "title": "Delete",
            "mode": "secondary"
        }
    ]
}

Observação

O menu de estouro se comporta de maneira diferente em um bot sent card e em um card de extensão de mensagem para o nível actions raiz em um Adaptive Card. O menu flutuante em um bot sent card aparece como um menu de contexto pop-up e, no card de extensão de mensagem, ele aparece no canto superior direito sob o ícone Mais opções (...). O comportamento não é aplicável ao ActionSet em um Cartão Adaptável.

A imagem a seguir é um exemplo do menu de estouro em um bot enviado card e uma extensão de mensagem card:

A captura de tela mostra um exemplo do comportamento do menu de estouro em um bot sent card e um messaging extension card.

Conjunto de ações

No exemplo a seguir, todas as ações são marcadas como secundárias, portanto, um único menu de estouro aparece no card.

{
    "type": "ActionSet",
     "actions": [

          {
           
            "type": "Action.Submit",
            "title": "view",
            "mode": "Secondary" 
       {
       },
            "type": "Action.submit",
            "title": "Delete",
            "mode": "secondary"

       },
       {
             "type": "Action.submit",
            "title": "Delete",
            "mode": "secondary"
       }
     ]
}

O exemplo a seguir mostra a experiência do menu de estouro em clientes móveis e da área de trabalho do Teams:

Quando um usuário seleciona o menu de estouro em uma área de trabalho, os botões definidos como secundários aparecem no Cartão Adaptável.

A captura de tela mostra um exemplo de botões em um Cartão Adaptável no cliente de área de trabalho do Teams.

A captura de tela mostra um exemplo de um Cartão Adaptável com a lista de ações em um menu de estouro no cliente de desktop do Teams.

A captura de tela mostra um exemplo de um Cartão Adaptável com os botões definidos como secundários como opções em um menu estouro no cliente de desktop do Teams.

Bordas e cantos arredondados em Cartões Adaptáveis

Os Cartões Adaptáveis dão suporte a uma ampla variedade de elementos, mas ter muitos elementos bagunça o card e dificulta a legibilidade. Você pode adicionar bordas a vários elementos em um Cartão Adaptável para delineá-los, facilitando a distinção entre eles pelos usuários.

Sem fronteiras

A captura de tela mostra um Cartão Adaptável sem bordas ao redor de seus elementos.

Com bordas

A captura de tela mostra um Cartão Adaptável com bordas ao redor de seus elementos.

Você pode usar Cartões Adaptáveis em vários hosts. Muitos desses hosts seguem sistemas e estruturas de design contemporâneos. Os Cartões Adaptáveis dão suporte a cantos arredondados para vários elementos para manter a consistência com esses hosts e acompanhar as últimas tendências de design. Os cantos arredondados tornam o design do card mais moderno e visualmente atraente, criando um fluxo visual mais suave.

Sem cantos arredondados

A captura de tela mostra um Cartão Adaptável sem cantos arredondados para seus elementos.

Com cantos arredondados

A captura de tela mostra um Cartão Adaptável com cantos arredondados em seus elementos.

Você pode adicionar bordas e cantos arredondados apenas aos seguintes elementos:

Elemento Bordas Cantos arredondados
Container ✔️ ✔️
ColumnSet ✔️ ✔️
Column ✔️ ✔️
Table ✔️ ✔️
Image ✔️

Implementar bordas e cantos arredondados em Cartões Adaptáveis

Para adicionar uma borda a um Containerelemento , ColumnSetou Column , defina a showBorder propriedade para true o elemento na carga útil do card. Para adicionar uma borda a um Table elemento, defina a showGridLines propriedade como true. A cor da borda corresponde ao estilo do elemento, conforme definido no HostConfig.json.

Propriedade Tipo Obrigatório Descrição
showBorder Booliano Não Adiciona uma borda ao Container, ColumnSet, ou Column elementos.
showGridLines Booliano Não Adiciona uma borda ao Table elemento. Valor padrão: true

Para adicionar cantos arredondados a um Containerelemento , ColumnSet, Column, ou Table , defina a roundedCorners propriedade para true o elemento na carga útil do card. Para adicionar cantos arredondados ao Image elemento, defina a style propriedade como RoundedCorners dentro do elemento.

Propriedade Tipo Obrigatório Descrição
roundedCorners Booliano Não Adiciona cantos arredondados ao Container, ColumnSet, Column, ou elementos Table .
style Cadeia de caracteres Não Adiciona cantos arredondados ao Image elemento quando você define o valor como roundedCorners.

O conteúdo JSON a seguir mostra um Cartão Adaptável com bordas e cantos arredondados ao redor de seus elementos:

{
    "type": "AdaptiveCard",
    "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.5",
    "body": [
        {
            "type": "TextBlock",
            "text": "Below is a **ColumnSet** with borders and rounded corners:",
            "wrap": true
        },
        {
            "type": "ColumnSet",
            "showBorder": true,
            "roundedCorners": true,
            "style": "emphasis",
            "columns": [
                {
                    "type": "Column",
                    "width": "stretch",
                    "showBorder": true,
                    "roundedCorners": true,
                    "style": "accent",
                    "items": [
                        {
                            "type": "TextBlock",
                            "text": "This is a **Column** with borders and rounded corners",
                            "wrap": true
                        }
                    ]
                },
                {
                    "type": "Column",
                    "width": "stretch",
                    "showBorder": true,
                    "roundedCorners": true,
                    "style": "good",
                    "items": [
                        {
                            "type": "TextBlock",
                            "text": "This is another **Column** with borders and rounded corners",
                            "wrap": true
                        }
                    ]
                }
            ]
        },
        {
            "type": "Container",
            "style": "attention",
            "showBorder": true,
            "roundedCorners": true,
            "items": [
                {
                    "type": "TextBlock",
                    "text": "This is a **Container** with borders and rounded corners",
                    "wrap": true
                }
            ]
        },
        {
            "type": "Table",
            "roundedCorners": true,
            "columns": [
                {
                    "width": 1
                },
                {
                    "width": 1
                }
            ],
            "rows": [
                {
                    "type": "TableRow",
                    "cells": [
                        {
                            "type": "TableCell",
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "text": "This **Table**...",
                                    "wrap": true
                                }
                            ]
                        },
                        {
                            "type": "TableCell",
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "text": "...has borders and rounded corners",
                                    "wrap": true
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "type": "TextBlock",
            "text": "The below **Image** has rounded corners:",
            "wrap": true
        },
        {
            "type": "Image",
            "url": "https://media.licdn.com/dms/image/C4E03AQF5uhIghtPzrA/profile-displayphoto-shrink_400_400/0/1517690039090?e=2147483647&v=beta&t=g1DFilNHZhah2fhaTS9ylBxGGGb2XyPA2C7LZptk4QE",
            "width": "100px",
            "style": "RoundedCorners"
        }
    ]
}

Contêineres roláveis em Cartões Adaptáveis

Um contêiner com muitos elementos pode levar a um card longo e ilegível. Use a maxHeight propriedade para definir a altura máxima do contêiner. Quando o contêiner tiver uma altura máxima e seu conteúdo exceder essa altura, uma barra de rolagem vertical será exibida.

Veja como a maxHeight propriedade é definida:

Propriedade Tipo Descrição
maxHeight Cadeia de caracteres Define a altura máxima do contêiner. Esta propriedade está disponível em Container, Column, TableCell, e em outros contêineres também.
Você deve definir o <number>px valor no formato.

O conteúdo de card a seguir mostra um contêiner com uma barra de rolagem:

{
    "type": "AdaptiveCard",
    "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.5",
    "body": [
        {
            "type": "TextBlock",
            "text": "This is a scrollable container",
            "wrap": true,
            "size": "ExtraLarge",
            "weight": "Bolder"
        },
        {
            "type": "Container",
            "style": "emphasis",
            "showBorder": true,
            "maxHeight": "100px",
            "items": [
                {
                    "type": "TextBlock",
                    "text": "Item 1",
                    "size": "ExtraLarge"
                },
                {
                    "type": "TextBlock",
                    "text": "Item 2",
                    "size": "ExtraLarge"
                },
                {
                    "type": "TextBlock",
                    "text": "Item 3",
                    "size": "ExtraLarge"
                }
            ]
        }
    ]
}

A captura de tela mostra um contêiner rolável em um Cartão Adaptável no cliente da área de trabalho do Teams.

Botão Composto em Cartões Adaptáveis

O botão composto é um tipo especial de botão com um ícone, título e descrição. Você pode adicionar um botão Composto usando o CompoundButton elemento. Esse elemento permite replicar a aparência dos prompts em um Cartão Adaptável.

Aqui estão as propriedades do CompoundButton elemento:

Propriedade Obrigatório Tipo Descrição
type ✔️ Cadeia de caracteres Deve ser CompoundButton.
title ✔️ Cadeia de caracteres Título do botão. Não há suporte para Markdown.
id Cadeia de caracteres Identificador exclusivo para o elemento ou ação.
requires Objeto Uma lista de recursos que o elemento requer que o aplicativo host dê suporte. Se o aplicativo host não der suporte a pelo menos um dos recursos listados, o elemento não será renderizado ou seu fallback será renderizado, se fornecido.
isVisible Booliano Controla a visibilidade do elemento.
separator Booliano Controla se uma linha separadora deve ser exibida acima do elemento para separá-lo visualmente do elemento anterior. Nenhum separador é exibido para o primeiro elemento em um contêiner, mesmo se essa propriedade estiver definida como true.
height Cadeia de caracteres Altura do elemento. Quando definido como stretch, o elemento usa o espaço vertical restante em seu contêiner.
Valores permitidos: auto, stretch
horizontalAlignment Cadeia de caracteres Controla como o elemento deve ser alinhado horizontalmente.
Valores permitidos: Left, Center, Right
Spacing Cadeia de caracteres Controla a quantidade de espaço entre este elemento e o anterior. Nenhum espaço é adicionado para o primeiro elemento em um contêiner.
Valores permitidos: None, Small, Default, MediumLarge, ,ExtraLarge
targetWidth Cadeia de caracteres Controla a largura do card para a qual o elemento deve ser exibido. Se targetWidth não for especificado, o elemento será renderizado em todas as larguras de card. O uso targetWidth possibilita a criação de cartões responsivos que adaptam seu layout ao espaço horizontal disponível. Para obter mais informações, consulte Layout responsivo do Cartão Adaptável.
Valores permitidos: VeryNarrow, Narrow, Standard, Wide
icon Cadeia de caracteres Ícone mostrado no botão.
badge Cadeia de caracteres Selo mostrado no botão. Não há suporte para Markdown.
description Cadeia de caracteres Texto de descrição do botão. Não há suporte para Markdown.
selectAction Ação que é invocada quando o botão é selecionado. Todas as ações são permitidas, exceto Action.ShowCard.

Aqui estão as propriedades do icon elemento:

Propriedade Obrigatório Tipo Descrição
name ✔️ Cadeia de caracteres Nome do ícone, de acordo com o diretório de ícones do Fluent. É o mesmo que o nome do novo elemento de ícone.
size Cadeia de caracteres Tamanho do ícone. Valores permitidos: xxSmall, xSmall, Small, StandardMedium, Large, , xLarge,xxLarge
style Cadeia de caracteres Estilo do ícone. Valores permitidos: Regular, Filled
color Cadeia de caracteres Cor do ícone. Valores permitidos: Default, Dark, Light, AccentGood, Warning,Attention

Aqui está um exemplo de Cartão Adaptável que usa o CompoundButton elemento:

{ 
    "type": "AdaptiveCard", 
    "$schema": "https://adaptivecards.io/schemas/adaptive-card.json", 
    "version": "1.5", 
    "body": [ 
        { 
            "type": "CompoundButton", 
            "title": "Photos", 
            "icon": { 
                "name": "Camera" 
            }, 
            "description": "Add photos", 
            "height": "stretch"
        } 
    ] 
}

Captura de tela da exibição para desktop e dispositivo móvel de botões compostos em um Cartão Adaptável.

Ícones no Cartão Adaptável

Os Cartões Adaptáveis dão suporte à adição de ícones da biblioteca de ícones do Fluent usando o Icon elemento. Você também pode usar ícones do Fluent em botões de ação definindo a propriedade da iconUrl ação como um valor no formato de icon:<icon name>[,regular|filled].

Aqui estão as propriedades do Icon elemento:

Propriedade Descrição
type Deve ser Icon.
name Nome do ícone a ser exibido. Por exemplo, calendar.
size Tamanho do ícone.
Valores permitidos: xxSmall, xSmall, SmallMedium, Large, xLarge, , e xxLarge
Valor padrão:Standard
color Cor do ícone.
Valores permitidos: Dark, Light, AccentGoodWarninge Attention
Valor padrão:Default
style Estilo do ícone.
Valores permitidos: Filled, Regular
selectAction Ação invocada quando o ícone é tocado ou selecionado. Todos os tipos de ação são suportados, exceto Action.ShowCard.
Valores permitidos: Action.Execute, Action.OpenUrl, Action.Popover, Action.ResetInputsAction.Submit, ,Action.ToggleVisibility

Aqui está um exemplo de Cartão Adaptável que usa o Icon elemento e a iconUrl propriedade em um botão de ação:

{
  "type": "AdaptiveCard",
  "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.5",
  "body": [
    {
      "type": "TextBlock",
      "text": "Here's an Icon element"
    },
    {
  "type": "Icon",
        "name": "Calendar",
        "size": "Medium",
        "style": "Filled",
        "color": "Accent"
    },
    {
      "type": "TextBlock",
      "text": "Here's an Icon element in a button"
    }
 ],
 "actions": [
        {
            "type": "Action.OpenUrl",
            "title": "Filled icon",
            "url": "https://www.microsoft.com",
            "iconUrl": "icon:AccessTime,filled"
        }
    ]
}

A captura de tela mostra um Cartão Adaptável com um ícone do Fluent.

Classificações em Cartões Adaptáveis

Você pode adicionar uma entrada de classificação por estrelas ao seu Cartão Adaptável usando o Input.Rating elemento. Você também pode incluir uma classificação por estrelas somente leitura usando o Rating elemento.

A captura de tela mostra um Cartão Adaptável com a classificação de entrada e as classificações por estrelas somente leitura.

O conteúdo a seguir mostra um Cartão Adaptável com classificações por estrelas habilitadas para entrada e somente leitura:

{
    "type": "AdaptiveCard",
    "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.5",
    "body": [
        {
            "type": "TextBlock",
            "size": "Large",
            "text": "Rating input"
        },
        {
            "type": "Input.Rating",
            "id": "rating1",
            "label": "Pick a rating",
            "size": "medium",
            "color": "marigold",
            "isRequired": true,
            "errorMessage": "Please pick a rating"
        },
        {
            "type": "TextBlock",
            "size": "large",
            "text": "Read-only rating",
            "separator": true,
            "spacing": "ExtraLarge"
        },
        {
            "type": "Rating",
            "max": 20,
            "value": 3.2,
            "color": "marigold"
        }
    ]
}

Input.Rating

Aqui estão as propriedades do Input.Rating elemento:

Propriedade Obrigatório Tipo Descrição
type ✔️ Cadeia de caracteres Deve ser Input.Rating.
allowHalfSteps Booliano Controla se o usuário pode selecionar meias estrelas. Valor padrão: false
color Cadeia de caracteres A cor das estrelas.
Valores permitidos: Neutral, Marigold
Valor padrão: Neutral
errorMessage Cadeia de caracteres A mensagem de erro a ser exibida quando a entrada falhar na validação.
fallback Um de objeto ou cadeia de caracteres Um elemento alternativo a ser renderizado se o tipo desse elemento não tiver suporte ou se o aplicativo host não der suporte a requires todos os recursos especificados na propriedade.
Valores permitidos: Container, ActionSet, ColumnSet, MediaRichTextBlockTableTextBlockFactSetImageSetImageInput.TextInput.DateInput.TimeInput.NumberInput.ToggleInput.ChoiceSetInput.RatingRatingCompoundButtonIconChart.DonutChart.PieChart.VerticalBar.GroupedChart.VerticalBarChart.HorizontalBarChart.HorizontalBar.StackedChart.LineChart.GaugeCodeBlockdrop
grid.area Cadeia de caracteres A área de um Layout.AreaGrid layout na qual um elemento deve ser exibido.
height Cadeia de caracteres Controla a altura do elemento. Quando definido como stretch, o elemento usa o espaço vertical restante em seu contêiner.
Valores permitidos: auto, stretch
Valor padrão: auto
id ✔️ Cadeia de caracteres Um identificador exclusivo para o elemento ou ação.
isRequired Booliano Determina se a entrada é necessária.
Valor padrão: false
isVisible Booliano Determina a visibilidade do elemento.
Valor padrão: true
label Cadeia de caracteres O rótulo da entrada.
lang Cadeia de caracteres A localidade associada ao elemento.
max Número O número de estrelas a serem exibidas. O número padrão e máximo de estrelas com suporte é cinco.
requires Objeto Uma lista de recursos que o elemento requer que o aplicativo host dê suporte. Se o aplicativo host não der suporte a pelo menos um dos recursos listados, o elemento não será renderizado ou seu fallback será renderizado, se fornecido.
Valores permitidos: HostCapabilities
separator Booliano Determina se uma linha separadora deve ser exibida acima do elemento para separá-lo visualmente do elemento anterior. Nenhum separador é exibido para o primeiro elemento em um contêiner, mesmo se essa propriedade estiver definida como true.
Valor padrão: false
size Cadeia de caracteres O tamanho das estrelas.
Valores permitidos: Medium, Large
Valor padrão: Large
spacing Cadeia de caracteres Controla a quantidade de espaço entre este elemento e o anterior. Nenhum espaço é adicionado para o primeiro elemento em um contêiner.
Valores permitidos: None, Small, Default, MediumLarge, ExtraLarge,Padding
Valor padrão: Default
targetWidth Cadeia de caracteres Controla a largura do card para a qual o elemento deve ser exibido. Se targetWidth não for especificado, o elemento será renderizado em todas as larguras de card. O uso targetWidth possibilita a criação de cartões responsivos que adaptam seu layout ao espaço horizontal disponível. Para obter mais informações, consulte Layout responsivo do Cartão Adaptável.
Valores permitidos: VeryNarrow, Narrow, Standard, WideatMost:NarrowatLeast:VeryNarrowatLeast:NarrowatLeast:StandardatMost:VeryNarrow, atMost:Standard, , atLeast:WideatMost:Wide
value Número O valor padrão da entrada. Esse valor não poderá exceder max, se max for especificado.
valueChangedAction Ação Uma Action.ResetInputs ação que será executada quando o valor da entrada for alterado.
Valor permitido: Action.ResetInputs

Classificação

Aqui estão as propriedades do Rating elemento:

Propriedade Obrigatório Tipo Descrição
type ✔️ Cadeia de caracteres Deve ser Rating.
color Cadeia de caracteres A cor das estrelas.
Valores permitidos: Neutral, Marigold
Valor padrão: Neutral
count Número O número de "votos" associados à classificação.
fallback Um de objeto ou cadeia de caracteres Um elemento alternativo a ser renderizado se esse tipo de elemento não tiver suporte ou se o aplicativo host não der suporte a requires todos os recursos especificados na propriedade.
Valores permitidos: Container, ActionSet, ColumnSet, MediaRichTextBlockTableTextBlockFactSetImageSetImageInput.TextInput.DateInput.TimeInput.NumberInput.ToggleInput.ChoiceSetInput.RatingRatingCompoundButtonIconChart.DonutChart.PieChart.VerticalBar.GroupedChart.VerticalBarChart.HorizontalBarChart.HorizontalBar.StackedChart.LineChart.GaugeCodeBlockdrop
grid.area Cadeia de caracteres A área de um Layout.AreaGrid layout na qual um elemento deve ser exibido.
height Cadeia de caracteres A altura do elemento. Quando definido como stretch, o elemento usa o espaço vertical restante em seu contêiner.
Valores permitidos: Auto, Stretch
horizontalAlignment Cadeia de caracteres Controla como o elemento deve ser alinhado horizontalmente.
Valores permitidos: Left, Center, Right
id Cadeia de caracteres Um identificador exclusivo para o elemento ou ação.
isVisible Booliano Controla a visibilidade do elemento.
Valor padrão: true
lang Cadeia de caracteres A localidade associada ao elemento.
max Número O número de estrelas a serem exibidas. O número padrão e máximo de estrelas com suporte é cinco.
requires Objeto Uma lista de recursos que o elemento requer que o aplicativo host dê suporte. Se o aplicativo host não der suporte a pelo menos um dos recursos listados, o elemento não será renderizado ou seu fallback será renderizado, se fornecido.
Valor permitido: HostCapabilities
separator Booliano Controla se uma linha separadora deve ser exibida acima do elemento para separá-lo visualmente do elemento anterior. Nenhum separador é exibido para o primeiro elemento em um contêiner, mesmo se essa propriedade estiver definida como true.
Valor padrão: false
size Cadeia de caracteres O tamanho das estrelas.
Valores permitidos: Medium, Large
Valor padrão: Large
spacing Cadeia de caracteres Controla a quantidade de espaço entre este elemento e o anterior. Nenhum espaço é adicionado para o primeiro elemento em um contêiner.
Valores permitidos: None, Small, Default, MediumLarge, ExtraLarge,Padding
Valor padrão: Default
style Cadeia de caracteres O estilo das estrelas. No modo compacto, apenas uma estrela é exibida.
Valores permitidos: Default, Compact
Valor padrão: Default
targetWidth Cadeia de caracteres Controla a largura do card para a qual o elemento deve ser exibido. Se targetWidth não for especificado, o elemento será renderizado em todas as larguras de card. O uso targetWidth possibilita a criação de cartões responsivos que adaptam seu layout ao espaço horizontal disponível. Para obter mais informações, consulte Layout responsivo do Cartão Adaptável.
Valores permitidos: VeryNarrow, Narrow, Standard, WideatMost:NarrowatLeast:VeryNarrowatLeast:NarrowatLeast:StandardatMost:VeryNarrow, atMost:Standard, , atLeast:WideatMost:Wide
value Número O valor da classificação. Esse valor deverá estar entre zero e max, se max for especificado.

Formatar cartões em HTML

Os seguintes tipos de cartão oferecem suporte à formatação HTML no Teams:

  • Cartões conector para Grupos do Microsoft 365: há suporte para Markdown limitado e formatação HTML no connector card para Grupos do Microsoft 365.
  • Cartões com imagem em destaque e em miniatura: os cartões simples, como cartões com imagem em destaque e em miniatura, oferecem suporte aos rótulos HTML.

A formatação é diferente entre a área de trabalho e as versões móveis do Teams para cartões conector para Grupos do Microsoft 365 e cartões simples. Nesta seção, você pode analisar um exemplo do formato HTML para cartões de conector e cartões simples.

Os cartões de conector oferecem um suporte limitado à formatação Markdown e HTML.

Estilo Exemplo HTML
Negrito text <strong>text</strong>
Itálico text <em>text</em>
Cabeçalho (níveis 1 a 3) Texto <h3>Text</h3>
Tachado text <strike>text</strike>
Lista não ordenada
  • texto
  • texto
<ul><li>text</li><li>text</li></ul>
Lista ordenada
  1. texto
  2. texto
<ol><li>text</li><li>text</li></ol>
Texto pré-formatado text <pre>text</pre>
Blockquote
texto
<blockquote>text</blockquote>
Hiperlink Bing <a href="https://www.bing.com/">Bing</a>
Link da imagem Pato em uma rocha <img src="https://aka.ms/Fo983c" alt="Duck on a rock"></img>

Nos cartões de conector, as quebras de linha são renderizadas em HTML usando o rótulo <p>.

Diferenças entre as versões desktop e móvel para cartões de conector

Na versão desktop, a formatação HTML para cartões de conector aparece conforme mostrado na imagem a seguir:

A captura de tela mostra a formatação HTML para cartões de conector no cliente de desktop.

No iOS, a formatação HTML aparece conforme mostrado na imagem a seguir:

A captura de tela mostra a formatação HTML para cartões de conector no cliente iOS.

Os cartões de conector que usam HTML para iOS incluem os seguintes problemas:

  • As imagens embutidas não são renderizadas no iOS usando Markdown ou HTML nos cartões conectores.
  • O texto pré-formatado é renderizado, mas não tem um plano de fundo cinza.

No Android, a formatação HTML aparece conforme mostrado na imagem a seguir:

A captura de tela mostra a formatação HTML para cartões de conector no cliente Android.

Amostra de formatação HTML para cartões de conector

O código a seguir mostra um exemplo de formatação HTML para cartões de conector:

{
  "contentType": "application/vnd.microsoft.teams.card.o365connector",
  "content": {
    "@type": "MessageCard",
    "@context": "https://schema.org/extensions",
    "summary": "Summary",
    "title": "Connector Card HTML formatting",
    "sections": [
        {
            "text": "This is some <strong>bold</strong> text"
        },
        {
            "text": "This is some <em>italic</em> text"
        },
        {
            "text": "This is some <strike>strikethrough</strike> text"
        },
        {
            "text": "<h1>Header 1</h1>\r<h2>Header 2</h2>\r <h3>Header 3</h3>"
        },
        {
            "text": "bullet list <ul><li>text</li><li>text</li></ul>"
        },
        {
            "text": "ordered list <ol><li>text</li><li>text</li></ol>"
        },
        {
            "text": "hyperlink <a href=\"https://www.bing.com/\">Bing</a>"
        },
        {
            "text": "embedded image <img src=\"https://aka.ms/Fo983c\" alt=\"Duck on a rock\"></img>"
        },
        {
            "text": "preformatted text <pre>text</pre>"
        },
        {
            "text": "Paragraphs <p>Line a</p><p>Line b</p>"
        },
        {
            "text": "<blockquote>Blockquote text</blockquote>"
        }
     ]
  }
}

Exemplos de código

S.No. Descrição .NET Node.js Manifesto
1 Este exemplo demonstra como usar vários estilos de formatação em Cartões Adaptáveis, como menções, ícones de persona e layout responsivo. View View Exibir

Confira também