Criar e enviar mensagens
Importante
Os conectores existentes do Microsoft 365 (anteriormente denominado Office 365) em todas as plataformas na cloud estão prestes a ser preteridos e a criação de novos conectores do Microsoft 365 será bloqueada em breve. Para obter mais informações sobre a agenda e como a aplicação Fluxos de Trabalho fornece uma experiência mais flexível e segura, veja Descontinuação dos conectores do Microsoft 365 no Microsoft Teams.
Para criar e enviar mensagens acionáveis, utilize um Webhook recebido ou um conector do Microsoft 365. No entanto, as mensagens acionáveis são acessíveis apenas aos utilizadores com uma licença do 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 através ActionCard
de ações, cada um com um tipo de entrada, um campo de texto, um seletor de datas ou uma lista de escolha múltipla. 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 num browser ou aplicação separado. Opcionalmente, destina-se a DIFERENTES URIs com base em sistemas operativos.
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 |
predefiniçã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 propriedadestyle
no Microsoft Teams é o mesmo que especificarnormal
para a propriedadestyle
no Microsoft Outlook. - Para a ação HttpPOST, o token do portador é incluído com as solicitações. Este token inclui a identidade do Microsoft Entra do utilizador do Microsoft 365 que tomou a ação.
Enviar uma mensagem através do Webhook ou conector recebido para Grupos do Microsoft 365
Para enviar uma mensagem através do webhook ou conector recebido dos Grupos do Microsoft 365, publique um payload JSON no URL do webhook. Este payload tem de estar sob a forma de um cartão de conector para os 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. Estes cartões são definidos como parte de mensagens acionáveis e também são suportados em cartões utilizados 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 seguinte é um exemplo do cartão de mensagem do conector num canal:
Enviar mensagens usando cURL e PowerShell
Para postar uma mensagem no webhook com cURL, siga estas etapas:
Instale o cURL do site do cURL.
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
.Verifique o cliente do Teams para o novo cartão postado.
Envie Cartões Adaptáveis usando um Webhook de Entrada
Observação
- Todos os elementos de esquema dos Cartões Adaptáveis nativos, exceto
Action.Submit
, são totalmente suportados. - As ações suportadas são Action.OpenURL, Action.ShowCard, e Action.ToggleVisibility.
Para enviar Cartões Ajustáveis com texto ou uma imagem codificada com Base64 através de um Webhook recebido, siga estes passos:
- Configure um webhook personalizado no Teams.
- 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.
Teste seu Cartão Adaptável com o Postman:
- Teste o Cartão Adaptável usando Postman para enviar uma solicitação POST para a URL, criada para configurar o Webhook de Entrada.
- 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 monitoriza os pedidos com uma janela de taxa fixa e um contador incremental medidos 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.