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 arejection_reasonmező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.