n8n
A partir do Premium
Website de n8n
(Página do fornecedor, abre numa nova janela)
No n8n, o nó «Webhook» recebe eventos daqui e o nó «HTTP Request» chama a API. Funciona no n8n Cloud e alojado por ti, desde que o endereço do webhook seja acessível a partir da internet por HTTPS.
Receber eventos e verificar a assinatura:
- Cria um workflow com o nó «Webhook», método POST, e copia o «Production URL».
- Regista o endereço em Definições, Webhooks e toma nota do segredo, só é mostrado uma vez.
- No nó webhook, ativa «Raw Body» em «Options» e liga um nó «Code» com o exemplo abaixo. Se for alojado por ti, tem de estar definido
NODE_FUNCTION_ALLOW_BUILTIN=crypto.
const crypto = require('crypto');
const secret = 'whsec_YOUR_SECRET';
const header = $json.headers['x-horaka-signature'] ?? '';
const parts = Object.fromEntries(header.split(',').map((p) => p.split('=')));
const body = Buffer.from($binary.data.data, 'base64').toString('utf8');
const expected = crypto
.createHmac('sha256', secret)
.update(`${parts.t}.${body}`)
.digest('hex');
if (expected !== parts.v1) {
throw new Error('Signature does not match');
}
return [{ json: JSON.parse(body) }];
Controlar o cronómetro a partir de um workflow:
- Em Definições, API e dispositivos, cria um dispositivo ou um token com a permissão «Trigger».
- No n8n, cria uma credencial do tipo «Header Auth»: nome
Authorization, valorBearere o teu token. - Adiciona o nó «HTTP Request» e introduz os valores abaixo.
Method: POST
URL: https://api.horaka.com/v1/track/toggle
Authentication: Generic Credential Type, Header Auth
Send Body: on, Body Content Type JSON
JSON: {"project": "PROJETO"}