Ajuda e guiasNotificações › Webhook para Slack, Discord e Teams

Webhook para Slack, Discord e Teams

4 min de leitura · Notificações

Um webhook (envio automático de uma mensagem para um endereço indicado) é uma forma universal de enviar uma notificação para qualquer aplicação - para o Slack, o Discord, o Microsoft Teams ou para o seu próprio sistema. A ligação demora alguns minutos e o ePulz.io formata a mensagem para o serviço de destino automaticamente.

Campo de webhook nas definições de notificações
O endereço do webhook é colado na secção Notificações - o tipo de serviço (Slack, Discord, Teams) é reconhecido automaticamente.

O ePulz.io reconhece automaticamente o tipo de serviço de destino a partir do endereço do webhook. Reconhecemos: Slack (hooks.slack.com/services/...), Discord (discord.com/api/webhooks/... e discordapp.com/api/webhooks/...), Microsoft Teams incluindo Power Automate / Workflows (*.webhook.office.com, outlook.office.com/webhook/..., *.logic.azure.com/workflows/...). Para os restantes endereços usamos um payload JSON genérico.

Ligação do Slack

  1. No Slack abra api.slack.com/apps e clique em Create New App → From scratch.
  2. Dê um nome à aplicação (por exemplo "ePulz Alerts") e escolha o workspace a que deve pertencer.
  3. No menu da esquerda escolha Incoming Webhooks e mude-os para On.
  4. Clique em Add New Webhook to Workspace e selecione o canal onde quer receber os alertas.
  5. Copie o endereço do webhook gerado (começa por https://hooks.slack.com/services/...).
  6. No ePulz.io abra Definições → Notificações → Webhook, cole o endereço e guarde.

O ePulz.io reconhece automaticamente que se trata do Slack e envia mensagens bem formatadas com uma barra colorida (vermelha em caso de falha, verde quando recupera) e uma ligação de regresso ao painel.

Ligação do Discord

  1. No seu servidor Discord clique com o botão direito no canal e escolha Editar canal → Integrações → Webhooks.
  2. Clique em Novo webhook, opcionalmente dê um nome ao bot e defina um avatar.
  3. Clique em Copiar URL do webhook. O endereço tem a forma https://discord.com/api/webhooks/....
  4. No ePulz.io abra Definições → Notificações → Webhook, cole o endereço e guarde.

Também para o Discord preparamos o formato da mensagem automaticamente - é utilizado um embed do Discord (uma mensagem destacada com moldura) com o nome do monitor, a descrição do problema e a hora.

Testar o webhook

Depois de guardar o endereço, clique em Testar nas definições. Enviamos uma mensagem de teste para o canal de destino, para que veja logo como ficará o alerta. Se nada chegar, verifique se copiou o endereço completo corretamente e se o bot tem acesso ao canal.

Microsoft Teams (Adaptive Card)

Para o Microsoft Teams (incluindo os URL de Power Automate / Workflow logic.azure.com/workflows/...) enviamos a mensagem no formato Adaptive Card v1.4 encapsulado numa mensagem:

{
  "type": "message",
  "attachments": [{
    "contentType": "application/vnd.microsoft.card.adaptive",
    "content": {
      "type": "AdaptiveCard",
      "version": "1.4",
      "body": [
        {"type": "TextBlock", "text": "Monitor DOWN: Site de produção", "weight": "bolder", "size": "large"},
        {"type": "TextBlock", "text": "Indisponível: HTTP 503", "wrap": true}
      ],
      "actions": [
        {"type": "Action.OpenUrl", "title": "Abrir no ePulz.io", "url": "https://epulz.io/dashboard/monitor/42"}
      ]
    }
  }]
}

No Teams o endereço do webhook obtém-se a partir do conector Incoming Webhook no canal, ou a partir do modelo do Power Automate "Post to Teams when a HTTP request is received".

Webhook próprio (endpoint genérico)

Se precisar de enviar alertas para a sua própria aplicação, introduza nas definições o endereço do seu endpoint (o endereço de destino). O ePulz.io envia para lá um pedido com o método POST e um corpo no formato JSON:

{
  "event": "down",
  "monitor": {
    "name": "Site de produção",
    "target": "https://example.com",
    "url": "https://epulz.io/dashboard/monitor/42"
  },
  "message": "Indisponível: HTTP 503",
  "timestamp": "2026-05-31T14:23:45+00:00",
  "source": "epulzio"
}

O campo event assume os valores down (falha), up (recuperação), ssl (expiração próxima do certificado SSL), domain (expiração próxima do domínio), anomaly (anomalia de resposta) ou test (envio de teste). O campo monitor.name é o nome do monitor, monitor.target é o endereço monitorizado e monitor.url é a ligação de regresso ao painel do ePulz.io.

Verificação da assinatura (HMAC)

Opcionalmente pode ativar a assinatura nas definições - assinamos então cada pedido com uma chave secreta (HMAC SHA-256) e adicionamos dois cabeçalhos:

  • X-ePulzio-Signature - assinatura no formato sha256=<hex digest> do corpo do pedido
  • X-ePulzio-Event - o tipo de evento (o mesmo valor que o campo event no corpo)

No seu endpoint basta calcular o HMAC SHA-256 do corpo recebido com a mesma chave secreta e comparar com o cabeçalho. Se coincidirem, o pedido é genuíno e não foi alterado durante o trânsito.

Dica: Para equipas maiores recomendamos um canal Slack ou Discord dedicado exclusivamente a alertas (por exemplo #alerts). Assim o canal não fica inundado com outra conversa e as mensagens críticas não escapam a ninguém.
Este guia foi útil?