Pular para o conteúdo

Webhooks

Um webhook é a forma mais simples de ligação: uma mensagem HTTP para um endereço que tu defines. O Slack, o Discord e o Microsoft Teams aceitam essas mensagens diretamente como publicação num canal; sistemas próprios podem fazer com elas o que quiserem.

Utilizações típicas: o endereço de suporte notifica novos pedidos no canal da equipa. A confirmação de encomenda aciona o sistema de gestão de stock. O alerta de servidor de um cliente aparece no Discord.

  1. Abre Definições → Integrações → Webhooks e ativa Ativar webhooks.
  2. Escolhe Adicionar endpoint e indica um Nome e o URL.
  3. Em Modelo predefinido de payload escolhe Slack, Discord, Microsoft Teams ou Generic JSON. O modelo preenche o Template de payload (JSON) com uma estrutura base adequada, que podes ajustar livremente.
  4. Testar envia uma mensagem de teste com dados de exemplo. No Slack e afins vê-la logo no canal.

Obténs o URL no respetivo serviço:

  • Slack: cria em api.slack.com/apps uma app com Incoming Webhooks; o URL gerado é o endpoint.
  • Discord: Definições do canal → Integrações → Webhooks.
  • Teams: no canal, através da app Workflows com o modelo para publicar quando for recebido um pedido de webhook.
  • Sistemas próprios: qualquer endereço que aceite JSON por HTTP POST ou PUT.

É possível ter vários endpoints, e cada um pode ser desativado à parte: o canal de suporte e o script próprio podem coexistir.

O envio faz-se exclusivamente através da automatização: a ação Enviar webhook numa regra, com o endpoint à tua escolha como destino.

O que é enviado ao certo está no template de payload do endpoint. Nele colocas variáveis entre chavetas duplas, que ao enviar são preenchidas com os dados da mensagem que desencadeou o envio: {{subject}}, {{from}}, {{from_name}}, {{to}}, {{cc}}, {{date}}, {{preview}} (o início do texto), {{tags}}, {{mailbox}}, {{account_id}} e {{rule_name}}. A Referência de variáveis por baixo do template explica cada uma. Uma notificação do Slack para o canal de suporte tem, por exemplo, este aspeto:

{ "text": "Novo pedido de {{from_name}}: {{subject}}" }
  • Assinatura: se preencheres um Segredo HMAC (opcional), cada pedido contém o cabeçalho X-YouniqMail-Signature: sha256=… com uma assinatura HMAC-SHA256 do conteúdo. O teu servidor verifica assim que a mensagem vem de ti.
  • Repetições: em erros do servidor (5xx) e problemas de rede, o YouniqMail tenta de novo até três vezes, com pausas de 1, 2 e 4 segundos. Recusas (4xx) não são repetidas. O tempo limite defines por endpoint, no máximo 30 segundos.
  • Método: POST é o padrão, PUT só se o teu endpoint o exigir. Os redirecionamentos não são seguidos.
  • A mensagem vai para o endpoint que indicares. Verifica o URL com cuidado, porque quem o conhecer pode escrever no canal. Trata os URLs de webhook como palavras-passe.
  • Tu decides o conteúdo: é transmitido o que estiver no template. Quem usar só assunto e remetente, só esses transmite.
  • Funcionalidade Pro: os webhooks pertencem ao âmbito Pro.