Criar e enviar mensagens

Para criar e enviar mensagens acionáveis, use um Webhook de entrada ou um conector do Microsoft 365. No entanto, as mensagens acionáveis são acessíveis apenas aos usuários com uma licença de Exchange Online.

Criar mensagens acionáveis

As mensagens acionáveis incluem seis botões visíveis no cartão. Cada botão é definido na potentialAction propriedade da mensagem usando ActionCard ações, cada uma com um tipo de entrada, um campo de texto, um seletor de datas ou uma lista de várias opções. Cada ação ActionCard tem uma ação associada, por exemplo HttpPOST.

Os cartões de conector dão suporte às seguintes ações:

  • ActionCard: Apresenta um ou mais tipos de entrada e ações associadas.
  • HttpPOST: Envia uma solicitação POST a uma URL.
  • OpenUri: abre o URI em um navegador ou aplicativo separado. Opcionalmente, visa URIs diferentes com base em sistemas operacionais.

A ação ActionCard oferece suporte a três tipos de entrada:

  • TextInput: Um campo de texto de linha única ou de várias linhas com um limite de comprimento opcional.
  • DateInput: Um seletor de data com um seletor de tempo opcional.
  • MultichoiceInput: Uma lista enumerada de opções que oferece uma seleção única ou múltipla.

MultichoiceInput oferece suporte a uma propriedade style que controla se a lista já aparecerá totalmente expandida. O valor padrão de style depende do valor de isMultiSelect como segue:

isMultiSelect Padrão style
false ou não especificado compact
true expanded

Para exibir a lista de seleção múltipla no estilo compacto, especifique "isMultiSelect": true e "style": true.

Para obter mais informações sobre ações de cartão do conector, veja Ações.

Observação

  • Especificar compact para a propriedade style no Microsoft Teams é o mesmo que especificar normal para a propriedade style no Microsoft Outlook.
  • Para a ação HttpPOST, o token do portador é incluído com as solicitações. Esse token inclui a Microsoft Entra identidade do usuário do Microsoft 365 que tomou a ação.

Enviar uma mensagem por meio do Webhook ou do conector de entrada para Grupos do Microsoft 365

Para enviar uma mensagem por meio de seu Webhook ou conector de entrada para Grupos do Microsoft 365, poste uma carga JSON na URL do webhook. Essa carga deve estar na forma de um conector cartão para Grupos do Microsoft 365.

Também é possível usar esse JSON para criar cartões contendo entradas avançadas, como entrada de texto, seleção múltipla ou escolha de data e hora. O código que gera o cartão e as postagens na URL do Webhook pode ser executado em qualquer serviço hospedado. Esses cartões são definidos como parte de mensagens acionáveis e também têm suporte em cartões usados em bots do Teams e extensões de mensagens.

Exemplo de mensagem do conector

Um exemplo de mensagem de conector é o seguinte:

{
    "@type": "MessageCard",
    "@context": "http://schema.org/extensions",
    "themeColor": "0076D7",
    "summary": "Larry Bryant created a new task",
    "sections": [{
        "activityTitle": "Larry Bryant created a new task",
        "activitySubtitle": "On Project Tango",
        "activityImage": "https://adaptivecards.io/content/cats/3.png",
        "facts": [{
            "name": "Assigned to",
            "value": "Unassigned"
        }, {
            "name": "Due date",
            "value": "Mon May 01 2017 17:07:18 GMT-0700 (Pacific Daylight Time)"
        }, {
            "name": "Status",
            "value": "Not started"
        }],
        "markdown": true
    }],
    "potentialAction": [{
        "@type": "ActionCard",
        "name": "Add a comment",
        "inputs": [{
            "@type": "TextInput",
            "id": "comment",
            "isMultiline": false,
            "title": "Add a comment here for this task"
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Add comment",
            "target": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "ActionCard",
        "name": "Set due date",
        "inputs": [{
            "@type": "DateInput",
            "id": "dueDate",
            "title": "Enter a due date for this task"
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Save",
            "target": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "OpenUri",
        "name": "Learn More",
        "targets": [{
            "os": "default",
            "uri": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "ActionCard",
        "name": "Change status",
        "inputs": [{
            "@type": "MultichoiceInput",
            "id": "list",
            "title": "Select a status",
            "isMultiSelect": "false",
            "choices": [{
                "display": "In Progress",
                "value": "1"
            }, {
                "display": "Active",
                "value": "2"
            }, {
                "display": "Closed",
                "value": "3"
            }]
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Save",
            "target": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }]
}

A imagem a seguir é um exemplo da mensagem do conector cartão em um canal:

A captura de tela mostra um exemplo de um conector cartão em um canal.

Enviar mensagens usando cURL e PowerShell

Para postar uma mensagem no webhook com cURL, siga estas etapas:

  1. Instale o cURL do site do cURL.

  2. Na linha de comando, insira o seguinte comando cURL:

    // on macOS or Linux
    curl -H 'Content-Type: application/json' -d '{"text": "Hello World"}' <YOUR WEBHOOK URL>
    
    // on Windows
    curl.exe -H "Content-Type:application/json" -d "{'text':'Hello World'}" <YOUR WEBHOOK URL>
    

    Observação

    Se o POST tiver êxito, você verá uma saída 1 simples por curl.

  3. Verifique o cliente do Teams para o novo cartão postado.

Envie Cartões Adaptáveis usando um Webhook de Entrada

Observação

Para enviar cartões adaptáveis com texto ou uma imagem codificada do Base64 por meio de um Webhook de entrada, siga estas etapas:

  1. Configure um webhook personalizado no Teams.
  2. Crie um arquivo JSON de Cartão Adaptável usando o seguinte código:
    {
       "type":"message",
       "attachments":[
          {
             "contentType":"application/vnd.microsoft.card.adaptive",
             "contentUrl":null,
             "content":{
                "$schema":"http://adaptivecards.io/schemas/adaptive-card.json",
                "type":"AdaptiveCard",
                "version":"1.2",
                "body":[
                    {
                    "type": "TextBlock",
                    "text": "For Samples and Templates, see [https://adaptivecards.io/samples](https://adaptivecards.io/samples)"
                    }
                ]
             }
          }
       ]
    }

As propriedades do arquivo JSON do Cartão Adaptável são as seguintes:

  • O campo "type" deve ser "message".
  • A matriz "attachments" contém um conjunto de objetos de cartão.
  • O campo "contentType" deve ser definido para o tipo de Cartão adaptável.
  • O objeto "content" é o cartão formatado em JSON.
  1. Teste seu Cartão Adaptável com o Postman:

    1. Teste o Cartão Adaptável usando Postman para enviar uma solicitação POST para a URL, criada para configurar o Webhook de Entrada.
    2. Cole seu arquivo JSON no corpo da solicitação e visualize sua mensagem de cartão adaptável no Teams.

Dica

Use o Cartão Adaptável exemplos de código e formatos para testar o corpo do pedido da PUBLICAÇÃO.

Limitação de taxa para conectores

Os limites de taxa de aplicativos controlam o tráfego que um conector ou um Webhook de Entrada tem permissão para gerar em um canal. O Teams rastreia solicitações usando uma janela de taxa fixa e um contador incremental medido em segundos. Se mais de quatro solicitações forem feitas em um segundo, a conexão do cliente será limitada até que a janela seja atualizada durante a taxa fixa.

Limites de transações por segundo

A tabela a seguir fornece os detalhes da transação baseada em tempo:

Tempo em segundos Máximo de solicitações permitidas
1 4
30 60
3600 100
7200 150
86400 1800

Observação

Uma lógica de repetição com retirada exponencial como abaixo reduziria a limitação da taxa nos casos em que as solicitações excederem os limites em um segundo. Referir Respostas HTTP 429 para evitar atingir os limites da taxa.

// Please note that response body needs to be extracted and read 
// as Connectors do not throw 429s
try
{
    // Perform Connector POST operation     
    var httpResponseMessage = await _client.PostAsync(IncomingWebhookUrl, new StringContent(content));
    // Read response content
    var responseContent = await httpResponseMessage.Content.ReadAsStringAsync();
    if (responseContent.Contains("Microsoft Teams endpoint returned HTTP error 429")) 
    {
        // initiate retry logic
    }
}

Esses limites existem para reduzir o spam em um canal por um conector e garantem uma experiência ideal para os usuários finais.

Confira também