Regisztráció
Regisztráció
Összes útmutató

Szabadság-folyamatok automatizálása kód nélkül: Collabin webhookok n8n-ben és Make-ben

A Slack webhook útmutatónk egy kis Node.js hidat épít — de egyáltalán nem kötelező kódot írni. n8n-nel vagy Make-kel a Collabin webhook-eseményei több ezer alkalmazás triggerévé válnak: Slack- és Teams-üzenetek, Google Sheets sorok, naptárbejegyzések, HR-rendszer frissítések. Ez az útmutató az n8n-változatot építi fel az elejétől a végéig, rendes aláírás-ellenőrzéssel, majd kitér a Make-re és receptötletekre.

Webhook-gyorsismétlés 60 másodpercben

A Collabin POST kérést küld egy általad megadott URL-re, valahányszor egy feliratkozott esemény elsül — leave.created (új kérelem) vagy leave.status_changed (jóváhagyva/elutasítva). A body tartalmazza az event nevét, egy időbélyeget, egy delivery_id-t és a teljes szabadság-objektumot a data mezőben (beágyazott user és leave_type objektumokkal). Minden kérés alá van írva: az X-Collabin-Signature fejlécben sha256=<a nyers body HMAC-SHA256 értéke> érkezik, a webhookod titkával számolva. A webhookokhoz Pro csomag kell; a payload részletei a Slack útmutatóban vannak.

Felépítés n8n-ben

1. lépés: A Webhook trigger

Hozz létre új workflow-t, és adj hozzá egy Webhook node-ot:

  • HTTP metódus: POST
  • Respond: Immediately — a Collabin legfeljebb 10 másodpercet vár, ezért előbb nyugtázz, utána dolgozz.
  • A node beállításaiban kapcsold be a Raw Body opciót. Ez fontos: az aláírás pontosan azokra a bájtokra készül, amiket a Collabin küldött — egy újraszerializált JSON body nem egyezne.

Másold ki a node által mutatott éles webhook URL-t.

2. lépés: Regisztráld a Collabinban

A Collabin felületén nyisd meg a Webhookok menüpontot, vedd fel az n8n URL-jét, és válaszd ki az eseményeket. A Collabin a webhook titkát egyszer mutatja meg — most másold ki; a következő lépésben kelleni fog.

3. lépés: Aláírás-ellenőrzés egy Code node-ban

Tegyél egy Code node-ot a trigger után (az n8n Code node-ja használhatja a Node beépített crypto modulját — ez konfiguráció, nem hosztolandó alkalmazáskód):

const crypto = require('crypto');

const secret = 'A_WEBHOOK_TITKOD'; // jobb: n8n credential/környezeti változó
const rawBody = $input.first().binary.data
  ? Buffer.from($input.first().binary.data.data, 'base64')
  : Buffer.from(JSON.stringify($input.first().json.body));

const expected = 'sha256=' +
  crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const received = $input.first().json.headers['x-collabin-signature'] || '';

if (received !== expected) {
  throw new Error('Érvénytelen webhook-aláírás — kézbesítés eldobva.');
}

return [{ json: JSON.parse(rawBody.toString('utf8')) }];

Ha az aláírás nem egyezik, a workflow leáll, és semmi nem fut tovább. Innentől minden node megbízhat a payloadban.

4. lépés: Útválasztás és cselekvés

Adj hozzá egy Switch node-ot a {{ $json.event }} értékre, eseményenként egy kimenettel, majd kösd rá, amire a workflow való. Egy Slack-ág egyetlen Slack node ilyen üzenettel:

:palm_tree: {{ $json.data.user.name }} szabadságot kért
({{ $json.data.leave_type.name }}): {{ $json.data.start_date.slice(0,10) }}
– {{ $json.data.end_date.slice(0,10) }}

Aktiváld a workflow-t, adj be egy próba-kérelmet a Collabinban, és nézd, ahogy a futási napló kigyullad.

Ugyanez Make-ben

A Make-ben (korábban Integromat) a trigger egy Custom webhook modul: hozd létre, másold ki az URL-t, és regisztráld a Collabinban ugyanúgy. A Make automatikusan értelmezi a JSON-t, a további modulokat (Slack, Google Sheets, e-mail…) a feltérképezett mezőkből kötöd be.

Egy őszinte kitétel: a Make custom webhookjai nem adják oda a nyers kérés-bodyt a képleteknek, így ott a HMAC-ellenőrzés gyakorlatilag nem kivitelezhető. Maga a webhook URL egy hosszú, véletlenszerű titok, amit tényleg nehéz kitalálni — de aki megszerzi az URL-t, hamis eseményeket küldhet. Két észszerű hozzáállás: vállald ezt a kockázatot alacsony tétű automatizálásoknál (egy téves Slack-üzenet), vagy az aláírás-ellenőrzött folyamatokat tartsd n8n-ben / egy kis kódhídban, ha bármi nyilvántartó rendszerbe ír. Ellenőrizetlen webhook-adatot bérszámfejtésbe ne vezess.

Receptötletek

  • Jóváhagyási napló: leave.status_changed → szűrő status = APPROVED → új sor egy Google Sheetbe — nulla erőfeszítésű audit-lista, amit az office manager is olvas.
  • Naptár ICS nélkül: leave.status_changed (jóváhagyott) → Google Naptár esemény egy közös csapatnaptárba. (Ha csak naptár kell, a beépített naptár feed automatizálás nélkül megoldja.)
  • Elutasítás-utánkövetés: leave.status_changed → szűrő status = REJECTED → e-mail a HR-nek a rejection_reason mezővel, hogy az elutasított kérelmeknek legyen emberi utóélete.
  • Létszám-figyelmeztetés: leave.created → csapat kikeresése egy táblázatból → ha N-nél több kolléga fedne át, pingeld a vezetőt, mielőtt jóváhagyja.

Üzemeltetési tudnivalók

A Collabin bármilyen 2xx választ sikernek tekint, és a sikertelen kézbesítéseket nem próbálja újra — hagyd a triggeren az „azonnali válasz" beállítást, hogy a lassú downstream appok ne okozzanak veszteséget, és ne feledd: a sikertelen kísérletek a Collabin rendszerhiba-naplójában láthatók. Még egy megtartásra érdemes szokás: az n8n és a Make külön webhookot kapjon a Collabinban, saját titokkal — így az egyik fogyasztót a másik érintése nélkül vonhatod vissza.