Webhooks

Como Configurar Webhooks com Power Automate para Filtrar e Enviar Notificações Fluidas para o Microsoft Teams

Este guia explica como criar um fluxo no Power Automate que recebe eventos de webhook do Fluid, filtra-os com base no status da tarefa e envia uma notificação formatada para um canal do Microsoft Teams.

Nota: O Power Automate usa autenticação SAS. Portanto, para integração via webhook, escolha "Shared Secret Signature Validation" e insira um valor para o segredo. O Power Automate irá então substituir e usar sua própria autenticação SAS internamente.

Visão Geral

Esta configuração permite que você:

  • Receba eventos de webhook do Fluid

  • Analise o payload JSON recebido

  • Aplique lógica condicional (ex.: enviar atualizações somente quando o status = "Concluído")

  • Envie uma notificação rica com Adaptive Card para o Microsoft Teams

Pré-requisitos

Etapa 1: Criar o Fluxo

  1. Acesse https://make.powerautomate.com

  2. Clique em Criar

  3. Selecione Fluxo de nuvem instantâneo

  4. Insira um nome (ex.: Teams Webhook Filter)

  5. Escolha o gatilho:

  6. Quando uma solicitação de webhook do Teams for recebida

  1. Clique em Criar

  2. Certifique-se de que o gatilho esteja definido como Qualquer pessoa pode acionar

Etapa 2: Analisar o JSON Recebido

  1. Clique em + Nova etapa

  2. Pesquise e selecione Analisar JSON

  3. Em Conteúdo, selecione Corpo em Inserir conteúdo dinâmico

  4. Clique em Usar payload de exemplo para gerar esquema

  5. Cole o payload JSON de exemplo fornecido

{
	"fields": {
		"assignee": null,
		"attachmentCount": 0,
		"boardCategory": 0,
		"boardId": 0,
		"boardGuid": "2c8f0918-4f6b-4f5e-9dee-f12e582bbdef",
		"boardTitle": "webhook",
		"businessValue": 0,
		"contentType": "Process",
		"createDate": "2026-03-30T17:30:48.0000000Z",
		"description": "This is a test payload generated by Fluid to verify the webhook endpoint is reachable and authentication is configured correctly.",
		"descriptionHtml": "This is a test payload generated by Fluid to verify the webhook endpoint is reachable and authentication is configured correctly.",
		"dueDate": "2026-04-06T17:30:48.0000000Z",
		"endDate": "2026-04-06T17:30:48.0000000Z",
		"impediment": 0,
		"isClosed": false,
		"modifiedDate": "2026-03-30T17:30:48.0000000Z",
		"points": 1,
		"parentGuid": "672aea66-22a5-40d6-b658-f2f6b20d12e6",
		"priority": "Medium",
		"principalGuid": "2c8f0918-4f6b-4f5e-9dee-f12e582bbdef",
		"ragStatus": "Green",
		"shortCode": "TEST-1",
		"startDate": "2026-03-30T17:30:48.0000000Z",
		"status": "Not Started",
		"statusCode": 1,
		"taskType": "Task",
		"title": "[Test] Webhook connectivity test",
		"titleRichText": "[Test] Webhook connectivity test",
		"titleHtml": "<p>[Test] Webhook connectivity test</p>"
	},
	"id": 99999,
	"methods": [
		{
			"type": "PermaLink",
			"httpMethod": "GET",
			"url": "https://localhost:62199/Action/EditFull/21ed8132-f904-48f2-a682-eaf615d6d273"
		},
		{
			"type": "Update",
			"httpMethod": "PUT",
			"url": "https://localhost:62199/rest/api/action/99999",
			"description": "Update Action",
			"payload": {
				"fields": {
					"description": "<Description>",
					"title": "<Title>"
				},
				"attachments": null,
				"customProperties": [],
				"checkList": null
			}
		},
		{
			"type": "Delete",
			"httpMethod": "DELETE",
			"url": "https://localhost:62199/rest/api/action/99999"
		}
	],
	"related": {},
	"guid": "21ed8132-f904-48f2-a682-eaf615d6d273",
	"url": "https://localhost:62199/rest/api/action/99999"
}
  1. Clique em Concluído

Etapa 3: Adicionar uma Condição (Lógica de Filtro)

  1. Clique em + Nova etapa

  2. Selecione Condição

  3. Configure:

  4. Valor à esquerda: fields → Inserir Conteúdo Dinâmico → Status do Corpo

  5. Operador: é igual a

  6. Valor à direita: ex. Concluído

💡 Você pode modificar esta condição para filtrar por qualquer campo (ex.: prioridade, quadro, tipo de tarefa) disponível no esquema.

Etapa 4: Enviar Notificação para o Microsoft Teams

Dentro do ramo Se sim:

  1. Clique em Adicionar uma ação

  2. Pesquise por Microsoft Teams

  3. Selecione Postar cartão em um chat ou canal

  4. Configure:

    • Equipe → Selecione sua Equipe

    • Canal → Selecione seu Canal

    • Adaptive Card → Cole o JSON do seu Adaptive Card

Exemplo

{
    "type": "AdaptiveCard",
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.4",
    "body": [
        {
            "type": "ColumnSet",
            "columns": [
                {
                    "type": "Column",
                    "width": "auto",
                    "items": [
                        {
                            "type": "TextBlock",
                            "text": "🔔",
                            "size": "Large"
                        }
                    ],
                    "verticalContentAlignment": "Center"
                },
                {
                    "type": "Column",
                    "width": "stretch",
                    "items": [
                        {
                            "type": "TextBlock",
                            "text": "New Task",
                            "weight": "Bolder",
                            "size": "Medium",
                            "wrap": true
                        },
                        {
                            "type": "TextBlock",
                            "text": "@{triggerBody()?['fields']?['title']}",
                            "wrap": true,
                            "size": "Default",
                            "weight": "Bolder",
                            "color": "Accent"
                        }
                    ],
                    "verticalContentAlignment": "Center"
                }
            ]
        },
        {
            "type": "ColumnSet",
            "separator": true,
            "spacing": "Medium",
            "columns": [
                {
                    "type": "Column",
                    "width": "stretch",
                    "items": [
                        {
                            "type": "FactSet",
                            "facts": [
                                {
                                    "title": "📋 Board",
                                    "value": "@{triggerBody()?['fields']?['boardTitle']}"
                                },
                                {
                                    "title": "🏷️ Type",
                                    "value": "@{triggerBody()?['fields']?['taskType']}"
                                },
                                {
                                    "title": "📌 Status",
                                    "value": "@{triggerBody()?['fields']?['status']}"
                                },
                                {
                                    "title": "🎯 Priority",
                                    "value": "@{triggerBody()?['fields']?['priority']}"
                                },
                                {
                                    "title": "🚦 RAG",
                                    "value": "@{triggerBody()?['fields']?['ragStatus']}"
                                },
                                {
                                    "title": "🆔 Code",
                                    "value": "@{triggerBody()?['fields']?['shortCode']}"
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "type": "TextBlock",
            "text": "📝 Description",
            "weight": "Bolder",
            "spacing": "Medium",
            "separator": true
        },
        {
            "type": "TextBlock",
            "text": "@{triggerBody()?['fields']?['description']}",
            "wrap": true,
            "spacing": "Small"
        }
    ],
    "actions": [
        {
            "type": "Action.OpenUrl",
            "title": "🔗 View in Fluid",
            "url": "@{triggerBody()?['methods']?[0]?['url'] }",
            "style": "positive"
        }
    ]
}

Este cartão pode incluir valores dinâmicos como:

  • Título da tarefa

    "@{triggerBody()?['fields']?['title']}"
  • Status

    "@{triggerBody()?['fields']?['status']}"
  • Prioridade

    "@{triggerBody()?['fields']?['priority']}"
  • Datas

    @{formatDateTime(triggerBody()?['fields']?['startDate'], 'dd MMM yyyy')}
  • Link direto para o Fluid

    triggerBody()?['methods']?[0]?['url'] 
  • Tipo de evento

    triggerOutputs()?['headers']?['X-Fluid-Event']

Saiba mais sobre adaptive cards:

Etapa 5: Deixe o campo "Se não" Vazio

Nenhuma ação é necessária no ramo Se não.

Se a condição não for atendida, nenhuma notificação será enviada.

Etapa 6: Salvar e Testar

  1. Clique em Salvar

  2. Acione um evento de teste no Fluid

  3. Confirme que:

    • O fluxo é executado com sucesso

    • Uma notificação do Teams é enviada somente quando a condição é atendida

Was this article helpful?