n8n
In n8n il nodo «Webhook» riceve gli eventi da qui e il nodo «HTTP Request» chiama l'API. Funziona in n8n Cloud e self-hosted, purché l'indirizzo del webhook sia raggiungibile da internet tramite HTTPS.
Ricevere eventi e verificare la firma:
- Crea un workflow con il nodo «Webhook», metodo POST, e copia la «Production URL».
- Aggiungi l'indirizzo in Impostazioni, Webhook e annota il secret, viene mostrato una sola volta.
- Nel nodo webhook attiva «Raw Body» in «Options» e collega un nodo «Code» con l'esempio qui sotto. In self-hosted deve essere impostato
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) }];
Gestire il timer da un workflow:
- In Impostazioni, API e dispositivi crea un dispositivo o un token con il permesso «Trigger».
- In n8n crea una credenziale di tipo «Header Auth»: nome
Authorization, valoreBearere il tuo token. - Aggiungi il nodo «HTTP Request» e inserisci i valori qui sotto.
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": "PROGETTO"}