n8n
In n8n empfängt der Knoten „Webhook“ Ereignisse von hier, der Knoten „HTTP Request“ ruft die API auf. Das klappt in der n8n Cloud und selbst betrieben, solange die Webhook-Adresse aus dem Internet per HTTPS erreichbar ist.
Ereignisse empfangen und die Signatur prüfen:
- Lege einen Workflow mit dem Knoten „Webhook“ an, Methode POST, und kopiere die „Production URL“.
- Trage die Adresse unter Einstellungen, Webhooks ein und notiere das Secret, es erscheint nur einmal.
- Stelle im Webhook-Knoten unter „Options“ die Option „Raw Body“ an und hänge einen Knoten „Code“ mit dem Beispiel unten an. Selbst betrieben muss
NODE_FUNCTION_ALLOW_BUILTIN=cryptogesetzt sein.
const crypto = require('crypto');
const secret = 'whsec_DEIN_SECRET';
const kopf = $json.headers['x-horaka-signature'] ?? '';
const teile = Object.fromEntries(kopf.split(',').map((t) => t.split('=')));
const rumpf = Buffer.from($binary.data.data, 'base64').toString('utf8');
const erwartet = crypto
.createHmac('sha256', secret)
.update(`${teile.t}.${rumpf}`)
.digest('hex');
if (erwartet !== teile.v1) {
throw new Error('Signatur stimmt nicht');
}
return [{ json: JSON.parse(rumpf) }];
Timer aus einem Workflow steuern:
- Lege unter Einstellungen, API und Geräte ein Gerät oder einen Token mit dem Recht „Trigger“ an.
- Lege in n8n eine Zugangsart „Header Auth“ an: Name
Authorization, WertBearerund dein Token. - Füge den Knoten „HTTP Request“ hinzu und trage die Werte unten ein.
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": "PROJEKT"}