---
title: "Katalóg udalostí"
description: "Všetky typy udalostí webhookov, ktoré ThunderPhone odosiela."
---

Každé telo webhooku má pole `type`, ktorého hodnota je jedným z typov
udalostí na tejto stránke. Keď sa prihlásite na odber
[koncového bodu](/sk/webhooks/endpoints), pole `events` musí obsahovať
požadované typy udalostí (alebo byť prázdne, ak chcete odoberať všetko —
okrem udalostí pre jednotlivé ťahy [`telephony.turn`](#telephony-turn) /
[`web.turn`](#web-turn), ktoré sa doručujú iba koncovým bodom, ktoré ich
výslovne uvádzajú).

Tieto udalosti sa doručujú dvoma spôsobmi:

* **Doručenia do koncových bodov** sú vždy **neblokujúce** oznámenia
  s [opakovanými pokusmi](/sk/webhooks/overview): odpovedzte
  ľubovoľným stavom 2xx; obálka obsahuje `event_id` na deduplikáciu.
* **Blokujúce** výmeny prebiehajú iba v
  [staršom webhooku s jedinou URL](/sk/webhooks/overview): požiadavka na
  konfiguráciu [`telephony.incoming` / `web.incoming`](/sk/webhooks/call-incoming)
  (čísla v režime webhooku a kľúče widgetov, časový limit 10 s) a odoslanie
  [nástroja](/sk/tools/overview) v režime webhooku.
  Vaša odpoveď ovplyvňuje prebiehajúci hovor.

Príklady payloadov nižšie zobrazujú obálku koncového bodu v poradí prenosu
(kľúče sú zoradené abecedne: `data`, `event_id`, `type`); staršie doručenia
obsahujú rovnaké `data` bez `event_id`.

## Udalosti hovorov

### `telephony.incoming`

Odosiela sa, keď prichádzajúci hovor dorazí na jedno z vašich
[telefónnych čísel](/api-reference/phone-numbers). Doručenia na koncový bod sú
notifikácie typu fire-and-forget odosielané pri **každom** prichádzajúcom hovore bez ohľadu na to,
či je číslo nakonfigurované pre agenta alebo webhook. Čísla bez
priradeného agenta navyše dostanú **blokujúcu** konfiguračnú
požiadavku na staršom webhooku — úplnú schému
požiadavky / odpovede nájdete v
[`telephony.incoming` / `web.incoming`](/sk/webhooks/call-incoming).

```json
{
  "data": {
    "call_id": 987654321,
    "from_number": "+14155550199",
    "to_number": "+15551234567"
  },
  "event_id": "3f6b2ad0-1c9e-4a57-9f2b-8f6f0f9d2f11",
  "type": "telephony.incoming"
}
```

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý spracoval hovor, ak bol priradený |

### `telephony.complete`

Odosiela sa po skončení prichádzajúceho alebo odchádzajúceho telefonického hovoru. Neblokuje.
Obsahuje prepis, adresu URL nahrávky, ak je k dispozícii, a súhrn fakturácie. Schému
údajov nájdete v
[`telephony.complete` / `web.complete`](/sk/webhooks/call-complete).

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý spracoval hovor, ak bol priradený |

### `telephony.tool`

Odosiela sa po tom, ako telefonický hovor vyvolá
[funkčný nástroj](/sk/tools/overview). Neblokujúca notifikácia auditu —
nástroj už bol vykonaný v čase doručenia tejto udalosti; zahŕňa
vaše vlastné funkčné nástroje (nie vstavané nástroje, nástroje databázy znalostí,
pripojenia aplikácií ani nástroje MCP).

```json
{
  "data": {
    "arguments": { "date": "2026-04-21" },
    "call_id": 987654321,
    "from_number": "+14155550199",
    "response": {
      "response": { "available_slots": ["9:00 AM", "2:00 PM"] },
      "status": 200
    },
    "to_number": "+15551234567",
    "tool_name": "search_appointments"
  },
  "event_id": "1f0a7c3e-52d4-4a0e-8f4b-b1a6a1c0d9e2",
  "type": "telephony.tool"
}
```

`response` je výsledok vykonania: pri úspechu `{"status": <http status>,
"response": <your endpoint's JSON>}` alebo pri zlyhaní
`{"status": <status>, "error": "<message>"}`.

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý spracoval hovor, ak bol priradený |

### `telephony.turn`

Odosiela sa počas telefonického hovoru, keď **prebieha**, raz pre každý
úsek obsahujúci reč v okamihu jeho vzniku — hovorené dokončenia agenta a
prepísané úseky volajúceho. Umožňuje sledovať živú konverzáciu
prostredníctvom bežných webhookov namiesto dopytovania
[`GET /v1/calls/{call_id}/transcript`](/api-reference/calls#get-transcript).
Neblokuje.

<Note>
  **Vyžaduje sa explicitné prihlásenie na odber.** Na rozdiel od všetkých ostatných typov udalostí
  sa udalosti úsekov nikdy nedoručujú prostredníctvom prázdneho poľa `events`
  (odber všetkých udalostí). Koncový bod ich prijme iba vtedy, keď jeho zoznam
  `events` explicitne obsahuje `telephony.turn` / `web.turn`.
</Note>

```json
{
  "data": {
    "call_id": 987654321,
    "entry_type": "completion",
    "from_number": "+14155550199",
    "position": 7,
    "role": "assistant",
    "start_ms": 15200,
    "text": "How many employees does your company have?",
    "to_number": "+15551234567"
  },
  "event_id": "8d3f5a2c-7b1e-4c9a-b6d0-2e4f6a8c0d1e",
  "type": "telephony.turn"
}
```

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `position` | integer | Index úseku v histórii hovoru — stabilný identifikátor na zoraďovanie |
| `role` | string | `assistant` (reč agenta) alebo `user` (reč volajúceho) |
| `text` | string | Text prepisu úseku známy v čase odoslania |
| `entry_type` | string | Typ základnej položky histórie: `completion` (agent) alebo `user_turn` / `span` (volajúci) |
| `start_ms`, `end_ms` | integer | Posuny zvuku v ms od začiatku hovoru; sú prítomné iba vtedy, ak bolo časovanie prehrávania známe už v čase odoslania |

<Note>
  Doručenie prebieha aspoň raz a úseky môžu prísť **v nesprávnom poradí**:
  odstráňte duplicity podľa `event_id` obálky a zoraďte podľa `position`. Prepisy
  volajúceho sa môžu po odoslaní ešte spresniť; prepis
  [`telephony.complete`](/sk/webhooks/call-complete) po hovore je
  autoritatívny. Odosielajú sa iba hovorené úseky — volania nástrojov, šepoty a
  ďalšie interné položky sa v tomto prúde nikdy nezobrazia.
</Note>

### `web.incoming`

Webový ekvivalent `telephony.incoming`, odosielaný pri spustení relácie
[webového widgetu](/sk/widget/overview) alebo testovacieho hovoru mikrofónu v nástroji na vytváranie.
Doručenia na koncový bod sú notifikácie typu fire-and-forget pre každú webovú reláciu.
Publikovateľné kľúče v režime `mode="webhook"` navyše dostanú
**blokujúcu** konfiguračnú požiadavku na staršom webhooku — táto
blokujúca požiadavka má odlišnú štruktúru (`origin_domain`,
`publishable_key_prefix`; bez telefónnych čísel). Pozrite si
[`telephony.incoming` / `web.incoming`](/sk/webhooks/call-incoming).

```json
{
  "data": {
    "call_id": 987654322,
    "from_number": "web",
    "origin_domain": "https://example.com",
    "publishable_key_prefix": "pk_live_a1b2",
    "to_number": "+15551234567"
  },
  "event_id": "9a2b4c6d-8e0f-4a1b-9c2d-3e4f5a6b7c8d",
  "type": "web.incoming"
}
```

`from_number` má vždy doslovnú hodnotu `"web"`. Pri reláciách widgetu v režime webhooku
je `to_number` prázdne (číslo agenta relácie sa priradí
po konfigurácii); pri testovacích hovoroch mikrofónu v nástroji na vytváranie sú polia `origin_domain` a
`publishable_key_prefix` prázdne.

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý spracoval hovor, ak bol priradený |

### `web.complete`

Webový ekvivalent `telephony.complete`, zahŕňajúci hovory webového
widgetu (`direction: "web"`) a testovacie hovory mikrofónu v nástroji na vytváranie
(`direction: "test"`). Neblokuje. Má rovnakú štruktúru údajov ako
[`telephony.complete`](/sk/webhooks/call-complete), navyše s `origin_domain`,
pričom `from_number` je nastavené na `"web"`.

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý spracoval hovor, ak bol priradený |

<Note>
  Na staršom webhooku s jednou adresou URL sa testovacie hovory mikrofónu v nástroji na vytváranie
  historicky vykazujú ako `telephony.complete` — iba hovory s `direction:
  "web"` tam používajú typ `web.complete`. Systém koncových bodov
  mapuje webové aj testovacie hovory na `web.*`. Historické údaje môžu
  obsahovať staršie hodnoty `direction` `widget` alebo `mic`.
</Note>

### `web.tool`

Webový ekvivalent `telephony.tool`. Objekt `data` obsahuje
`origin_domain` namiesto `from_number` / `to_number`.

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý spracoval hovor, ak bol priradený |

### `web.turn`

Webový ekvivalent [`telephony.turn`](#telephony-turn),
zahŕňajúci hovory webového widgetu a testovacie hovory mikrofónu v nástroji na vytváranie. Má rovnakú štruktúru
údajov, pričom obsahuje `origin_domain` namiesto `from_number` / `to_number`.
Rovnako ako `telephony.turn` vyžaduje **explicitné prihlásenie na odber** —
nikdy sa nedoručuje prostredníctvom prázdneho poľa `events`.

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý spracoval hovor, ak bol priradený |

---

## Hlasové udalosti

Vytváranie vlastného hlasu prebieha asynchrónne. Tieto neblokujúce udalosti vám umožňujú
reagovať na konečný výsledok namiesto pravidelného dopytovania sa na
[endpoint podrobností klonu](/api-reference/custom-voices#list-and-retrieve-clones).

`voice.ready` a `voice.failed` sa doručujú iba na endpoint pre celú organizáciu s
`events: []`. Nemožno ich vybrať ako explicitné filtre udalostí.

### `voice.ready`

Odosiela sa, keď vlastný hlas dokončí spracovanie a možno ho priradiť
agentovi.

```json
{
  "data": {
    "voice": {
      "created_at": "2026-07-30T14:12:08.317Z",
      "display_name": "Support voice",
      "failure_reason": "",
      "gender": "female",
      "id": "cv_2f6f90b0e9a34ee8b39be7d1",
      "language": "en",
      "name": "custom:cv_2f6f90b0e9a34ee8b39be7d1",
      "status": "ready",
      "updated_at": "2026-07-30T14:13:31.605Z"
    }
  },
  "event_id": "2d5f0a61-e9b5-4a3c-b684-29d7d9e4b214",
  "type": "voice.ready"
}
```

### `voice.failed`

Odosiela sa, keď spracovanie vlastného hlasu skončí trvalým zlyhaním.

```json
{
  "data": {
    "reason": "audio sample could not be processed",
    "voice": {
      "created_at": "2026-07-30T14:12:08.317Z",
      "display_name": "Support voice",
      "failure_reason": "audio sample could not be processed",
      "gender": "female",
      "id": "cv_2f6f90b0e9a34ee8b39be7d1",
      "language": "en",
      "name": "custom:cv_2f6f90b0e9a34ee8b39be7d1",
      "status": "failed",
      "updated_at": "2026-07-30T14:13:31.605Z"
    }
  },
  "event_id": "3493e985-1a75-4f77-a10a-e74af440cd31",
  "type": "voice.failed"
}
```

| Pole | Typ | Popis |
|-------|------|-------------|
| `voice.id` | string | Verejné ID vlastného hlasu |
| `voice.name` | string | Hodnota hlasu agenta vo formáte `custom:<public_id>` |
| `voice.display_name` | string | Názov hlasu viditeľný pre organizáciu |
| `voice.language` | string | Kód jediného jazyka klonu |
| `voice.gender` | string | `male`, `female` alebo prázdny reťazec |
| `voice.status` | string | `ready` pre `voice.ready`; `failed` pre `voice.failed` |
| `voice.failure_reason` | string | Pri úspechu prázdne; pri zlyhaní podrobnosti o chybe spracovania |
| `voice.created_at`, `voice.updated_at` | timestamp | Časové pečiatky ISO 8601 |
| `reason` | string | Podrobnosti o zlyhaní; prítomné iba pri `voice.failed` |

---

## Udalosti kvality

### `call.graded`

Odosiela sa vždy, keď sa dokončí [spustenie hodnotenia AI](/api-reference/calls#ai-call-grading)
pre hovor. Neblokujúce.

```json
{
  "data": {
    "call_id": 987654321,
    "grade": {
      "call_outcome": "success",
      "created_at": "2026-04-20T18:25:11.002Z",
      "detected_issues": [],
      "graded_at": "2026-04-20T18:25:11.002Z",
      "grader_model": "heuristic-v1",
      "id": 5512,
      "score": 92,
      "status": "completed",
      "summary": "Caller asked about their policy and got a full answer…"
    }
  },
  "event_id": "7c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
  "type": "call.graded"
}
```

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý obslúžil hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý obslúžil hovor, ak bol priradený |
| `grade.id` | integer | ID hodnotenia |
| `grade.score` | integer \| null | 0–100 |
| `grade.call_outcome` | string | `success`, `failure`, `unknown` alebo `no_conversation` |
| `grade.summary` | string | Jednoparagrafové zhrnutie |
| `grade.detected_issues` | array | Reťazce problémov nájdené hodnotiteľom |
| `grade.status` | string | Vždy `completed` — odosielajú sa iba dokončené spustenia |
| `grade.grader_model` | string | Hodnotiteľ, ktorý vytvoril výsledok (napr. `heuristic-v1`) |
| `grade.graded_at`, `grade.created_at` | timestamp | |

<Note>
  Hovor môže byť hodnotený viackrát — po rýchlom heuristickom hodnotení
  často nasleduje úplné hodnotenie modelom po sprístupnení nahrávky
  a je možné aj manuálne opätovné hodnotenie. Každé dokončené spustenie
  odošle vlastnú udalosť `call.graded`; za rozhodujúci považujte najnovší
  údaj `graded_at`.
</Note>

### `call.data_extracted`

Odosiela sa vždy, keď sa úspešne dokončí extrakcia štruktúrovaných údajov vrátane
neskorého opakovania po `telephony.complete` / `web.complete` alebo manuálneho
opätovného spustenia prostredníctvom
[`POST /v1/calls/{call_id}/extract`](/api-reference/calls#run-data-extraction).
Neblokujúce.

V režime blokujúcej extrakcie udalosť dokončenia zvyčajne nečaká dlhšie
než 75-sekundový limit extrakcie. Ak sa proces pracovníka extrakcie
stratí, produkčné dokončovacie spracovanie (každých päť minút) uvoľní
dokončenie, ktorého `blocking_deadline_at` uplynul, skôr než spustí ďalší
pokus o extrakciu. Neskorší úspech sa doručí samostatne ako táto udalosť.

<Warning>
  Extrahované hodnoty predstavujú interpretáciu konverzácie modelom. Každá
  hodnota odlišná od null obsahuje citát, rolu hovoriaceho a index ťahu,
  z ktorých vychádzala, ako aj príznak overenia na úrovni spustenia. Výsledok
  overte pred prijatím rozhodnutí týkajúcich sa peňazí, identity alebo prístupu.
</Warning>

```json
{
  "data": {
    "call_id": 987654321,
    "agent_id": 12,
    "agent_name": "Acme intake",
    "extracted_data": {
      "status": "completed",
      "fields": {
        "customer_name": "Alex Morgan",
        "appointment_date": "2026-04-23"
      },
      "evidence": {
        "customer_name": {
          "quote": "My name is Alex Morgan",
          "speaker_role": "caller",
          "turn_index": 4
        },
        "appointment_date": {
          "quote": "April 23 works for me",
          "speaker_role": "caller",
          "turn_index": 7
        }
      },
      "verification": "verified",
      "field_reasons": {},
      "schema_version": "92850758e231a3c95a..."
    },
    "extracted_at": "2026-04-20T18:25:11.002Z",
    "model": "gemini-2.5-flash"
  },
  "event_id": "4d79ef1d-c2b1-4ed6-85b8-8326bd2895ef",
  "type": "call.data_extracted"
}
```

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý obslúžil hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý obslúžil hovor, ak bol priradený |
| `extracted_data.status` | string | Pre túto udalosť vždy `completed` |
| `extracted_data.fields` | object | Hodnoty s kľúčmi podľa nakonfigurovaných kľúčov polí extrakcie; nedostupné hodnoty sú `null` |
| `extracted_data.evidence` | object | Dôkazy s kľúčmi podľa poľa extrakcie. Hodnota odlišná od null obsahuje presný štrukturálne overený citát (najviac 1 000 znakov), `speaker_role` (`caller` alebo `agent`) a `turn_index`; dlhšie citáty vrátené modelom sa namiesto skrátenia odmietnu a dôkaz je `null` vždy, keď je jeho pole `null` |
| `extracted_data.verification` | string | `verified` iba vtedy, keď nezávislé overenie dôkazov vrátilo presne jeden platný verdikt pre každé kandidátne pole. `unavailable` znamená, že overenie zlyhalo, vypršal jeho časový limit, nemalo dostatočný rozpočet alebo vrátilo neplatný či neúplný výstup. Úplne nedostupné overenie zachová štrukturálne podložené hodnoty na kontrolu zákazníkom. Pri čiastočnom výstupe sa použijú platné verdikty a každý kandidát bez presne jedného platného verdiktu sa nastaví na hodnotu null |
| `extracted_data.field_reasons` | object | Dôvody s kľúčmi podľa polí, ktoré boli nastavené na null štrukturálnym podložením alebo nezávislým overovateľom |
| `extracted_data.schema_version` | string | Hash presnej schémy polí použitej pre túto extrakciu |
| `extracted_at` | timestamp | Čas dokončenia vo formáte ISO 8601 |
| `model` | string | Model použitý na extrakciu |

### `campaign.completed`

Odosiela sa raz, keď kampaň prejde zo stavu `running` do stavu `completed`,
či už sa skončil jej harmonogram alebo všetky kontakty dosiahli koncové stavy.
Opakované pokusy vykonávateľa neodošlú ďalšiu udalosť. Táto udalosť životného
cyklu na úrovni organizácie sa doručuje iba koncovým bodom v rozsahu organizácie,
nie koncovým bodom v rozsahu agenta. Neblokujúce.

```json
{
  "data": {
    "campaign_id": "3f6b2c9e-2a0d-4c63-b6d6-a708dc98f403",
    "name": "May win-back",
    "agent_id": 12,
    "status": "completed",
    "started_at": "2026-04-20T17:00:00Z",
    "completed_at": "2026-04-20T18:25:11Z",
    "counts": {
      "contacts_total": 150,
      "completed": 121,
      "failed": 11,
      "no_answer": 18,
      "remaining": 0
    }
  },
  "event_id": "8d8f52ce-6b46-423f-9dde-cea0b91ec135",
  "type": "campaign.completed"
}
```

Štyri počty výsledkov sa navzájom neprekrývajú a ich súčet sa rovná
`contacts_total`: `completed` obsahuje úspešné kontakty; `no_answer` obsahuje
neúspešné alebo vyčerpané kontakty v koncovom stave, ktorých konečným výsledkom
bola žiadna odpoveď; `failed` obsahuje všetky ostatné neúspešné alebo vyčerpané
kontakty v koncovom stave; a `remaining` obsahuje čakajúce, naplánované alebo
práve volané kontakty. Kontakt čakajúci na opakovanie je `remaining`, aj keď
jeho posledný pokus skončil bez odpovede. Prebiehajúce hovory sa zosúladia pred
jednorazovým snímkom dokončenia. `started_at` je nakonfigurovaný začiatok
kampane alebo čas vytvorenia kampane, ak nebol nakonfigurovaný začiatok.

### `issue.reported`

Odosiela sa pri vytvorení [hlásenia problému](/api-reference/issue-reports) —
buď ho používateľ vytvorí z ovládacieho panela (`source: "user"`), alebo ho
automaticky vytvorí hodnotenie hovoru (`source: "system"`). Neblokujúce.

```json
{
  "data": {
    "call_id": 987654321,
    "issue_report": {
      "created_at": "2026-04-20T18:25:11.002Z",
      "description": "Five-second silence before responding to the main question.",
      "id": 4321,
      "severity": "warning",
      "source": "system",
      "status": "open",
      "title": "Agent paused too long"
    }
  },
  "event_id": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
  "type": "issue.reported"
}
```

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý obslúžil hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý obslúžil hovor, ak bol priradený |
| `issue_report.severity` | string | `critical`, `warning` alebo `info` |
| `issue_report.status` | string | `open` alebo `resolved` |
| `issue_report.source` | string | `user` (vytvorené z ovládacieho panela) alebo `system` (vytvorené hodnotením) |

<Note>
  Opätovné hodnotenie hovoru znovu vytvorí jeho systémom generované hlásenia
  problémov, čím sa pre znovu vytvorené hlásenia opätovne odošle
  `issue.reported`. Ak chcete iba jedno upozornenie na každý základný problém,
  odstráňte duplicity podľa `call_id` + `title`.
</Note>

### `issue.escalated`

Odosiela sa, keď sa vzor problému odošle do ThunderPhone na kontrolu
zamestnancami: po výbere možnosti **Nahlásiť ThunderPhone**, alebo keď funkcia
Opraviť pomocou AI nedokáže potvrdiť opravu na strane zákazníka a problém
automaticky presmeruje. Túto udalosť prijímajú iba koncové body pre celú
organizáciu.

```json
{
  "data": {
    "automatic": false,
    "cluster_id": "7ac2844c-2df0-4fa8-a560-7378da649e19",
    "escalation_id": "ec99f52b-c8c0-41dd-a4f2-dd8a07b10894",
    "status": "open"
  },
  "event_id": "d8f8f420-7a42-45ba-bcf1-b747f9bbecda",
  "type": "issue.escalated"
}
```

| Pole | Typ | Popis |
|-------|------|-------------|
| `automatic` | boolean | `true` pre automatickú eskaláciu; `false` pre manuálnu eskaláciu |
| `cluster_id` | UUID | Eskalovaný vzor problému |
| `escalation_id` | UUID | Záznam eskalácie |
| `status` | string | `open` pri odoslaní udalosti |

Toto je upozornenie, nie balík dôkazov. Na prepojenie so vzorom problému
použite `cluster_id`. Pozrite si [Nahlásiť ThunderPhone](/sk/guides/issues).

---

## Udalosti testovacích hovorov

### `test-call.completed`

Odosiela sa, keď
[spustenie testovacieho hovoru](/api-reference/test-calls#test-call-run-object)
dosiahne konečný stav — `completed` alebo `failed` vrátane spustení,
ktoré zlyhali pri spustení a nikdy nevytvorili hovor. Neblokujúca udalosť. Užitočné
na prepojenie dávkových spustení CI so systémami chatu a upozornení.

```json
{
  "data": {
    "test_call_run": {
      "call_id": 987654321,
      "completed_at": "2026-04-20T18:25:04.822Z",
      "error_message": "",
      "id": 7110,
      "status": "completed",
      "target_id": 12,
      "target_type": "agent"
    }
  },
  "event_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
  "type": "test-call.completed"
}
```

| Pole | Typ | Popis |
|-------|------|-------------|
| `agent_id` | integer \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `agent_name` | string \| null | Agent, ktorý spracoval hovor, ak bol priradený |
| `test_call_run.target_type` | string | `agent` alebo `phone_number` |
| `test_call_run.target_id` | integer | ID agenta alebo ID telefónneho čísla, na ktoré bolo spustenie zacielené, podľa hodnoty `target_type` |
| `test_call_run.status` | string | `completed` alebo `failed` |
| `test_call_run.call_id` | integer \| null | `null`, ak spustenie zlyhalo pred uskutočnením hovoru |
| `test_call_run.error_message` | string | Pri úspechu je prázdne |

---

## Udalosti upozornení

### `alert.triggered`

Odosiela sa, keď [pravidlo upozornenia](/sk/guides/alerts) s povoleným kanálom **Doručovať do
webhookov vývojára** prekročí svoj prah.
Neblokujúca udalosť. Pravidlo sa spustí raz a potom dodržiava interval
ochladenia, takže pretrvávajúce prekročenie vytvorí jednu udalosť za každé okno ochladenia.

```json
{
  "data": {
    "comparator": "lt",
    "event_id": "b8e6a1d4-2c3f-4a5b-9c8d-7e6f5a4b3c2d",
    "fired_at": "2026-04-20T18:00:00+00:00",
    "metric": "success_rate",
    "metric_value": 71.4,
    "rule_id": "d2c3b4a5-6f7e-4d8c-9b0a-1c2d3e4f5a6b",
    "rule_name": "Success rate below 80%",
    "threshold": 80.0,
    "window_hours": 24
  },
  "event_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
  "type": "alert.triggered"
}
```

| Pole | Typ | Popis |
|-------|------|-------------|
| `event_id` (v `data`) | UUID | ID **spustenia** upozornenia — odlišné od doručovacieho `event_id` obálky |
| `rule_id`, `rule_name` | UUID, string | Pravidlo, ktoré sa spustilo |
| `metric` | string | `success_rate`, `failure_rate`, `avg_score`, `call_volume` alebo `suite_regression` |
| `comparator` | string | `lt`, `lte`, `gt` alebo `gte` |
| `metric_value` | number | Hodnota metriky v rámci okna pri spustení pravidla |
| `threshold` | number | Nakonfigurovaný prah |
| `window_hours` | integer | Posuvné vyhodnocovacie okno |
| `fired_at` | timestamp | |

Informácie o vytváraní pravidiel, metrikách, intervaloch ochladenia
a kanáloch e-mailu / Slack nájdete v [príručke Upozornenia](/sk/guides/alerts).

---

## Súvisiace

<CardGroup cols={2}>
  <Card title="telephony.incoming / web.incoming" icon="phone" href="/sk/webhooks/call-incoming">
    Blokujúci payload prichádzajúceho hovoru, na ktorý musíte odpovedať.
  </Card>
  <Card title="telephony.complete / web.complete" icon="phone-slash" href="/sk/webhooks/call-complete">
    Prepis a metriky po hovore.
  </Card>
  <Card title="Koncové body webhookov" icon="bolt" href="/sk/webhooks/endpoints">
    Prihláste URL na odber podmnožiny týchto udalostí.
  </Card>
  <Card title="Funkčné nástroje" icon="screwdriver-wrench" href="/sk/tools/overview">
    Ako sa generujú udalosti `telephony.tool` / `web.tool`.
  </Card>
</CardGroup>
