Webhookok
A webhookok lehetővé teszik, hogy a PrimeCal-on kívüli rendszerek automatikusan kiváltsák az automatizálási szabályaidat. Amikor egy külső szolgáltatás — egy foglalási platform, egy CRM, egy webáruház — JSON üzenetet küld a szabályod webhook URL-jére, a PrimeCal fogadja azt, és lefuttatja a szabályt.
Hogyan működnek a webhookok
Minden automatizálási szabály, amely a webhook.incoming kiváltót használja, saját egyedi
URL-t kap. Amikor egy harmadik féltől származó rendszer aláírt HTTP POST kérést küld erre
az URL-re egy JSON törzzsel, a szabályod kiváltódik.
A folyamat:
- A külső rendszer POST kérést küld a webhook URL-edre
- A PrimeCal fogadja a payloadot, és naplózza
- A szabály feltételeit kiértékeli a payload adatai alapján
- Ha a feltételek illeszkednek (vagy nincs feltétel), a művelet lefut
A webhook URL megtalálása
- Menj a Vezérlőpult → Automatizálás menübe
- Nyisd meg a szabályt, amit csatlakoztatni szeretnél (vagy hozz létre újat
webhook.incomingkiváltóval) - A szabály részletes nézetében nyisd meg a Webhook fület
- Másold ki az URL-t — így néz ki:
https://api.primecal.eu/api/automation/webhook/abc123xyz
Minden szabálynak más token van az URL-jében. Ez a token azonosítja a szabályodat, de önmagában nem elég a kiváltásához — lásd lentebb.
Sok egyszerű webhook-fogadóval ellentétben a PrimeCal megköveteli, hogy minden bejövő kérés érvényes HMAC-SHA256 aláírást hordozzon, nem csak az URL tokent. Az aláírás nélküli kérés elutasításra kerül. Ez több beállítást igényel, mint egy egyszerű POST, de azt jelenti, hogy önmagában a token kiszivárgása nem használható a szabályod kiváltására.
Webhook kérés küldése
A külső rendszerednek Content-Type: application/json fejléccel kell kérést küldenie, és két
kötelező fejléccel: egy időbélyeggel és egy, a payloadodból és egy szabályonkénti titokból
számított aláírással.
Példa payload:
{
"event": "order.completed",
"data": {
"order_id": "12345",
"customer": "John Doe",
"total": 99.99,
"status": "paid"
}
}
A PrimeCal bármilyen érvényes JSON-struktúrát elfogad. A felső szintű forma rugalmas — használhatsz
data, payload, body mezőt, vagy bármilyen beágyazást, amit szeretnél. Ami számít, hogy
ugyanazokat az útvonalakat hivatkozd a feltételeidben pont-jelöléssel (pl.
webhook.data.order_id).
Az aláíró titok (signing secret) megszerzése
A webalkalmazás jelenleg nem mutatja közvetlenül a szabályod aláíró titkát. Szerezd meg (vagy forgasd) bejelentkezve, a következő hívással:
curl -X POST https://api.primecal.eu/api/automation/rules/YOUR_RULE_ID/webhook/rotate-secret \
-H "Authorization: Bearer YOUR_JWT_OR_API_KEY"
Ez visszaad egy webhookSecret-et — mentsd el biztonságos helyre, mert nincs mód újra
megtekinteni anélkül, hogy forgatnád (ami rövid türelmi idő után érvényteleníti a régit). A
legtöbb integrátor ezt egyszer teszi meg, majd beégeti a titkot a küldő rendszerbe.
Az aláírás kiszámítása
Minden kéréshez:
timestamp= az aktuális Unix idő másodpercben.- Építsd fel a
"{timestamp}.{rawJsonBody}"karakterláncot. signature=HMAC-SHA256(webhookSecret, az a karakterlánc), hexadecimálisan.- Küldd el az
X-PrimeCal-Timestamp: {timestamp}ésX-PrimeCal-Signature: {signature}fejléceket.
Az időbélyegnek a PrimeCal órájának 5 percén belül kell lennie, és minden aláírt kérés csak egyszer használható — ez megakadályozza, hogy régi, elfogott kéréseket később újra lejátszhassanak.
Teljes kérés/válasz példák (Node.js és curl) a Webhook API referenciában találhatók — ezt az oldalt add oda annak, aki a küldő oldalt implementálja.
Tesztelés curl-lal
A kötelező aláírás miatt a teszteléshez a titok és egy kiszámított aláírás is kell, nem csak egy egyszerű POST. A leggyorsabb módja a tesztelésnek, ha az aláírást a helyszínen generálod:
SECRET="a webhookSecret, amit a rotate-secret-től kaptál"
BODY='{"event":"test","data":{"priority":"high","customer_id":"123"}}'
TS=$(date +%s)
SIG=$(printf '%s.%s' "$TS" "$BODY" | openssl dgst -sha256 -hmac "$SECRET" | sed 's/^.* //')
curl -X POST https://api.primecal.eu/api/automation/webhook/YOUR_TOKEN \
-H "Content-Type: application/json" \
-H "X-PrimeCal-Timestamp: $TS" \
-H "X-PrimeCal-Signature: $SIG" \
-d "$BODY"
Cseréld ki a YOUR_TOKEN-t a szabályod Webhook fülén található tokenre. Küldés után nézd meg a
szabály History fülét a PrimeCal-ban, hogy megerősítsd, a kérés megérkezett és naplózva lett.
Payload adatok használata feltételekben
Amint egy webhook megérkezik, megvizsgálhatod a tartalmát a feltételeken belül a
webhook.data pont-jelöléssel:
webhook.data.order_id→ azorder_idmező adataalattwebhook.data.customer→ acustomermező adataalattwebhook.data.status→ astatusmező adataalatt
Példa szabály: csak akkor cselekedj, ha a status egyenlő "paid"-del:
- Feltétel mező:
webhook.data.status - Operátor:
equals - Érték:
paid
Lásd: Smart Values a pont-jelölés és a beágyazott elérés teljes magyarázatáért.
Gyakorlati példa: foglalás megerősítése
Egy foglalási platform webhookot küld a PrimeCal-nak, amikor valaki lefoglal egy medence-alkalmat. A payload így néz ki:
{
"event": "booking.confirmed",
"data": {
"booking_id": "bk_001",
"guest_name": "Sarah Connor",
"slot": "2026-07-15T10:00:00",
"type": "pool"
}
}
Azt szeretnéd, hogy az összes bejövő medence-foglalás cián színt kapjon, hogy kiemelkedjen a naptárban.
Szabálybeállítás:
- Kiváltó:
webhook.incoming - Feltétel:
webhook.data.typeegyenlőpool - Művelet: Esemény színének beállítása → Cián
Amikor a foglalási rendszer kiváltja a webhookot, a PrimeCal fogadja, ellenőrzi, hogy a type
pool-e, és alkalmazza a cián színt a kapcsolódó eseményre.
URL token regenerálása vs. aláíró titok forgatása
Ez két különböző érték, és a PrimeCal-nak két különböző művelete van rájuk:
- Az URL token (a webhook URL-ben lévő rész) — regeneráld a szabály Webhook füléről, ha gyanítod, hogy maga az URL kiszivárgott. A r égi URL azonnal leáll.
- Az aláíró titok — forgasd az API-n keresztül (lásd fent), ha gyanítod, hogy a titok kiszivárgott, vagy óvintézkedésként rendszeresen. A régi titok rövid türelmi ideig még működik, hogy leállás nélkül frissíthesd a küldő rendszert, majd leáll.
Az egyik regenerálása nem érinti a másikat — azt forgasd, ami valójában kiszivárgott.
Webhook naplók ellenőrzése
Minden webhook kérés — akár kiváltotta a műveletet, akár a feltételek kiszűrték — naplózva van a szabály audit-nyomvonalában.
- Nyisd meg a szabály részletes nézetét
- Menj a History fülre
- Minden bejegyzés mutatja az időbélyeget, a bejövő payloadot, mely feltételeket értékelte ki, és az eredményt
Ez az első hely, amit meg kell nézni, ha egy webhook nem tűnik működni.
Hibaelhárítás
Ha a webhookod nem váltja ki a szabályt a várt módon, lásd az Automatizálások hibaelhárítása oldalt a teljes ellenőrzőlistáért. A leggyakoribb problémák:
- 401 Unauthorized — hiányzó vagy érvénytelen
X-PrimeCal-Signature/X-PrimeCal-Timestampfejlécek, több mint 5 perccel eltérő időbélyeg, vagy rossz titok vagy rossz nyers törzs alapján számított aláírás. Ez soha nem jut el a History fülig, mivel a kérés elutasításra kerül, mielőtt a szabály lefutna — nézd meg a küldő rendszered saját naplóit a HTTP válaszért. - Rossz
Content-Typefejléc (application/json-nak kell lennie) - Az URL-ben lévő token nem egyezik a szabály jelenlegi tokenjével
- Egy feltétel kiszűri a kérést (nézd meg a History fület az okért — a 200-as válasz azt jelenti, hogy a kérést elfogadták és kiértékelték, nem azt, hogy illeszkedett)