Pregled vebhukova (Webhooks)
Vebhukovi omogućavaju platformi ChatLab da obavesti vaše sisteme onog trenutka kada se nešto dogodi u vašim četbotovima. Umesto da periodično šaljete upite prema Management API interfejsu ili ručno izvozite podatke, registrujete HTTPS krajnju tačku (endpoint) i ChatLab joj u realnom vremenu šalje potpisani HTTP POST zahtev - kada posetilac ostavi kontakt (lead), pošalje kontakt formu, oceni razgovor, zatraži ljudskog operatera ili kada se izvrši AI akcija.
Uobičajeni primeri korišćenja:
- prosleđivanje novih lidova direktno u vaš CRM sistem čim se prikupe
- obaveštavanje vašeg tima na platformi Slack kada posetilac zatraži Live Chat (ćaskanje uživo)
- slanje ocena razgovora i rezimea u vaš sopstveni analitički sistem
- praćenje izvršavanja AI akcija (AI actions) i slanje upozorenja u slučaju grešaka
Dostupnost: vebhukovi su dostupni od plana STANDARD i više (funkcija: Webhooks).
Gde se podešava: u administratorskoj aplikaciji otvorite Account settings -> Webhooks (Podešavanja naloga -> Vebhukovi) odmah pored odeljka Management API. Vebhukovi se podešavaju na nivou naloga - jedna krajnja tačka može primati događaje iz svih vaših botova ili samo iz filtriranog podskupa.
Podešavanje krajnje tačke
- Otvorite Account settings -> Webhooks i kliknite na Create endpoint (Kreiraj krajnju tačku).
- Popunite formu za krajnju tačku:
- Name (Naziv) - oznaka za vašu internu upotrebu, npr. „CRM sinhronizacija” ili „Slack obaveštenja”.
- URL - HTTPS adresa na koju će ChatLab slati POST zahteve sa događajima.
- Events (Događaji) - izaberite koje tipove događaja ova krajnja tačka prima (pogledajte katalog u nastavku). Izaberite samo ono što vam je potrebno; događaji visokog intenziteta poput
ai_action.executedmogu generisati veliki obim saobraćaja. - Bot filter (opciono) - ograničite krajnju tačku na određene botove. Ostavite prazno da biste primali događaje sa svih botova na vašem nalogu.
- Custom form filter (opciono) - usmerava unose iz jedne prilagođene forme ka ovoj krajnjoj tački. Ovo sužava samo događaj
custom_form.submitted; svi ostali događaji na koje ste pretplaćeni (lidovi, zahtevi za kontakt, razgovori, Live Chat, AI akcije) biće isporučeni bez obzira na ovu postavku.
- Potvrdite unos. Secret (tajni ključ) krajnje tačke prikazuje se samo jednom u dijalogu o uspehu - kopirajte ga odmah i sačuvajte na bezbednom mestu. Biće vam potreban za verifikaciju potpisa (pogledajte odeljak Bezbednost u nastavku). Tekstualna vrednost se kasnije ne može ponovo dobiti.
Svaka krajnja tačka takođe ima:
- Prekidač za omogućavanje/onemogućavanje (Enable/disable toggle) - pauzirajte isporuku bez brisanja krajnje tačke. Onemogućene krajnje tačke tiho odbacuju događaje (ne stavljaju se u red čekanja za kasnije).
- Send sample event (Pošalji probni događaj) - isporučuje potpisani test zahtev na vaš URL kako biste mogli da proverite rad prijemnika od početka do kraja. Možete odabrati tip događaja i izmeniti probne vrednosti pre slanja, tako da vaš rukovalac vidi realistične podatke. Test stiže kao redovna isporuka gde se
eventTypepoklapa sa vašim izborom (ili kaowebhook.testza običnu proveru povezivanja). - Roll secret (Zameni tajni ključ) - generiše novi tajni ključ i poništava stari. Koristite ovo ako postoji mogućnost da je tajni ključ kompromitovan. Novi tajni ključ se ponovo prikazuje samo jednom. Ažurirajte svoj prijemnik pre zamene, inače isporuke neće proći verifikaciju potpisa na vašoj strani.
- Delivery log (Dnevnik isporuke) - lista nedavnih isporuka po krajnjoj tački sa vremenskom oznakom, tipom događaja, HTTP statusom koji je vratio vaš server i vremenom odgovora. Neuspele isporuke i pauze usled mehanizma zaštite od preopterećenja (circuit breaker) vidljive su ovde. Dnevnik se čuva 14 dana.
Omotnica događaja (Event envelope)
Svaka isporuka je HTTP POST zahtev sa zaglavljem Content-Type: application/json. Telo zahteva uvek ima istu omotnicu; objekat data je specifičan za svaki tip događaja:
{
"eventId": "9f1c1c8e-6a2b-4b9e-9d2f-3f8a1e2b4c5d",
"eventType": "lead.created",
"timestamp": "2026-08-13T14:22:31Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": { }
}
eventId- jedinstven za svaki događaj. Koristite ga za deduplikaciju ako vaša obrada mora biti idempotentna.eventType- jedan od tipova dokumentovanih u nastavku; takođe se šalje u zaglavljuX-ChatLab-Event.timestamp- ISO 8601 UTC vreme kada se događaj desio.botId/botName- bot kome događaj pripada.conversationId/sessionId- kontekst razgovora, kada je primenljivo.
Katalog događaja
lead.created
Aktivira se kada posetilac pošalje svoje kontakt podatke - putem forme za prikupljanje lidova, uvodne forme za Live Chat ili prilagođene forme koja se koristi za prikupljanje lidova.
{
"eventId": "9f1c1c8e-6a2b-4b9e-9d2f-3f8a1e2b4c5d",
"eventType": "lead.created",
"timestamp": "2026-08-13T14:22:31Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"email": "jane.doe@example.com",
"name": "Jane Doe",
"phone": "+1 555 0123",
"source": "LEAD_COLLECTION_FORM",
"formCodeName": "lead_form",
"formName": "Lead form",
"fields": [
{"name": "email", "value": "jane.doe@example.com", "type": "email"},
{"name": "company", "value": "Acme Inc.", "type": "text"},
{"name": "topics", "value": ["Billing", "Delivery"], "type": "multichoice"},
{"name": "attachment", "value": "https://api.chatlab.com/aichat/customform/download?key=...&token=...", "type": "file"}
],
"pageUrl": "https://acme.com/pricing"
}
}
source- način na koji su kontakt podaci prikupljeni:LEAD_COLLECTION_FORM(forma za prikupljanje lidova),LIVE_CHAT_FORM(uvodna forma za Live Chat),CONVERSATION(AI je preuzeo podatke tokom razgovora),ADMIN_DATA_UPDATEiliUPDATE_CLIENT_CONTEXT(izmenjeno na strani ChatLab-a). Slanje forme za kontakt sa ljudskom podrškom nikada ne pokreće ovaj događaj - umesto toga pokrećecontact_form.submitted.email,name,phone- kontakt podaci mapirani u zapis o lidu.- Kada se za prikupljanje lidova koristi prilagođena forma, svako polje definisano u toj formi biće uključeno u
fields, po redosledu iz forme, aformCodeName/formNameidentifikuju formu. Kod klasične forme za lidove oba polja sunull, afieldsje prazan niz. - Svaki unos u
fieldsima format{name, value, type}.nameje tehnički naziv polja, nepromenjen prilikom izmena teksta labele - koristite ga za mapiranje u vaš CRM. - Za polja tipa
multichoicevrednostvalueje niz izabranih opcija. Polja sa poljima za potvrdu (checkbox) su zasebni unosi sa vrednostima"true"/"false". - Za polja tipa
filevrednostvalueje veza za preuzimanje otpremljene datoteke; vebhuk nikada ne prenosi sam sadržaj datoteke. pageUrl- stranica na kojoj se posetilac nalazio u trenutku slanja.
contact_form.submitted
Aktivira se kada posetilac pošalje kontakt formu za podršku ljudi ili prilagođenu formu koja se koristi za kontakt sa ljudima.
{
"eventId": "3a7b9c2d-1e4f-4a6b-8c0d-5e2f7a9b1c3d",
"eventType": "contact_form.submitted",
"timestamp": "2026-08-13T14:25:02Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"email": "jane.doe@example.com",
"message": "I need help with my last invoice.",
"source": "CUSTOM_FORM",
"formCodeName": "contact_form",
"formName": "Contact form",
"fields": [
{"name": "email", "value": "jane.doe@example.com", "type": "email"},
{"name": "order_number", "value": "A-10293", "type": "text"},
{"name": "message", "value": "I need help with my last invoice.", "type": "textarea"}
]
}
}
email- adresa koju je posetilac ostavio i na koju vaš tim za podršku treba da odgovori.source-CUSTOM_FORMkada se iza kontakt forme nalazi prilagođena forma, aCONTACT_FORMza ugrađenu formu.formCodeName/formName- identifikuju prilagođenu formu u pozadini zahteva; oba sunullza ugrađenu formu.- Kada se koristi prilagođena forma, svako polje definisano u njoj biće uključeno u
fields(isti{name, value, type}format kao ulead.created). Kod ugrađene kontakt forme popunjavaju se samoemailimessage,fieldsje prazan niz, a identifikatori forme sunull. message- mapirano polje za poruku, ili sve unete vrednosti spojene zajedno ako u formi nije definisano posebno polje za poruku.
custom_form.submitted
Aktivira se prilikom svakog slanja prilagođene forme, bez obzira na njenu namenu. Imajte na umu da forme čija je svrha prikupljanje lidova ili kontakt sa ljudima takođe aktiviraju svoje namenske događaje lead.created / contact_form.submitted - pretplatite se na jedne ili druge u zavisnosti od toga da li želite opšti ili specijalizovani prikaz, i primenite deduplikaciju prema conversationId + timestamp ako se pretplatite na oba.
{
"eventId": "6c1d8e3f-2a5b-4c7d-9e0f-1a4b6c8d0e2f",
"eventType": "custom_form.submitted",
"timestamp": "2026-08-13T14:27:45Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"formCodeName": "warranty_claim",
"formName": "Warranty claim",
"fields": [
{"name": "order_number", "value": "A-10293", "type": "text"},
{"name": "issue", "value": "Damaged on arrival", "type": "textarea"},
{"name": "photo", "value": "https://api.chatlab.com/aichat/customform/download?key=...&token=...", "type": "file"}
],
"purpose": "STANDALONE"
}
}
formCodeName- stabilan mašinski naziv forme, koji se ne menja kada preimenujete formu; koristite ga za usmeravanje unosa u vašem sistemu.formNameje naziv koji se prikazuje posetiocima.fieldskoristi iste unose u formatu{name, value, type}kaolead.created: višestruki izbori su nizovi, a datoteke su veze za preuzimanje.purpose-STANDALONE,LEAD_COLLECTIONiliHUMAN_CONTACT, u zavisnosti od toga kako je forma povezana sa četbotom.
conversation.started
Aktivira se kada posetilac pošalje prvu poruku u novom razgovoru.
{
"eventId": "8e2f0a4b-3c6d-4e8f-a1b2-2c5d7e9f1a3b",
"eventType": "conversation.started",
"timestamp": "2026-08-13T14:20:11Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"firstMessage": "Do you ship to Canada?",
"chatSource": "WIDGET",
"byAdmin": false,
"countryCode": "PL",
"ipAddress": "83.12.44.7"
}
}
firstMessage- tačan tekst uvodne poruke posetioca. Vrednost jenullako je razgovor otvoren bez tekstualnog sadržaja.chatSource- kanal preko kog je razgovor stigao:WIDGET,WHATSAPP,MESSENGER,VOICE,VOICE_PHONE,API,BOOKING,AIRBNBiliIDOBOOKING.byAdmin- ima vrednosttruekada razgovor potiče iz pregleda četbota unutar ChatLab kontrolne table, a ne od stvarnog posetioca. Koristite ovo kako biste sprečili da vaši testni razgovori dospeju u CRM.countryCode- ISO kod zemlje određen na osnovu IP adrese posetioca,nullako se ne može utvrditi.ipAddress- IP adresa posetioca koju vidi ChatLab,nullkada je nedostupna. Tretirajte je kao lični podatak u skladu sa GDPR regulativom i čuvajte je samo ako imate pravni osnov.
conversation.rated
Aktivira se kada posetilac oceni odgovor bota palcem nagore ili nadole (pogledajte Ocenjivanje razgovora).
{
"eventId": "1b4c6d8e-5f0a-4b2c-8d3e-4f7a9b1c3d5e",
"eventType": "conversation.rated",
"timestamp": "2026-08-13T14:31:09Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"rating": "POSITIVE"
}
}
rating-POSITIVEiliNEGATIVE. Poništavanje date ocene ne pokreće događaj, tako da nikada ne dobijate neutralnu vrednost.
conversation.summarized
Aktivira se kada ChatLab generiše rezime završenog razgovora.
{
"eventId": "4d7e9f1a-6b2c-4d4e-9f0a-5b8c0d2e4f6a",
"eventType": "conversation.summarized",
"timestamp": "2026-08-13T14:45:00Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"summary": "Visitor asked about shipping to Canada and delivery times. The bot confirmed availability and quoted 5-7 business days. Visitor left satisfied.",
"language": "en"
}
}
summary- tekst generisanog rezimea. Rezimei se kreiraju nekoliko minuta nakon što razgovor postane neaktivan, pa ovaj događaj stiže kasnije u odnosu na ostale događaje iz razgovora.language- ISO kod jezika na kom je rezime napisan, što odgovara jeziku razgovora.
client.summarized
Aktivira se kada ChatLab osveži AI profil klijenta. Profil se ponovo gradi na osnovu prethodnog profila i rezimea razgovora koji se upravo završio, tako da ovaj događaj sledi nakon conversation.summarized za isti razgovor. Klijenti se identifikuju putem imejl adrese, zbog čega se adresa ponavlja na najvišem nivou objekta data.
{
"eventId": "b5d8f1a3-7c2e-4d9b-a6f0-1e3c5a7b9d2f",
"eventType": "client.summarized",
"timestamp": "2026-08-18T09:12:04Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"clientEmail": "jane.doe@example.com",
"client": {
"email": "jane.doe@example.com",
"name": "Jane Doe",
"phone": "+1 555 0123",
"countryCode": "PL",
"ipAddress": "83.12.44.7"
},
"clientSummary": "Returning customer interested in international shipping. Asked about delivery times to Canada twice and about return costs once."
}
}
clientEmail- identifikator za uparivanje klijenta sa vašim CRM sistemom. Ima vrednostnullza anonimne posetioce koji nikada nisu ostavili adresu, a događaj se i za njih aktivira - preskočite ove isporuke ako se vaša integracija oslanja na imejl.client- kontakt zapis koji ChatLab ima o toj osobi:email,name,phone,countryCodeiipAddress. Svaki ključ je uvek prisutan; nepoznate vrednosti sunull.clientSummary- ceo tekst profila kao običan tekst, a ne razlika (diff). On zamenjuje celokupan prethodni rezime, pa ga treba sačuvati prepisivanjem postojećeg sadržaja umesto dopisivanjem.- Profil se ponovo gradi samo za botove koji imaju omogućenu funkciju memorije razgovora (chat memory) i samo za razgovore koji su bili neaktivni dovoljno dugo da bi dobili rezime - očekujte ovaj događaj nekoliko minuta nakon završetka razgovora, a ne trenutno.
live_chat.requested
Aktivira se kada AI preda razgovor funkciji Live Chat, bilo zato što je posetilac zatražio operatera ili zato što je bot procenio da je čovek neophodan.
{
"eventId": "7a0b2c4d-8e3f-4a5b-b0c1-6d9e1f3a5b7c",
"eventType": "live_chat.requested",
"timestamp": "2026-08-13T14:33:20Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"requestedBy": "AI"
}
}
requestedBy- trenutno uvekAI, jer preusmeravanje uvek pokreće akcija za Live Chat samog bota, uključujući i situacije kada posetilac to zatraži sopstvenim rečima. Tretirajte ovo polje kao otvorenu enumeraciju: obradite nepoznate vrednosti umesto da se oslanjate isključivo naAI.- Ovaj događaj samo označava da je prenos zatražen, ali ne i da je operater preuzeo razgovor. Za to sačekajte događaj
live_chat.started.
live_chat.started
Aktivira se kada se operater pridruži i sesija ćaskanja uživo zaista započne.
{
"eventId": "0c3d5e7f-9a4b-4c6d-a1b2-7e0f2a4b6c8d",
"eventType": "live_chat.started",
"timestamp": "2026-08-13T14:33:55Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {}
}
- Objekat
dataje namerno prazan. Sve što vam je potrebno nalazi se u omotnici:botIdidentifikuje četbota, aconversationId/sessionIdpovezuju događaj sa razgovorom za koji ste već primililive_chat.requested.
live_chat.ended
Aktivira se kada se sesija ćaskanja uživo završi.
{
"eventId": "2e5f7a9b-0c5d-4e7f-b2c3-8f1a3b5c7d9e",
"eventType": "live_chat.ended",
"timestamp": "2026-08-13T14:52:41Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"durationSeconds": 1126
}
}
durationSeconds- vreme koje je operater proveo u razgovoru, računajući od trenutka početka sesije. Polje je izostavljeno u retkim situacijama kada se sesija završi a da nikada nije formalno započeta.
ai_action.executed
Aktivira se svaki put kada bot izvrši AI akciju - poziv integracije kojom upravlja platforma ili prilagođenu API funkciju. Ovo je događaj visokog intenziteta: aktivan e-commerce bot može izvršiti stotine akcija dnevno, a samo jedna poruka posetioca može pokrenuti nekoliko njih. Pretplatite se na njega na namenskoj krajnjoj tački ili se uverite da vaš prijemnik može da podnese toliki obim.
{
"eventId": "5f8a0b2c-1d6e-4f8a-c3d4-9a2b4c6d8e0f",
"eventType": "ai_action.executed",
"timestamp": "2026-08-13T14:21:03Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"actionName": "search_products",
"status": "SUCCESS",
"durationMs": 842,
"errorMessage": null
}
}
actionName- naziv izvršene akcije onako kako je AI vidi, na primersearch_productsza integraciju kojom upravlja sistem ili naziv koji ste dodelili prilagođenoj API akciji.status-SUCCESSiliERROR.durationMs- vreme trajanja akcije u milisekundama. Korisno za uočavanje spore integracije pre nego što se posetioci požale.errorMessage- razlog neuspeha, popunjava se samo kada jestatusjednakERROR; u suprotnom jenull.
webhook.test
Šalje se klikom na dugme Send sample event (Pošalji probni događaj) kada pokrenete običnu proveru povezivanja. Potpisuje se potpuno isto kao stvarni događaj.
{
"eventId": "9b2c4d6e-3f8a-4b0c-d5e6-0b3c5d7e9f1a",
"eventType": "webhook.test",
"timestamp": "2026-08-13T14:10:00Z",
"botId": 1234,
"botName": "Support Bot",
"conversationId": "conv_a1b2c3",
"sessionId": "sess_x9y8z7",
"data": {
"message": "Test delivery from ChatLab"
}
}
message- fiksni tekst, uvek isti. Polja omotnice sadrže probne vrednosti, tako da isporukuwebhook.testnikada ne treba tretirati kao stvarne podatke.- Ovo je jedini tip događaja na koji se ne možete pretplatiti u podešavanjima krajnje tačke: šalje se na zahtev iz kontrolne table i uvek stiže na krajnju tačku na koju ste kliknuli, bez obzira na to koje događaje ona sluša.
Bezbednost: verifikacija isporuka
Svaka isporuka sadrži četiri zaglavlja:
| Zaglavlje | Vrednost |
|---|---|
X-ChatLab-Signature |
sha256=<hex hmac> - HMAC-SHA256 potpis tela zahteva |
X-ChatLab-Timestamp |
Unix vreme u sekundama kada je isporuka potpisana |
X-ChatLab-Event |
Tip događaja, npr. lead.created |
X-ChatLab-Delivery |
Jedinstveni ID isporuke, jednak vrednosti eventId u telu zahteva |
Potpis se računa kao HMAC-SHA256 nad stringom {timestamp}.{rawBody} koristeći tajni ključ vaše krajnje tačke (endpoint secret), gde je {timestamp} vrednost zaglavlja X-ChatLab-Timestamp, a {rawBody} sirovo, neobrađeno telo zahteva. Uvek vršite verifikaciju u odnosu na sirove bajtove - ponovna serijalizacija raščlanjenog JSON-a promeniće redosled bajtova i poništiti ispravnost potpisa.
Da biste se zaštitili od napada ponavljanjem (replay attacks), odbijte isporuke čiji je X-ChatLab-Timestamp stariji od 5 minuta.
Node.js
const crypto = require('crypto');
function verifyChatLabSignature(req, secret) {
const signature = req.headers['x-chatlab-signature'];
const timestamp = req.headers['x-chatlab-timestamp'];
if (!signature || !timestamp) return false;
// Reject stale deliveries (older than 5 minutes)
const ageSeconds = Math.abs(Date.now() / 1000 - Number(timestamp));
if (ageSeconds > 300) return false;
// rawBody must be the raw request body bytes, not re-serialized JSON.
// With Express: app.use(express.json({ verify: (req, res, buf) => { req.rawBody = buf; } }))
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + req.rawBody)
.digest('hex');
const a = Buffer.from(signature);
const b = Buffer.from(expected);
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
PHP
<?php
function verifyChatLabSignature(string $secret): bool
{
$signature = $_SERVER['HTTP_X_CHATLAB_SIGNATURE'] ?? '';
$timestamp = $_SERVER['HTTP_X_CHATLAB_TIMESTAMP'] ?? '';
if ($signature === '' || $timestamp === '') {
return false;
}
// Reject stale deliveries (older than 5 minutes)
if (abs(time() - (int) $timestamp) > 300) {
return false;
}
$rawBody = file_get_contents('php://input');
$expected = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $rawBody, $secret);
return hash_equals($expected, $signature);
}
Ako verifikacija ne uspe, odgovorite sa 401 i odbacite podatke. Nikada nemojte obrađivati neverifikovane isporuke - svako ko sazna vaš URL može na njega poslati proizvoljan JSON putem POST zahteva.
Ponašanje prilikom isporuke
Razumite ove garancije pre nego što počnete sa integracijom webhook-ova:
- Odgovorite brzo. Vaša krajnja tačka mora odgovoriti u roku od 3 sekunde ili se isporuka smatra neuspešnom. Odmah pošaljite odgovor sa statusom
2xxi obradite podatke asinhrono (stavite ih u red čekanja, a zatim potvrdite prijem) - nemojte izvršavati CRM pozive ili upise u bazu podataka pre slanja odgovora. - Pošalji i zaboravi, najviše jednom (fire-and-forget, at-most-once). Svaki događaj dobija tačno jedan pokušaj isporuke - ponovnih pokušaja nema. Ako vaša krajnja tačka nije dostupna, istekne joj vreme za odgovor ili vrati status koji nije 2xx, taj događaj je izgubljen i neće biti ponovo poslat. Webhook-ovi su obaveštenja, a ne replicirano skladište podataka: kada vam je potrebna garantovana potpunost, uskladite podatke pomoću Management API interfejsa ili izvoza vaših lead-ova.
- Sigurnosni prekidač (circuit breaker). Nakon 5 uzastopnih neuspelih isporuka za bota, isporuke za tog bota se pauziraju na 5 minuta. Događaji koji se dese tokom ove pauze se odbacuju, a evidencija isporuka prikazuje unose
CIRCUIT_OPENkako biste mogli tačno da vidite kada je i zašto saobraćaj bio zaustavljen. Isporuke preskočene zbog aktiviranog prekidača ne računaju se u automatsko onemogućavanje. - Automatsko onemogućavanje. Ova provera se pokreće u trenutku kada isporuka ne uspe, nikada po tajmeru. Ako isporuka ne uspe i nije bilo nijedne uspešne isporuke tokom 7 dana - računajući od poslednjeg uspeha ili od datuma kreiranja krajnje tačke ako nikada nije uspela - krajnja tačka se isključuje i dobijate obaveštenje putem e-pošte. Jedan jedini status
2xxu bilo kom trenutku resetuje to vreme. Krajnja tačka koja ne prima saobraćaj se nikada ne onemogućava jer nema neuspelih zahteva. Ponovo je omogućite u podešavanjima naloga (Account settings) čim popravite prijemnik; brojač neuspeha i oznaka za automatsko onemogućavanje se brišu kada je ponovo uključite, a događaji propušteni dok je bila isključena se ne nadoknađuju naknadno. - 410 Gone. Ako vaša krajnja tačka odgovori statusom HTTP
410 Gone, ChatLab je odmah onemogućava. Iskoristite ovo da programski ugasite krajnju tačku sa prijemne strane. - Idempotentnost. Duple isporuke se ne očekuju u normalnom radu, ali ako vaša obrada mora biti striktno idempotentna, uklonite duplikate pomoću polja
eventId(takođe dostupnog u zaglavljuX-ChatLab-Delivery).
Ograničenja
- Do 10 webhook krajnjih tačaka po nalogu.
- Zadržavanje evidencije isporuka: 14 dana. Stariji unosi se automatski uklanjaju.
Povezani članci
- Prikupljanje lead-ova - obrazac iza događaja
lead.created - Kontakt obrazac za ljudsku podršku - obrazac iza događaja
contact_form.submitted - Live Chat - proces iza događaja
live_chat.* - Ocenjivanje razgovora - palac nagore/nadole iza događaja
conversation.rated - AI Actions - integracije iza događaja
ai_action.executed - Chat API - povratni pozivi vidžeta u pregledaču (klijentska paralela webhook-ovima)
- Management API - REST API za upravljanje botovima i podatke o korišćenju