Prehľad webhookov
Webhooky umožňujú aplikácii ChatLab informovať vaše systémy v momente, keď sa v chatbotoch niečo stane. Namiesto dopytovania Management API alebo manuálneho exportu dát zaregistrujete HTTPS koncový bod a ChatLab naň v reálnom čase odošle podpísanú HTTP POST požiadavku - keď návštevník zanechá lead, odošle kontaktný formulár, ohodnotí konverzáciu, vyžiada si operátora alebo keď sa vykoná akcia AI.
Typické využitie:
- odosielanie nových leadov priamo do CRM v sekunde ich zachytenia
- upozornenie tímu v aplikácii Slack, keď návštevník požiada o live chat (živý chat)
- prenos hodnotení a zhrnutí konverzácií do vlastnej analytiky
- monitorovanie vykonávania AI akcie a upozornenia na chyby
Dostupnosť: webhooky sú k dispozícii od balíka Standard vyššie (funkcia: Webhooks).
Kde ich nakonfigurovať: v administrátorskej aplikácii otvorte Account settings -> Webhooks (Nastavenia účtu -> Webhooky - hneď vedľa sekcie Management API). Webhooky fungujú na úrovni účtu - jeden koncový bod môže prijímať udalosti zo všetkých vašich botov alebo z vyfiltrovanej podmnožiny.
Nastavenie koncového bodu
- Otvorte Account settings -> Webhooks a kliknite na Create endpoint (Vytvoriť koncový bod).
- Vyplňte formulár koncového bodu:
- Name (Názov) - označenie pre vašu orientáciu, napr. „CRM sync" alebo „Slack alerts".
- URL - HTTPS adresa, na ktorú bude ChatLab odosielať udalosti cez POST.
- Events (Udalosti) - vyberte typy udalostí, ktoré má tento koncový bod prijímať (pozrite si katalóg nižšie). Vyberajte iba to, čo naozaj potrebujete; udalosti s vysokým objemom ako
ai_action.executedmôžu generovať veľkú prevádzku. - Bot filter (Filter botov) (voliteľné) - obmedzte koncový bod na konkrétnych botov. Ak ho necháte prázdny, budete prijímať udalosti zo všetkých botov vo svojom účte.
- Custom form filter (Filter vlastných formulárov) (voliteľné) - smeruje odoslania jedného vlastného formulára na tento koncový bod. Zúži iba udalosť
custom_form.submitted; každá ďalšia odoberaná udalosť (leady, požiadavky na kontakt, konverzácie, live chat, akcie AI) sa doručuje bez ohľadu na toto nastavenie.
- Odošlite. Secret (tajný kľúč) koncového bodu sa zobrazí presne raz v potvrdzovacom dialógu - skopírujte si ho hneď a bezpečne uložte. Budete ho potrebovať na overenie podpisov (pozrite časť Bezpečnosť nižšie). V čitateľnej podobe ho neskôr už nemožno získať.
Každý koncový bod má tiež:
- Prepínač Enable/disable (Zapnúť/vypnúť) - pozastaví doručovanie bez odstránenia koncového bodu. Vypnuté koncové body udalosti ticho zahadzujú (nezaraďujú sa do frontu na neskôr).
- Send sample event (Odoslať ukážkovú udalosť) - doručí na vašu URL podpísanú testovaciu požiadavku, aby ste si overili prijímač od začiatku do konca. Pred odoslaním si môžete vybrať typ udalosti a upraviť vzorové hodnoty, aby váš obslužný program videl realistické dáta. Test dorazí ako bežné doručenie s parametrom
eventTypezodpovedajúcim vášmu výberu (alebo akowebhook.testpre jednoduchú kontrolu spojenia). - Roll secret (Obnoviť tajný kľúč) - vygeneruje nový tajný kľúč a zneplatní pôvodný. Použite to, ak mohlo dôjsť k úniku tajného kľúča. Nový kľúč sa znova zobrazí iba raz. Pred obnovením aktualizujte svoj prijímač, inak doručenia na vašej strane zlyhajú pri overovaní podpisu.
- Delivery log (Záznam doručovania) - zoznam nedávnych doručení pre daný koncový bod s časovou pečiatkou, typom udalosti, HTTP stavom vráteným vaším serverom a časom odozvy. Sú tu viditeľné neúspešné doručenia aj pozastavenia spôsobené mechanizmom circuit breaker. Záznam sa uchováva 14 dní.
Obálka udalosti
Každé doručenie je požiadavka HTTP POST s hlavičkou Content-Type: application/json. Telo má vždy rovnakú obálku; objekt data je špecifický pre daný typ udalosti:
{
"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- jedinečný identifikátor udalosti. Použite ho na deduplikáciu, ak vaše spracovanie musí byť idempotentné.eventType- jeden z nižšie popísaných typov; odosiela sa aj v hlavičkeX-ChatLab-Event.timestamp- čas vzniku udalosti v UTC vo formáte ISO 8601.botId/botName- bot, ku ktorému udalosť patrí.conversationId/sessionId- kontext konverzácie, ak je relevantný.
Katalóg udalostí
lead.created
Spúšťa sa, keď návštevník odošle svoje kontaktné údaje - cez formulár na zber leadov, úvodný formulár pred live chatom alebo vlastný formulár určený na zber leadov.
{
"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- spôsob zachytenia kontaktných údajov:LEAD_COLLECTION_FORM(formulár na zber leadov),LIVE_CHAT_FORM(úvodný formulár pred live chatom),CONVERSATION(AI získala údaje počas chatu),ADMIN_DATA_UPDATEaleboUPDATE_CLIENT_CONTEXT(upravené na strane ChatLabu). Odoslania formulára podpory človekom túto udalosť nikdy nespúšťajú - namiesto toho spúšťajúcontact_form.submitted.email,name,phone- kontaktné údaje namapované na záznam leadu.- Ak sa na zber leadov použije vlastný formulár, v poli
fieldssú zahrnuté všetky polia definované v tomto formulári v poradí podľa formulára, pričomformCodeName/formNameidentifikujú daný formulár. Pri klasickom formulári na leady sú obe hodnotynulla polefieldsje prázdne. - Každá položka v
fieldsmá tvar{name, value, type}.nameje technický názov poľa, ktorý sa nemení ani pri úpravách štítkov - použite ho na mapovanie do vášho CRM. - Pri poliach typu
multichoicejevaluepole (array) vybratých možností. Začiarkavacie polia (checkbox) sú samostatné položky s hodnotami"true"/"false". - Pri poliach typu
filejevalueodkaz na stiahnutie nahraného súboru; webhook nikdy neprenáša samotný obsah súboru. pageUrl- stránka, na ktorej sa návštevník nachádzal pri odoslaní.
contact_form.submitted
Spúšťa sa, keď návštevník odošle kontaktný formulár pre podporu človekom alebo vlastný formulár slúžiaci na kontaktovanie človeka.
{
"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, ktorú návštevník zanechal a na ktorú by mal váš tím podpory odpovedať.source-CUSTOM_FORM, ak je kontaktný formulár postavený na vlastnom formulári, aleboCONTACT_FORMpri vstavanom formulári.formCodeName/formName- identifikujú vlastný formulár stojaci za požiadavkou; pri vstavanom formulári sú obe hodnotynull.- Keď sa použije vlastný formulár, každé pole definované v tomto formulári je zahrnuté v
fields(rovnaký formát{name, value, type}ako prilead.created). Pri vstavanom kontaktnom formulári sú vyplnené ibaemailamessage,fieldsje prázdne pole a identifikátory formulára súnull. message- namapované pole správy alebo všetky vyplnené hodnoty spojené dohromady, ak formulár nemá samostatné pole pre správu.
custom_form.submitted
Spúšťa sa pri každom odoslaní vlastného formulára bez ohľadu na jeho účel. Upozorňujeme, že formuláre, ktorých účelom je zber leadov alebo kontaktovanie človeka, spúšťajú tiež svoju vyhradenú udalosť lead.created / contact_form.submitted - prihláste sa na odber jednej alebo druhej podľa toho, či chcete všeobecný alebo špecializovaný pohľad, a ak odoberáte obe, deduplikujte ich pomocou conversationId + timestamp.
{
"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- stabilný technický názov formulára, ktorý sa pri premenovaní formulára nemení; použite ho na smerovanie odoslaných dát vo vlastnom systéme.formNameje zobrazovaný názov pre návštevníkov.fieldspoužíva rovnaké položky{name, value, type}akolead.created: hodnoty multichoice sú polia (arrays), hodnoty file sú odkazy na stiahnutie.purpose-STANDALONE,LEAD_COLLECTIONaleboHUMAN_CONTACTpodľa toho, ako je formulár napojený na chatbota.
conversation.started
Spúšťa sa, keď návštevník odošle prvú správu novej konverzácie.
{
"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- presný text úvodnej správy návštevníka.null, ak bola konverzácia otvorená bez obsahu správy.chatSource- kanál, z ktorého konverzácia prišla:WIDGET,WHATSAPP,MESSENGER,VOICE,VOICE_PHONE,API,BOOKING,AIRBNBaleboIDOBOOKING.byAdmin-true, ak konverzácia pochádza z náhľadu chatbota v administrátorskom paneli ChatLab namiesto od skutočného návštevníka. Pomáha udržať vlastné testovacie chaty mimo vášho CRM.countryCode- kód krajiny ISO odvodený z IP adresy návštevníka,null, ak sa ho nepodarilo určiť.ipAddress- IP adresa návštevníka zaznamenaná službou ChatLab,null, ak nie je dostupná. Podľa nariadenia GDPR s ňou zaobchádzajte ako s osobným údajom a ukladajte ju iba vtedy, ak na to máte právny základ.
conversation.rated
Spúšťa sa, keď návštevník ohodnotí odpoveď bota palcom hore alebo dole (pozrite si Hodnotenie konverzácií).
{
"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-POSITIVEaleboNEGATIVE. Zrušenie hodnotenia túto udalosť nespúšťa, takže neutrálnu hodnotu nikdy nedostanete.
conversation.summarized
Spúšťa sa, keď ChatLab vygeneruje zhrnutie ukončenej konverzácie.
{
"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- text vygenerovaného zhrnutia. Zhrnutia sa vytvárajú niekoľko minút po tom, čo konverzácia prestane byť aktívna, takže táto udalosť dorazí neskôr ako ostatné udalosti konverzácie.language- ISO kód jazyka, v ktorom bolo zhrnutie napísané (zodpovedá jazyku konverzácie).
client.summarized
Spúšťa sa, keď ChatLab aktualizuje profil klienta vytvorený pomocou AI. Profil sa zostavuje z predchádzajúceho profilu a zhrnutia práve ukončenej konverzácie, takže táto udalosť nasleduje po conversation.summarized pre rovnakú konverzáciu. Klienti sa identifikujú e-mailom, a preto sa adresa opakuje na najvyššej úrovni objektu 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- identifikátor na spárovanie klienta s vaším vlastným CRM. Pri anonymných návštevníkoch, ktorí nikdy nezanechali adresu, má hodnotunull, pričom udalosť sa pre nich stále spúšťa - tieto doručenia preskočte, ak je vaša integrácia naviazaná na e-mail.client- kontaktný záznam, ktorý ChatLab o tejto osobe uchováva:email,name,phone,countryCodeaipAddress. Každý kľúč je vždy prítomný; neznáme hodnoty súnull.clientSummary- celý text profilu ako čistý text, nejde o rozdiel (diff). Nahrádza pôvodné zhrnutie, preto ho ukladajte prepísaním, nie pripájaním na koniec.- Profil sa obnovuje iba pri botoch so zapnutou pamäťou chatu a len pri konverzáciách, ktoré boli neaktívne dostatočne dlho na vytvorenie zhrnutia - túto udalosť očakávajte niekoľko minút po skončení konverzácie, nie okamžite.
live_chat.requested
Spúšťa sa, keď AI odovzdá konverzáciu do live chatu, buď preto, že návštevník požiadal o človeka, alebo preto, že bot vyhodnotil zásah človeka ako potrebný.
{
"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- v súčasnosti vždyAI, pretože odovzdanie vždy iniciuje akcia live chatu bota, a to aj vtedy, keď o to návštevník požiada vlastnými slovami. Považujte to za otvorený enum: ošetrite aj neznáme hodnoty namiesto striktného overovania hodnotyAI.- Udalosť hovorí o tom, že bolo odovzdanie vyžiadané, nie že ho už operátor prevzal. Na to počkajte na udalosť
live_chat.started.
live_chat.started
Spúšťa sa, keď sa pripojí operátor a relácia živého chatu sa skutočne zač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": {}
}
dataje zámerne prázdne. Všetko potrebné je v obálke:botIdidentifikuje chatbota aconversationId/sessionIdprepájajú udalosť s konverzáciou, pre ktorú ste už prijalilive_chat.requested.
live_chat.ended
Spúšťa sa po ukončení relácie živého chatu.
{
"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- čas v sekundách, počas ktorého bol operátor v konverzácii, počítaný od okamihu začiatku relácie. Pole sa vynecháva v zriedkavom prípade, keď sa relácia skončí bez toho, aby bola vôbec spustená.
ai_action.executed
Spúšťa sa pri každom vykonaní AI akcie botom - pri volaní spravovanej integrácie alebo vlastnej funkcie API. Ide o vysokoobjemovú udalosť: aktívny e-commerce bot môže vykonať stovky akcií denne a jedna odpoveď návštevníka môže spustiť hneď niekoľko akcií. Prihláste sa na jej odber na vyhradenom koncovom bode alebo sa uistite, že váš prijímač takýto objem zvládne spracovať.
{
"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- názov vykonanej akcie tak, ako ho vidí AI, napríkladsearch_productspri spravovanej integrácii alebo názov, ktorý ste dali vlastnej API akcii.status-SUCCESSaleboERROR.durationMs- čas trvania akcie v milisekundách. Užitočné na odhalenie pomalej integrácie skôr, ako sa na ňu začnú sťažovať návštevníci.errorMessage- dôvod zlyhania, vyplnený iba vtedy, keď mástatushodnotuERROR; inak má hodnotunull.
webhook.test
Odosiela sa tlačidlom Send sample event pri spustení jednoduchej kontroly spojenia. Je podpísaná presne ako skutočná udalosť.
{
"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- fixný text, vždy rovnaký. Polia obálky nesú vzorové hodnoty, preto doručeniewebhook.testnikdy nepovažujte za skutočné dáta.- Ide o jediný typ udalosti, na ktorý sa na koncovom bode nedá prihlásiť: odosiela sa na požiadanie z administrátorského panelu a vždy dorazí na koncový bod, na ktorý ste klikli, bez ohľadu na to, aké udalosti počúva.
Bezpečnosť: overovanie doručení
Každé doručenie obsahuje štyri hlavičky:
| Hlavička | Hodnota |
|---|---|
X-ChatLab-Signature |
sha256=<hex hmac> - HMAC-SHA256 podpis payloadu |
X-ChatLab-Timestamp |
Unixový čas v sekundách, kedy bolo doručenie podpísané |
X-ChatLab-Event |
Typ udalosti, napr. lead.created |
X-ChatLab-Delivery |
Jedinečné ID doručenia, zhodné s eventId v tele |
Podpis sa počíta ako HMAC-SHA256 z reťazca {timestamp}.{rawBody} pomocou tajného kľúča vášho endpointu, kde {timestamp} je hodnota X-ChatLab-Timestamp a {rawBody} je surové, nespracované telo požiadavky. Vždy overujte voči surovým bajtom - opätovná serializácia naparsovaného JSON zmení postupnosť bajtov a zneplatní podpis.
Na ochranu pred replay útokmi odmietajte doručenia, ktorých X-ChatLab-Timestamp je starší ako 5 minút.
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);
}
Ak overenie zlyhá, odpovedzte stavom 401 a payload zahoďte. Nikdy nespracovávajte neoverené doručenia - ktokoľvek, kto zistí vašu URL, na ňu môže poslať ľubovoľný JSON cez POST.
Správanie doručovania
Pred budovaním riešení na webhookoch vezmite do úvahy tieto garancie:
- Odpovedajte rýchlo. Váš endpoint musí odpovedať do 3 sekúnd, inak sa doručenie považuje za neúspešné. Odpovedzte stavom
2xxokamžite a payload spracujte asynchrónne (zaradte ho do frontu a až potom potvrďte) - pred odoslaním odpovede nevykonávajte volania do CRM ani zápisy do databázy. - Fire-and-forget, najviac raz. Každá udalosť má presne jeden pokus o doručenie - žiadne opakované pokusy neexistujú. Ak je váš endpoint nedostupný, vyprší mu časový limit alebo vráti iný stav než 2xx, daná udalosť je stratená a znova sa nedoručí. Webhooky sú notifikácie, nie replikované dátové úložisko: ak potrebujete zaručenú úplnosť, zosúlaďte dáta cez Management API alebo exporty leadov.
- Circuit breaker. Po 5 po sebe idúcich neúspešných doručeniach pre daného bota sa doručovanie pre tohto bota pozastaví na 5 minút. Udalosti, ktoré nastanú počas tejto pauzy, sa zahodia a v protokole doručení sa zobrazia záznamy
CIRCUIT_OPEN, aby ste presne videli, kedy a prečo bola prevádzka potlačená. Doručenia preskočené z dôvodu otvoreného okruhu sa nezapočítavajú do automatického vypnutia. - Automatické vypnutie. Kontrola prebieha v okamihu zlyhania doručenia, nikdy nie na základe časovača. Ak doručenie zlyhá a počas 7 dní nedošlo k žiadnemu úspešnému doručeniu - počítané od posledného úspechu, alebo od dátumu vytvorenia endpointu, ak ešte nikdy neuspel - endpoint sa vypne a dostanete e-mailové upozornenie. Jediný kód
2xxkedykoľvek tento odpočet resetuje. Endpoint, na ktorý nechodí žiadna prevádzka, sa nikdy nevypne, pretože pri ňom nič nezlyháva. Keď svoj prijímač opravíte, znova ho aktivujte v Account settings (Nastavenia účtu); počítadlo zlyhaní a časová pečiatka automatického vypnutia sa pri opätovnom zapnutí vymažú a udalosti zmeškané počas neaktivity sa spätne nedopĺňajú. - 410 Gone. Ak váš endpoint odpovie kódom HTTP
410 Gone, ChatLab ho okamžite vypne. Toto využite na programové vyradenie endpointu z prevádzky na strane príjemcu. - Idempotencia. Pri bežnej prevádzke sa duplicitné doručenia neočakávajú, no ak vaše spracovanie musí byť striktne idempotentné, deduplikujte podľa
eventId(dostupné aj v hlavičkeX-ChatLab-Delivery).
Limity
- Maximálne 10 webhook endpointov na účet.
- Doba uchovávania protokolu doručení: 14 dní. Staršie záznamy sa odstraňujú automaticky.
Súvisiace články
- Zber leadov - formulár na pozadí udalosti
lead.created - Kontaktný formulár ľudskej podpory - formulár na pozadí udalosti
contact_form.submitted - Live Chat - proces na pozadí udalostí
live_chat.* - Hodnotenie konverzácie - palce hore/dole na pozadí udalosti
conversation.rated - AI Actions - integrácie na pozadí udalosti
ai_action.executed - Chat API - spätné volania widgetu v prehliadači (klientsky náprotivok k webhookom)
- Management API - REST API na správu botov a údaje o využití