Webhook šalje HTTP zahtjev na URL koji odabereš kad god se nešto dogodi u tvom salonu, na primjer kad se stvori termin ili ažurira klijent. Koristi ga kako bi drugi sustav bio usklađen sa Softalonom.
Prije nego što počneš
- Tvoj salon je na planu Ultimate.
- Imaš ulogu Super administrator ili Vlasnik.
- Imaš URL koji prihvaća
POSTzahtjeve s JSON tijelom i počinje shttps://ilihttp://.
Stvaranje webhooka
- 1
Korak 1 od 4
Otvori Webhookove
Idi na Postavke › Programeri › Webhookovi i klikni Stvori webhook.
- 2
Korak 2 od 4
Unesi odredište
Ispuni Odredišni URL, na primjer
https://example.com/webhook, i po želji Opis kako bi ga kasnije prepoznao. - 3
Korak 3 od 4
Odaberi teme
Pod Teme odaberi događaje koje želiš. Kartica Sve teme navodi svaku dostupnu temu, a Odabrane teme prikazuje ono što si odabrao. Tvoj URL prima samo teme koje odabereš.
- 4
Korak 4 od 4
Spremi
Klikni Stvori webhook.
Vidjet ćeš:Webhook stvoren, a webhook se pojavljuje u tablici s uključenim prekidačem statusa.
Teme
Teme se zovu resource.action. Dostupne su ove:
Što znači svaki okidač pogledaj u Okidači automatizacija – objašnjenje.
Što Softalon šalje
Svaki događaj je POST zahtjev s JSON tijelom:
{
"topic": "booking/appointment.created",
"event": {
"id": "...",
"type": "booking/appointment.created",
"resource": "booking/appointment",
"resourceId": "...",
"salonId": "...",
"data": {
"object": { "...": "the full object" },
"previousAttributes": { "...": "changed fields, for updates" }
}
}
}
Zahtjev ima ova zaglavlja:
Provjera potpisa
Svaki webhook ima tajnu. Softalon njome potpisuje tijelo zahtjeva pomoću HMAC-SHA256 i šalje heksadecimalni rezultat u X-Webhook-Signature. Izračunaj istu vrijednost iz neobrađenog tijela zahtjeva i usporedi. Ako se ne podudaraju, zanemari zahtjev.
const crypto = require("crypto");
function isValid(rawBody, header, secret) {
const expected = "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(header));
}
Za upravljanje tajnom koristi gumbe u stupcu Tajna:
- Gumb s okom prikazuje cijelu tajnu, a gumb za kopiranje je kopira.
- Gumb za ponovno generiranje odmah stvara novu tajnu. Stara tajna odmah prestaje raditi, pa istovremeno ažuriraj svoj sustav.
Dostave i ponovni pokušaji
- Tvoj URL mora odgovoriti statusnim kodom
2xxunutar 10 sekundi. Sve ostalo računa se kao neuspjeh. - Neuspjela dostava ponovno se pokušava, najviše 5 pokušaja ukupno. Čekanja između pokušaja rastu: otprilike 30 sekundi, 1 minuta, 2 minute i 4 minute.
- Koristi
X-Webhook-Delivery-Idkako bi zanemario dostavu koju si već obradio.
Svaka dostava ima jedan od ovih statusa:
Aplikacija još ne prikazuje zapisnik dostava. Dostave možeš čitati putem API-ja na GET /v1/salons/:salonId/webhook-endpoints/:webhookEndpointId/deliveries. Pogledaj Stvaranje API aplikacije.
Ako je svih posljednjih 5 dostava na webhook iscrpljeno, Softalon isključuje webhook. Popravi svoju krajnju točku, a zatim ponovno uključi prekidač statusa. Događaji koji se dogode dok je webhook isključen ne šalju se naknadno.
Uređivanje, pauziranje ili brisanje webhooka
- Pauziranje: isključi prekidač u stupcu Status.
- Uređivanje: otvori izbornik retka i odaberi Ažuriraj.
- Brisanje: otvori izbornik retka i odaberi Izbriši.
Webhookovi šalju samo dok tvoj salon ima aktivnu pretplatu, pretplatu u probnom razdoblju ili u kašnjenju, na planu koji uključuje webhookove.
Česta pitanja
Svaka dostava šalje se zasebno i ponovno pokušava po vlastitom rasporedu, pa se ne oslanjaj na redoslijed kojim zahtjevi stižu. Umjesto toga koristi vremenske oznake samog objekta.