Ugrás a fő tartalomhoz
Ha egy másik rendszert is használsz, például egy CRM-et, egy hírlevélküldőt vagy egy automatizáló eszközt (Zapier, Make, n8n), a webhookkal a foglalási események adatai automatikusan oda is eljuthatnak. Ilyenkor egy esemény, például egy új foglalás után a rendszer egy kérést küld az általad megadott címre a foglalás adataival. A webhook beállításához a fogadó rendszer webhook címe kell. Ezt általában a fogadó rendszer beállításai között találod.

Webhook felvétele

1

Nyisd meg a Webhook fület

A menüben kattints az Értesítések menüpontra, majd a Lista lehetőségre és válaszd felül a Webhook fület.
2

Kattints az Új értesítés gombra

Add meg az Értesítés nevét, például „CRM: új foglalás” és az Esemény mezőben válaszd ki, mikor menjen ki a webhook. Kattints a Létrehozás gombra.
3

Add meg a kérés adatait

Válaszd ki a kérés módját, add meg a Webhook URL-t és az elküldendő adatokat, lásd lent.
4

Mentsd el

Kattints a Mentés gombra.
5

Rendelj hozzá Signing Secretet

A webhook csak akkor megy ki, ha Signing Secret tartozik hozzá. Lásd: Signing Secret.
A Webhook fül a CRM: új foglalás webhookkal, POST móddal, a CRM webhook címével, egy Authorization fejléccel és JSON body-val, amelyben a foglalás adatai kulcsszavakként szerepelnek

Egy webhook, ami minden új foglalást elküld a CRM-be

A kérés beállításai

  • Kérés módja: POST, PUT, GET vagy DELETE. A legtöbb rendszer POST kérést vár.
  • Webhook URL: a fogadó rendszer címe. Csak https:// kezdetű cím lehet.
  • Headerek: a kéréshez küldött fejlécek, ha a fogadó rendszer ilyet kér, például egy Authorization fejlécet a saját kulcsával. Az Új header gombbal adhatsz hozzá újat.
  • Content type: POST és PUT kérésnél választhatsz a JSON, a Form-data és a Nincs body közül.
  • Body mezők vagy JSON body: az elküldött adatok. Form-data esetén mezőnként adod meg a nevet és az értéket, JSON esetén egy JSON szöveget írsz.
Az URL-be, a fejlécek értékébe és az elküldött adatokba változó adatokat is beszúrhatsz, például a foglalás azonosítóját, az ügyfél nevét vagy a szolgáltatás nevét. A rendszer küldéskor ezeket a valódi adatokkal cseréli ki. JSON-nál a beszúrt értékek akkor sem rontják el a JSON-t, ha például idézőjelet tartalmaznak. Egy JSON body például így nézhet ki:
A Beállítások gombbal () a webhookra is megadhatsz szűrőket, például hogy csak egy adott szolgáltatás foglalásainál menjen ki. Lásd: Időzítés és szűrők.

Teszt küldés

A Teszt küldés gombbal azonnal elküldheted a kérést a megadott címre. A rendszer kiírja, milyen HTTP státuszkóddal válaszolt a fogadó rendszer, így rögtön látod, hogy elfogadta-e a kérést.

Signing Secret

A Signing Secret egy titkos kulcs, amivel a rendszer minden webhook kérést aláír. A fogadó rendszer ebből tudja ellenőrizni, hogy a kérés valóban tőled jött és útközben senki nem módosította. Signing Secret nélkül a webhook nem megy ki, a szerkesztőben ilyenkor figyelmeztetés jelenik meg.
1

Nyisd meg a Fejlesztőknek oldalt

A menüben kattints a Beállítások menüpontra, majd a Fejlesztőknek lehetőségre.
2

Hozz létre egy kulcsot

A Signing Secretek résznél kattints az Új Signing Secret gombra. A Megnevezés csak neked szól, például annak a rendszernek a neve, amelyik a kéréseket fogadja.
3

Rendeld hozzá a webhookokat

A kulcs sorában kattints a Webhook gombra és válaszd ki, mely webhookokat írja alá ez a kulcs. Egy webhookhoz egyszerre egy kulcs tartozhat.
4

Add meg a kulcsot a fogadó rendszerben

Másold ki a kulcsot és add meg a fogadó rendszerben, hogy az ellenőrizni tudja az aláírást.
A Fejlesztőknek oldal egy Minta CRM nevű Signing Secrettel, a kulcs rövidített értékével, a Másolás és a Webhook gombbal

Egy Signing Secret a Fejlesztőknek oldalon

A Webhook ablak, amelyben a CRM: új foglalás webhook van kiválasztva

Webhook hozzárendelése a kulcshoz

Ha úgy gondolod, hogy a kulcs illetéktelen kézbe került, az Új Secret generálása lehetőséggel cserélj újat. A régi kulcs azonnal érvénytelenné válik, ezért az újat a fogadó rendszerben is cseréld le.

Az aláírás ellenőrzése

Minden kérés megkapja az X-Onlinefoglalas-Signature fejlécet ebben a formában:
A t a küldés ideje Unix időbélyegként, a v1 pedig a HMAC-SHA256 aláírás hexadecimálisan. Az ellenőrzés lépései:
  1. Bontsd fel a fejlécet a t és a v1 értékre.
  2. Vedd a kérés nyers body-ját pontosan úgy, ahogy megérkezett. GET és DELETE kérésnél a body üres.
  3. Állítsd össze az aláírt szöveget: írd egymás után a t értékét, egy pont karaktert (.) és a nyers body-t, szóköz nélkül. Például: 1791100000.{"foglalas_id":"1248"}
  4. Számolj erre HMAC-SHA256-ot a Signing Secrettel és kódold hexadecimálisan.
  5. Hasonlítsd össze a v1 értékkel állandó idejű (constant-time) összehasonlítással, például PHP-ban a hash_equals függvénnyel. Így az összehasonlítás ideje nem árulja el, hány karakter egyezett.
  6. Ellenőrizd, hogy a t friss, például legfeljebb 5 perces. Ez véd a replay attack ellen: ha valaki elfog egy kérést, később nem tudja újra elküldeni neked.

Fontos tudnivalók

  • Az aláírás mindig a nyers body-ra készül, a tartalomtípustól függetlenül, tehát JSON és Form-data esetén is.
  • GET és DELETE kérésnél nincs body, ilyenkor az aláírt szöveg csak az időbélyeg és utána a pont karakter, például: 1791100000.
  • Ha az aláírás fejléc hiányzik vagy érvénytelen, utasítsd el a kérést, mert nem tőled jött.
  • Signing Secret nélkül a webhook ki sem megy, ezért minden hozzád érkező kérés alá van írva.
  • A Signing Secretet environment variable-ben vagy secret managerben tárold, ne a forráskódban.

Példakódok

Az alábbi példák mind ugyanazt csinálják: ellenőrzik az aláírást és az időbélyeget, majd false értéket adnak, ha a kérés nem tőled jött vagy túl régi. A példák a Signing Secretet az ONLINEFOGLALAS_WEBHOOK_SECRET environment variable-ből olvassák.
Az aláírást mindig a nyers body-ra számold, pontosan úgy, ahogy megérkezett. Ha a body-t előbb feldolgozod (például JSON-ként beolvasod és újra szöveggé alakítod), az aláírás nem fog egyezni.

Kiküldés és hibák

  • A webhook a háttérben megy ki, ezért a foglalást nem lassítja.
  • A rendszer 10 másodpercig vár a válaszra. Ha a fogadó rendszer nem érhető el, a rendszer háromszor újrapróbálja, 10, 30 és 60 másodperc múlva.
  • Ha a fogadó rendszer hibakóddal válaszol (nem 2xx státusszal), a küldés sikertelen lesz és a rendszer nem próbálja újra.
Minden webhook megjelenik az Elküldött értesítések oldalon Webhook típussal. Ott látod, sikeres volt-e és a sikertelen kérést újra is küldheted. Lásd: Elküldött értesítések.

Gyakori kérdések

Hogyan küldhetem át az új foglalásokat a CRM-embe?

Vegyél fel egy webhookot a Webhook fülön az Új időpontfoglalás eseményre, add meg a CRM webhook címét és a küldendő adatokat, majd rendelj hozzá egy Signing Secretet.

Miért nem érkezik meg a webhook?

Leggyakrabban azért, mert nincs hozzá Signing Secret rendelve. Nézd meg azt is, hogy a webhook be van-e kapcsolva a listában. Az Elküldött értesítések oldalon azt is látod, milyen hibával tért vissza.

Mi az a Signing Secret és miért kell?

Egy titkos kulcs, amivel a rendszer aláírja a kéréseket. A fogadó rendszer ebből tudja, hogy a kérés valóban tőled jött. Nélküle a webhook nem megy ki.

Működik a Zapierrel vagy a Make-kel?

Igen, ha a Zapier vagy a Make webhook címét adod meg Webhook URL-ként. A kérés ugyanúgy megérkezik, az aláírás ellenőrzése a fogadó oldalon nem kötelező, de ajánlott.