Přehled webhooků
Webhooky umožňují službě ChatLab upozornit vaše systémy v okamžiku, kdy se v chatbotech něco stane. Místo pravidelného dotazování Management API nebo ručního exportu dat zaregistrujete HTTPS koncový bod a ChatLab na něj v reálném čase odešle podepsaný HTTP POST - když návštěvník zanechá lead, odešle kontaktní formulář, ohodnotí konverzaci, požádá o lidského operátora nebo když proběhne akce AI.
Typická využití:
- odesílání nových leadů přímo do vašeho CRM ihned po jejich zachycení
- upozornění týmu ve Slacku, když návštěvník požádá o live chat (živý chat)
- předávání hodnocení a shrnutí konverzací do vašich vlastních analytických nástrojů
- sledování spouštění akcí AI a upozorňování na chyby
Dostupnost: webhooky jsou dostupné od plánu STANDARD výše (funkce: Webhooks).
Kde je nastavit: v administrátorské aplikaci otevřete Account settings -> Webhooks (Nastavení účtu -> Webhooky; hned vedle sekce Management API). Webhooky fungují na úrovni účtu - jeden koncový bod může přijímat události ze všech vašich botů nebo pouze z vybrané filtrované skupiny.
Nastavení koncového bodu
- Otevřete Account settings -> Webhooks a klikněte na Create endpoint (Vytvořit koncový bod).
- Vyplňte formulář koncového bodu:
- Name (Název) - označení pro vaši vlastní potřebu, např. „Synchronizace CRM" nebo „Upozornění do Slacku".
- URL - adresa HTTPS, na kterou bude ChatLab odesílat události metodou POST.
- Events (Události) - vyberte typy událostí, které má tento koncový bod přijímat (viz katalog níže). Zvolte pouze ty, které skutečně potřebujete; události s vysokou frekvencí jako
ai_action.executedmohou generovat značný provoz. - Bot filter (volitelné) - omezí koncový bod na konkrétní boty. Ponechte prázdné, pokud chcete přijímat události ze všech botů na svém účtu.
- Custom form filter (volitelné) - směruje odeslání jednoho vlastního formuláře na tento koncový bod. Zužuje pouze událost
custom_form.submitted; všechny ostatní odebírané události (leady, žádosti o kontakt, konverzace, live chat, akce AI) jsou doručovány bez ohledu na toto nastavení.
- Potvrďte odeslání. Tajný klíč (secret) koncového bodu se zobrazí přesně jednou v potvrzovacím okně - ihned si jej zkopírujte a bezpečně uložte. Budete jej potřebovat k ověřování podpisů (viz část Zabezpečení níže). V čitelné podobě jej již později nelze znovu získat.
Každý koncový bod dále obsahuje:
- Přepínač aktivace/deaktivace (Enable/disable toggle) - pozastaví doručování bez nutnosti smazat koncový bod. Vypnuté koncové body události tiše zahazují (nezařazují se do fronty na později).
- Send sample event (Odeslat ukázkovou událost) - odešle podepsaný testovací požadavek na vaši URL adresu, abyste si mohli ověřit funkčnost celého řetězce přijímače. Můžete si vybrat typ události a před odesláním upravit ukázkové hodnoty, aby váš handler zpracoval realistická data. Test dorazí jako běžné doručení s parametrem
eventTypeodpovídajícím vaší volbě (nebo jakowebhook.testpro prosté ověření konektivity). - Roll secret (Pravidelná obměna tajného klíče) - vygeneruje nový secret a zneplatní ten starý. Tuto možnost využijte, pokud došlo k úniku tajného klíče. Nový secret se opět zobrazí pouze jednou. Před jeho obměnou nezapomeňte aktualizovat svůj přijímač, jinak u doručovaných požadavků selže ověření podpisu na vaší straně.
- Delivery log (Protokol doručení) - seznam nedávných doručení pro daný koncový bod s časovým razítkem, typem události, HTTP stavem vráceným vaším serverem a dobou odezvy. Zde jsou viditelná i neúspěšná doručení a pozastavení vyvolaná pojistkou proti přetížení (circuit breaker). Protokol se uchovává po dobu 14 dnů.
Obálka události (envelope)
Každé doručení probíhá formou HTTP POST s hlavičkou Content-Type: application/json. Tělo má vždy stejnou obálku; objekt data se liší podle typu události:
{
"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- unikátní pro každou událost. Využijte jej k deduplikaci, pokud vaše zpracování musí být idempotentní.eventType- jeden z níže popsaných typů; odesílá se také v hlavičceX-ChatLab-Event.timestamp- čas vzniku události ve formátu ISO 8601 UTC.botId/botName- bot, ke kterému událost patří.conversationId/sessionId- kontext konverzace, je-li k dispozici.
Katalog událostí
lead.created
Spustí se ve chvíli, kdy návštěvník odešle své kontaktní údaje - prostřednictvím formuláře pro sběr leadů, úvodního formuláře před live chatem nebo vlastního formuláře sloužícího ke sběru leadů.
{
"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- způsob získání kontaktních údajů:LEAD_COLLECTION_FORM(formulář pro sběr leadů),LIVE_CHAT_FORM(úvodní formulář live chatu),CONVERSATION(AI údaje zachytila během konverzace),ADMIN_DATA_UPDATEneboUPDATE_CLIENT_CONTEXT(upraveno na straně ChatLabu). Odeslání formuláře pro lidskou podporu tuto událost nikdy nespouští - místo toho vyvolácontact_form.submitted.email,name,phone- kontaktní údaje namapované do záznamu leadu.- Pokud se pro sběr leadů použije vlastní formulář, pole
fieldsobsahuje každé pole definované v tomto formuláři v pořadí z formuláře aformCodeName/formNameidentifikují formulář. U klasického formuláře pro sběr leadů mají obě hodnoty hodnotunulla polefieldsje prázdné pole. - Každá položka v
fieldsmá formát{name, value, type}.namepředstavuje technický název pole, který se nemění ani při úpravách popisku - použijte jej pro mapování do vašeho CRM. - U polí typu
multichoicejevaluepolem (array) vybraných možností. Zaškrtávací pole představují samostatné položky s hodnotami"true"/"false". - U polí typu
filejevalueodkazem ke stažení nahraného souboru; webhook samotný obsah souboru nikdy nepřenáší. pageUrl- stránka, na které se návštěvník při odeslání nacházel.
contact_form.submitted
Spustí se ve chvíli, kdy návštěvník odešle kontaktní formulář pro lidskou podporu nebo vlastní formulář určený pro kontakt s člověkem.
{
"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 zadaná návštěvníkem, na kterou by měl váš tým podpory odpovědět.source- hodnotaCUSTOM_FORM, pokud je kontaktní formulář tvořen vlastním formulářem, neboCONTACT_FORMu výchozího vestavěného formuláře.formCodeName/formName- identifikují vlastní formulář za požadavkem; u výchozího formuláře mají obě hodnoty hodnotunull.- Při použití vlastního formuláře jsou v
fieldsobsažena všechna pole definovaná v tomto formuláři (ve stejném formátu{name, value, type}jako ulead.created). U vestavěného kontaktního formuláře se vyplňují pouze poleemailamessage,fieldsje prázdné pole a identifikátory formuláře mají hodnotunull. message- namapované pole zprávy nebo všechny vyplněné hodnoty spojené dohromady, pokud formulář samostatné pole pro zprávu nedefinuje.
custom_form.submitted
Spustí se při každém odeslání vlastního formuláře bez ohledu na jeho účel. Upozorňujeme, že formuláře, jejichž účelem je sběr leadů nebo kontaktování člověka, navíc spouštějí svou vyhrazenou událost lead.created / contact_form.submitted - přihlaste se k odběru jedné nebo druhé podle toho, zda chcete obecný nebo specializovaný přehled, a pokud odebíráte obě, provádějte deduplikaci podle 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- stálý systémový název formuláře, který se nemění při přejmenování formuláře; slouží ke směrování odeslaných dat ve vašem vlastním systému.formNameje zobrazovaný název viditelný pro návštěvníky.fieldspoužívá stejné položky{name, value, type}jakolead.created: vícenásobné volby jsou pole hodnot, soubory jsou odkazy ke stažení.purpose-STANDALONE,LEAD_COLLECTIONneboHUMAN_CONTACTpodle toho, jak je formulář v chatbotu zapojen.
conversation.started
Spustí se ve chvíli, kdy návštěvník odešle první zprávu nové konverzace.
{
"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- přesný text úvodní zprávy návštěvníka. Hodnotanull, pokud byla konverzace zahájena bez textu zprávy.chatSource- kanál, přes který konverzace přišla:WIDGET,WHATSAPP,MESSENGER,VOICE,VOICE_PHONE,API,BOOKING,AIRBNBneboIDOBOOKING.byAdmin- hodnotatrue, pokud konverzace pochází z náhledu chatbota v administrátorském panelu ChatLabu a ne od skutečného návštěvníka. Využijte tento údaj k odfiltrování vlastních testovacích chatů z CRM.countryCode- kód země podle ISO určený z IP adresy návštěvníka;null, pokud se jej nepodařilo zjistit.ipAddress- IP adresa návštěvníka zjištěná ChatLabem;null, pokud není dostupná. Podle nařízení GDPR jde o osobní údaj, ukládejte jej proto pouze v případě, že k tomu máte právní základ.
conversation.rated
Spustí se ve chvíli, kdy návštěvník ohodnotí odpověď bota palcem nahoru nebo dolů (viz Hodnocení konverzace).
{
"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-POSITIVEneboNEGATIVE. Zrušení hodnocení tuto událost nespouští, neutrální hodnotu tedy nikdy neobdržíte.
conversation.summarized
Spustí se ve chvíli, kdy ChatLab vygeneruje shrnutí ukončené konverzace.
{
"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- vygenerovaný text shrnutí. Shrnutí vznikají několik minut poté, co konverzace přejde do neaktivity, proto tato událost přichází později než ostatní události konverzace.language- kód jazyka podle ISO, ve kterém bylo shrnutí vytvořeno; odpovídá jazyku konverzace.
client.summarized
Spustí se ve chvíli, kdy ChatLab aktualizuje profil klienta vytvořený pomocí AI. Profil se znovu sestavuje z předchozího profilu a shrnutí právě ukončené konverzace, tato událost tedy navazuje na conversation.summarized ze stejné konverzace. Klienti jsou identifikováni e-mailem, proto se adresa opakuje přímo na nejvyšší ú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 sloužící ke spárování klienta s vaším vlastním CRM. U anonymních návštěvníků, kteří adresu nikdy nezadali, má hodnotunull(i pro ně se však událost odesílá - tato doručení přeskočte, pokud je vaše integrace navázána na e-mail).client- záznam kontaktu, který ChatLab o dané osobě eviduje:email,name,phone,countryCodeaipAddress. Každý z klíčů je přítomen vždy; neznámé hodnoty mají hodnotunull.clientSummary- kompletní text profilu v prostém textu, nejedná se o rozdílový zápis (diff). Nahrazuje jakékoli předchozí shrnutí, ukládejte jej proto přepsáním původních dat, nikoli přidáváním na konec.- Profil se znovu vytváří pouze u botů s aktivní funkcí paměť chatu a pouze u konverzací, které byly neaktivní dostatečně dlouho na to, aby došlo k vytvoření shrnutí - tuto událost očekávejte několik minut po skončení konverzace, nikoli okamžitě.
live_chat.requested
Spustí se ve chvíli, kdy AI předá konverzaci do live chatu (živého chatu) - buď proto, že si návštěvník vyžádal člověka, nebo proto, že bot sám vyhodnotil přítomnost operátora jako nezbytnou.
{
"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 současnosti vždyAI, protože předání je vždy vyvoláno akcí live chatu ze strany bota, a to i v případě, kdy o něj návštěvník požádá běžnými slovy. Pracujte s tímto polem jako s otevřeným výčtem: ošetřete neznámé hodnoty a nespoléhejte se striktně pouze na hodnotuAI.- Událost informuje o tom, že předání bylo vyžádáno, nikoli že jej operátor již převzal. Na samotné převzetí vyčkejte na událost
live_chat.started.
live_chat.started
Spustí se ve chvíli, kdy se operátor připojí a relace live chatu skutečně 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": {}
}
- Objekt
dataje záměrně prázdný. Všechny potřebné informace obsahuje obálka:botIdurčuje chatbota aconversationId/sessionIdpropojují událost s konverzací, pro kterou jste již obdrželilive_chat.requested.
live_chat.ended
Spustí se ve chvíli, kdy relace live chatu skončí.
{
"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- celková doba přítomnosti operátora v konverzaci počítaná od okamžiku zahájení relace. Ve vzácných případech, kdy relace skončí, aniž by byla reálně zahájena, se toto pole vynechává.
ai_action.executed
Spustí se při každém provedení akce AI botem - ať už jde o volání spravované integrace nebo vlastní funkci API. Jedná se o událost s velmi vysokou frekvencí: aktivní e-commerce bot může provést stovky akcí denně a jediný dotaz návštěvníka jich může vyvolat několik. Přihlaste se k jejímu odběru na vyhrazeném koncovém bodu, případně se ujistěte, že váš přijímač zvládne takový objem zpracovat.
{
"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ázev provedené akce z pohledu AI, napříkladsearch_productsu spravované integrace nebo název, který jste přiřadili vlastní akci API.status-SUCCESSneboERROR.durationMs- doba provádění akce v milisekundách. Pomáhá odhalit pomalou integraci dříve, než na ni začnou upozorňovat návštěvníci.errorMessage- důvod selhání vyplněný pouze v případě, kdy mástatushodnotuERROR; v opačném případě má hodnotunull.
webhook.test
Odesílá se stisknutím tlačítka Send sample event při provádění prosté kontroly konektivity. Požadavek je podepsán zcela shodně jako skutečná událost.
{
"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- neměnný text, který je vždy stejný. Pole obálky obsahují ukázkové hodnoty, proto doručení typuwebhook.testnikdy nepovažujte za skutečná data.- Jedná se o jediný typ události, k jehož odběru se u koncového bodu nelze přímo přihlásit: odesílá se na vyžádání z administrátorského panelu a vždy dorazí na koncový bod, u kterého jste na tlačítko klikli, bez ohledu na to, jaké události daný bod naslouchá.
Zabezpečení: ověřování doručení
Každé doručení nese čtyři hlavičky:
| Hlavička | Hodnota |
|---|---|
X-ChatLab-Signature |
sha256=<hex hmac> - podpis HMAC-SHA256 datové části (payloadu) |
X-ChatLab-Timestamp |
Unixový čas v sekundách, kdy bylo doručení podepsáno |
X-ChatLab-Event |
Typ události, např. lead.created |
X-ChatLab-Delivery |
Unikátní ID doručení, shodné s eventId v těle požadavku |
Podpis se počítá jako HMAC-SHA256 z řetězce {timestamp}.{rawBody} pomocí tajného klíče vašeho koncového bodu, kde {timestamp} je hodnota hlavičky X-ChatLab-Timestamp a {rawBody} je surové, nezpracované tělo požadavku. Vždy ověřujte oproti surovým bajtům - opětovná serializace zpracovaného JSON změní sekvenci bajtů a poruší podpis.
Pro ochranu před útoky typu replay (opakování požadavku) odmítněte doručení, jejichž X-ChatLab-Timestamp je starší než 5 minut.
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);
}
Pokud ověření selže, odpovězte kódem 401 a datovou část zahoďte. Neověřená doručení nikdy nezpracovávejte - kdokoli, kdo zjistí vaši URL adresu, na ni může poslat libovolný JSON přes metodu POST.
Chování při doručování
Než začnete na webhookách stavět, seznamte se s těmito pravidly:
- Odpovídejte rychle. Váš koncový bod musí odpovědět do 3 sekund, jinak se doručení považuje za neúspěšné. Odpovězte stavovým kódem
2xxokamžitě a datovou část zpracujte asynchronně (zařaďte ji do fronty a teprve poté potvrďte) - před odesláním odpovědi neprovádějte žádná volání CRM ani zápisy do databáze. - Fire-and-forget, nanejvýš jednou. Každá událost má přesně jeden pokus o doručení - neprobíhají žádné opakované pokusy. Pokud je váš koncový bod nedostupný, vyprší časový limit nebo vrátí jiný stav než 2xx, událost je ztracena a nebude znovu doručována. Webhooky slouží jako upozornění, nikoli jako replikované datové úložiště: pokud potřebujete zaručenou úplnost dat, proveďte synchronizaci s Management API nebo s exporty leadů.
- Jistič (circuit breaker). Po 5 po sobě jdoucích neúspěšných doručeních pro daného bota se doručování pro tohoto bota pozastaví na 5 minut. Události, které nastanou během této pauzy, se zahodí a v protokolu doručení se zobrazí záznamy
CIRCUIT_OPEN, abyste přesně viděli, kdy a proč byl provoz potlačen. Doručení přeskočená v důsledku sepnutého jističe se nezapočítávají do automatického vypnutí. - Automatické vypnutí. Kontrola probíhá v okamžiku, kdy doručení selže, nikdy podle časovače. Pokud doručení selže a za posledních 7 dní neproběhlo žádné úspěšné doručení - počítáno od posledního úspěchu, nebo od data vytvoření koncového bodu, pokud nikdy neuspěl - koncový bod se vypne a vy obdržíte e-mailové oznámení. Jediný kód
2xxv libovolném okamžiku tento odpočet vynuluje. Koncový bod, který nepřijímá žádný provoz, se nikdy nevypne, protože na něm nic neselhalo. Jakmile svůj přijímač opravíte, znovu jej povolte v Account settings (Nastavení účtu); počítadlo selhání a časové razítko automatického vypnutí se po opětovném zapnutí vymažou a události zmeškané během doby vypnutí se zpětně nedoplňují. - 410 Gone. Pokud váš koncový bod odpoví stavovým kódem HTTP
410 Gone, ChatLab jej okamžitě deaktivuje. To můžete využít k programovému vyřazení koncového bodu z provozu na přijímací straně. - Idempotence. Při běžném provozu se duplicitní doručení neočekávají, ale pokud vaše zpracování musí být striktně idempotentní, provádějte deduplikaci podle
eventId(k dispozici také v hlavičceX-ChatLab-Delivery).
Limity
- Až 10 koncových bodů pro webhooky na jeden účet.
- Uchovávání protokolů doručení: 14 dní. Starší záznamy se automaticky mažou.
Související články
- Lead collection (Sběr leadů) - formulář stojící za událostí
lead.created - Human Support Contact form (Kontaktní formulář na lidskou podporu) - formulář stojící za událostí
contact_form.submitted - Live Chat - proces stojící za událostmi
live_chat.* - Conversation rating (Hodnocení konverzace) - palce nahoru/dolů stojící za událostí
conversation.rated - AI Actions (Akce AI) - integrace stojící za událostí
ai_action.executed - Chat API - callbacky widgetu v prohlížeči (klientský protějšek k webhookům)
- Management API - REST API pro správu botů a data o využití