---
title: "Каталог на събитията"
description: "Всички типове събития на уебхукове, които ThunderPhone изпраща."
---

Всяко тяло на уебкука има поле `type`, чиято стойност е един от типовете
събития на тази страница. Когато се абонирате за
[крайна точка](/bg/webhooks/endpoints), масивът `events` трябва да съдържа
типовете събития, които желаете (или да е празен, за да се абонирате за всички —
с изключение на събитията за всеки ход [`telephony.turn`](#telephony-turn) /
[`web.turn`](#web-turn), които се изпращат само до крайни точки, които
ги посочват изрично).

Тези събития се доставят по два начина:

* **Доставките до крайни точки** винаги са **неблокиращи** известия
  с [повторни опити](/bg/webhooks/overview): отговорете с
  произволен 2xx; обвивката съдържа `event_id` за дедупликация.
* **Блокиращите** обмени се изпълняват само чрез
  [стария уебкук с един URL](/bg/webhooks/overview): заявката за конфигурация на
  [`telephony.incoming` / `web.incoming`](/bg/webhooks/call-incoming)
  (номера в режим на уебкук и ключове за уиджети, изчакване 10 s) и
  [изпращането на инструменти](/bg/tools/overview)
  в режим на уебкук. Вашият отговор оформя разговора на живо.

Примерните полезни товари по-долу показват обвивката на крайната точка в реда
ѝ при предаване (ключовете са сортирани по азбучен ред: `data`, `event_id`, `type`);
старите доставки съдържат същото `data` без `event_id`.

## Събития за обаждания

### `telephony.incoming`

Изпраща се, когато входящо обаждане достигне един от вашите
[телефонни номера](/api-reference/phone-numbers). Доставките до крайна точка са
уведомления от тип „изпрати и забрави“ за **всяко** входящо обаждане, независимо
дали номерът е конфигуриран с агент или с уебхук. Номерата без
назначен агент получават допълнително **блокиращата** заявка за конфигурация
към наследения уебхук — вижте
[`telephony.incoming` / `web.incoming`](/bg/webhooks/call-incoming) за
пълната схема на заявката и отговора.

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

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | цяло число \| null | Агентът, обработил обаждането, когато е назначен такъв |
| `agent_name` | низ \| null | Агентът, обработил обаждането, когато е назначен такъв |

### `telephony.complete`

Изпраща се, когато входящо или изходящо телефонно обаждане приключи. Неблокиращо.
Включва транскрипцията, URL адреса на записа, когато е наличен, и обобщение на таксуването. Вижте
[`telephony.complete` / `web.complete`](/bg/webhooks/call-complete) за
схемата на полезния товар.

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | цяло число \| null | Агентът, обработил обаждането, когато е назначен такъв |
| `agent_name` | низ \| null | Агентът, обработил обаждането, когато е назначен такъв |

### `telephony.tool`

Изпраща се, след като телефонно обаждане извика
[инструмент с функция](/bg/tools/overview). Неблокиращо уведомление за одит —
инструментът вече е изпълнен, когато това събитие бъде доставено; то обхваща
вашите собствени инструменти с функции (не вградени инструменти, инструменти за база знания,
връзки с приложения или 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` е резултатът от изпълнението: `{"status": <http status>,
"response": <your endpoint's JSON>}` при успех или
`{"status": <status>, "error": "<message>"}` при неуспех.

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | цяло число \| null | Агентът, обработил обаждането, когато е назначен такъв |
| `agent_name` | низ \| null | Агентът, обработил обаждането, когато е назначен такъв |

### `telephony.turn`

Изпраща се, докато телефонно обаждане е **в ход**, по веднъж за всеки
ход, съдържащ реч, в момента на възникването му — изговорените от агента завършвания и
транскрибираните ходове на обаждащия се. Позволява ви да следите разговора на живо
чрез обикновени уебхукове, вместо чрез периодично запитване към
[`GET /v1/calls/{call_id}/transcript`](/api-reference/calls#get-transcript).
Неблокиращо.

<Note>
  **Изисква се изричен абонамент.** За разлика от всеки друг тип събитие,
  събитията за ходове никога не се доставят чрез празен масив `events`
  (абониране за всички). Крайна точка ги получава само когато нейният списък `events`
  изрично съдържа `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"
}
```

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | цяло число \| null | Агентът, обработил обаждането, когато е назначен такъв |
| `agent_name` | низ \| null | Агентът, обработил обаждането, когато е назначен такъв |
| `position` | цяло число | Индексът на хода в историята на обаждането — стабилен идентификатор за подреждане |
| `role` | низ | `assistant` (реч на агента) или `user` (реч на обаждащия се) |
| `text` | низ | Текстът от транскрипцията на хода, известен към момента на изпращане |
| `entry_type` | низ | Типът на основния запис в историята: `completion` (агент) или `user_turn` / `span` (обаждащ се) |
| `start_ms`, `end_ms` | цяло число | Отмествания на аудиото в ms от началото на обаждането; налични само когато времето за възпроизвеждане вече е било известно към момента на изпращане |

<Note>
  Доставянето е поне веднъж и ходовете може да пристигнат **в неправилен ред**:
  премахвайте дубликатите по `event_id` на обвивката и подреждайте по `position`. Транскрипциите
  на обаждащия се може все още да бъдат прецизирани след изпращането; транскрипцията от
  [`telephony.complete`](/bg/webhooks/call-complete) след обаждането е
  окончателна. Изпращат се само изговорени ходове — извиквания на инструменти, шепоти и
  други вътрешни записи никога не се появяват в този поток.
</Note>

### `web.incoming`

Еквивалентът на `telephony.incoming` за уеб канала, изпращан при започване на
сесия на [уеб уиджет](/bg/widget/overview) или тестово обаждане с микрофон в конструктора.
Доставките до крайна точка са от тип „изпрати и забрави“ за всяка уеб сесия.
Публикуемите ключове в `mode="webhook"` получават допълнително
**блокиращата** заявка за конфигурация към наследения уебхук — тази
блокираща заявка има различна структура (`origin_domain`,
`publishable_key_prefix`; без телефонни номера). Вижте
[`telephony.incoming` / `web.incoming`](/bg/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` винаги е буквалната стойност `"web"`. За сесии на уиджет в режим на
уебхук `to_number` е празно (номерът на агента за сесията се назначава
след конфигурирането); за тестови обаждания с микрофон в конструктора `origin_domain` и
`publishable_key_prefix` са празни.

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | цяло число \| null | Агентът, обработил обаждането, когато е назначен такъв |
| `agent_name` | низ \| null | Агентът, обработил обаждането, когато е назначен такъв |

### `web.complete`

Еквивалентът на `telephony.complete` за уеб канала, който обхваща обаждания чрез
уеб уиджет (`direction: "web"`) и тестови обаждания с микрофон в конструктора
(`direction: "test"`). Неблокиращо. Същата структура на полезния товар като
[`telephony.complete`](/bg/webhooks/call-complete), плюс `origin_domain`,
като `from_number` е зададено на `"web"`.

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | цяло число \| null | Агентът, обработил обаждането, когато е назначен такъв |
| `agent_name` | низ \| null | Агентът, обработил обаждането, когато е назначен такъв |

<Note>
  В наследения уебхук с един URL адрес тестовите обаждания с микрофон в конструктора
  исторически се отчитат като `telephony.complete` — там само обажданията с `direction:
  "web"` използват типа `web.complete`. Системата за крайни точки
  съпоставя както уеб, така и тестовите обаждания с `web.*`. Историческите полезни товари може
  да съдържат наследените стойности `widget` или `mic` за `direction`.
</Note>

### `web.tool`

Еквивалентът на `telephony.tool` за уеб канала. `data` съдържа
`origin_domain` вместо `from_number` / `to_number`.

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | цяло число \| null | Агентът, обработил обаждането, когато е назначен такъв |
| `agent_name` | низ \| null | Агентът, обработил обаждането, когато е назначен такъв |

### `web.turn`

Еквивалентът на [`telephony.turn`](#telephony-turn) за уеб канала,
който обхваща обаждания чрез уеб уиджет и тестови обаждания с микрофон в конструктора. Същата структура
на полезния товар, с `origin_domain` вместо `from_number` / `to_number`.
Подобно на `telephony.turn`, изисква **изричен абонамент** —
никога не се доставя чрез празен масив `events`.

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | цяло число \| null | Агентът, обработил обаждането, когато е назначен такъв |
| `agent_name` | низ \| null | Агентът, обработил обаждането, когато е назначен такъв |

---

## Гласови събития

Създаването на персонализиран глас е асинхронно. Тези неблокиращи събития Ви позволяват да
реагирате на окончателен резултат, вместо да извършвате периодични заявки към
[крайната точка за подробности за клониране](/api-reference/custom-voices#list-and-retrieve-clones).

`voice.ready` и `voice.failed` се доставят само до крайна точка за цялата организация с
`events: []`. Те не могат да бъдат избирани като изрични филтри за събития.

### `voice.ready`

Изпраща се, когато обработката на персонализиран глас завърши и той може да бъде назначен на
агент.

```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`

Изпраща се, когато обработката на персонализиран глас достигне необратима грешка.

```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"
}
```

| Поле | Тип | Описание |
|-------|------|-------------|
| `voice.id` | string | Публичен идентификатор на персонализирания глас |
| `voice.name` | string | Стойност за гласа на агента във формата `custom:<public_id>` |
| `voice.display_name` | string | Име на гласа, видимо за организацията |
| `voice.language` | string | Кодът на единствения език на клонирания глас |
| `voice.gender` | string | `male`, `female` или празен низ |
| `voice.status` | string | `ready` за `voice.ready`; `failed` за `voice.failed` |
| `voice.failure_reason` | string | Празно при успех; подробности за грешката при обработката при неуспех |
| `voice.created_at`, `voice.updated_at` | timestamp | Времеви клейма по ISO 8601 |
| `reason` | string | Подробности за грешката; присъства само при `voice.failed` |

---

## Събития за качество

### `call.graded`

Изпраща се винаги, когато [изпълнение на AI оценяване](/api-reference/calls#ai-call-grading)
завърши за обаждане. Не блокира.

```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"
}
```

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | integer \| null | Агентът, обработил обаждането, когато е бил назначен такъв |
| `agent_name` | string \| null | Агентът, обработил обаждането, когато е бил назначен такъв |
| `grade.id` | integer | Идентификатор на оценката |
| `grade.score` | integer \| null | 0–100 |
| `grade.call_outcome` | string | `success`, `failure`, `unknown` или `no_conversation` |
| `grade.summary` | string | Резюме в един абзац |
| `grade.detected_issues` | array | Низове с проблеми, открити от оценяващия модул |
| `grade.status` | string | Винаги `completed` — изпращат се само завършени изпълнения |
| `grade.grader_model` | string | Кой оценяващ модел е създал резултата, например `heuristic-v1` |
| `grade.graded_at`, `grade.created_at` | timestamp | |

<Note>
  Едно обаждане може да бъде оценено повече от веднъж — бърза евристична оценка
  често е последвана от оценка с пълен модел, след като записът стане
  наличен, като са възможни и ръчни преоценки. Всяко завършено изпълнение
  изпраща собствено събитие `call.graded`; приемайте най-новото `graded_at`
  за авторитетно.
</Note>

### `call.data_extracted`

Изпраща се винаги, когато извличането на структурирани данни завърши успешно, включително
при късен повторен опит след `telephony.complete` / `web.complete` или при ръчно повторно изпълнение чрез
[`POST /v1/calls/{call_id}/extract`](/api-reference/calls#run-data-extraction).
Не блокира.

В режим на блокиращо извличане събитието за завършване обикновено изчаква не повече
от 75-секундния бюджет за извличане. Ако работният процес за извличане бъде
изгубен, финализиращият процес в продукционна среда (на всеки пет минути) освобождава
завършване, чийто `blocking_deadline_at` е изтекъл, преди да започне друг
опит за извличане. Последващ успех се доставя отделно чрез това събитие.

<Warning>
  Извлечените стойности са интерпретация на разговора от модел. Всяка
  стойност, различна от null, включва цитата, ролята на говорещия и индекса на репликата,
  на които се основава, както и флаг за проверка на ниво изпълнение. Проверявайте резултата
  преди решения, свързани с пари, самоличност или достъп.
</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"
}
```

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | integer \| null | Агентът, обработил обаждането, когато е бил назначен такъв |
| `agent_name` | string \| null | Агентът, обработил обаждането, когато е бил назначен такъв |
| `extracted_data.status` | string | Винаги `completed` за това събитие |
| `extracted_data.fields` | object | Стойности с ключове, съответстващи на конфигурираните ключове на полетата за извличане; неналичните стойности са `null` |
| `extracted_data.evidence` | object | Доказателства с ключове според полето за извличане. Стойност, различна от null, съдържа точния структурно проверен цитат (най-много 1 000 знака), `speaker_role` (`caller` или `agent`) и `turn_index`; по-дългите цитати, върнати от модела, се отхвърлят вместо да се съкращават, а доказателствата са `null`, когато полето им е `null` |
| `extracted_data.verification` | string | `verified` само когато независимото преминаване за доказателства е върнало точно една валидна присъда за всяко кандидат-поле. `unavailable` означава, че преминаването е неуспешно, времето му е изтекло, не е имало достатъчен бюджет или е върнало неправилно форматиран или частичен изход. Изцяло неналично преминаване запазва структурно обоснованите стойности за преглед от клиента. При частичен изход се прилагат валидните присъди, а всеки кандидат без точно една валидна присъда се задава на null |
| `extracted_data.field_reasons` | object | Причини с ключове според полетата, зададени на null от структурното обосноваване или независимия проверяващ модул |
| `extracted_data.schema_version` | string | Хеш на точната схема на полетата, използвана за това извличане |
| `extracted_at` | timestamp | Време на завършване по ISO 8601 |
| `model` | string | Моделът, използван за извличането |

### `campaign.completed`

Изпраща се еднократно, когато кампания премине от `running` към `completed`, независимо дали
графикът ѝ е приключил или всички контакти са достигнали крайни състояния. Повторните опити на изпълняващия процес не
изпращат друго събитие. Това събитие от жизнения цикъл на ниво организация се доставя само
до крайни точки с обхват на организацията, а не до крайни точки с обхват на агента. Не блокира.

```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"
}
```

Четирите броя на резултатите не се припокриват и сборът им е `contacts_total`:
`completed` съдържа успешните контакти; `no_answer` съдържа крайните
неуспешни/изчерпани контакти, чийто краен резултат е липса на отговор; `failed` съдържа
всички други крайни неуспешни/изчерпани контакти; а `remaining` съдържа чакащи,
планирани или текущо набирани контакти. Контакт, който изчаква повторен опит, е
`remaining`, дори когато последният му опит е бил без отговор. Текущите обаждания
се съгласуват преди еднократната снимка при завършване. `started_at` е
конфигурираният начален момент на кампанията или моментът на създаване на кампанията, когато не е конфигуриран начален момент.

### `issue.reported`

Изпраща се, когато бъде създаден [доклад за проблем](/api-reference/issue-reports) —
подаден от потребител от таблото за управление (`source: "user"`) или
автоматично чрез оценяване на обаждане (`source: "system"`). Не блокира.

```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"
}
```

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | integer \| null | Агентът, обработил обаждането, когато е бил назначен такъв |
| `agent_name` | string \| null | Агентът, обработил обаждането, когато е бил назначен такъв |
| `issue_report.severity` | string | `critical`, `warning` или `info` |
| `issue_report.status` | string | `open` или `resolved` |
| `issue_report.source` | string | `user` (подаден от таблото за управление) или `system` (създаден чрез оценяване) |

<Note>
  Преоценяването на обаждане изгражда отново системно генерираните му доклади за проблеми,
  което изпраща отново `issue.reported` за пресъздадените доклади. Премахвайте дубликатите по
  `call_id` + `title`, ако искате само едно известие за всеки основен
  проблем.
</Note>

### `issue.escalated`

Изпраща се, когато модел на проблем бъде изпратен до ThunderPhone за преглед от екипа: след
**Докладване до ThunderPhone** или когато „Поправяне с AI“ не може да потвърди поправка от страна на клиента
и маршрутизира проблема автоматично. Само крайните точки за цялата организация
получават това събитие.

```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"
}
```

| Поле | Тип | Описание |
|-------|------|-------------|
| `automatic` | boolean | `true` за автоматична ескалация; `false` за ръчна ескалация |
| `cluster_id` | UUID | Ескалиран модел на проблем |
| `escalation_id` | UUID | Запис за ескалация |
| `status` | string | `open` при изпращане на събитието |

Това е известие, а не пакетът с доказателства. Използвайте `cluster_id`, за да го свържете
с модела на проблема. Вижте [Докладване до ThunderPhone](/bg/guides/issues).

---

## Събития от тестови обаждания

### `test-call.completed`

Изпраща се, когато
[изпълнение на тестово обаждане](/api-reference/test-calls#test-call-run-object)
достигне краен статус — `completed` или `failed`, включително изпълнения,
които са неуспешни при стартиране и никога не са извършили обаждане. Не блокира. Полезно
за свързване на пакетни CI изпълнения с вашите системи за чат/известия.

```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"
}
```

| Поле | Тип | Описание |
|-------|------|-------------|
| `agent_id` | integer \| null | Агентът, обработил обаждането, когато е бил назначен такъв |
| `agent_name` | string \| null | Агентът, обработил обаждането, когато е бил назначен такъв |
| `test_call_run.target_type` | string | `agent` или `phone_number` |
| `test_call_run.target_id` | integer | Идентификаторът на агента или телефонния номер, към който е насочено изпълнението, съответстващ на `target_type` |
| `test_call_run.status` | string | `completed` или `failed` |
| `test_call_run.call_id` | integer \| null | `null`, когато изпълнението е неуспешно преди извършване на обаждане |
| `test_call_run.error_message` | string | Празно при успех |

---

## Събития за предупреждения

### `alert.triggered`

Изпраща се, когато [правило за предупреждение](/bg/guides/alerts) с активиран канал
**Доставяне до уебхукове за разработчици** премине своя праг.
Не блокира. Правилото се задейства веднъж и след това спазва периода си на
изчакване, така че продължително нарушение генерира по едно събитие за всеки прозорец на изчакване.

```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"
}
```

| Поле | Тип | Описание |
|-------|------|-------------|
| `event_id` (в `data`) | UUID | Идентификаторът на **задействането** на предупреждението — различен от `event_id` за доставяне в обвивката |
| `rule_id`, `rule_name` | UUID, string | Правилото, което се е задействало |
| `metric` | string | `success_rate`, `failure_rate`, `avg_score`, `call_volume` или `suite_regression` |
| `comparator` | string | `lt`, `lte`, `gt` или `gte` |
| `metric_value` | number | Стойността на метриката за прозореца, когато правилото се е задействало |
| `threshold` | number | Конфигурираният праг |
| `window_hours` | integer | Плъзгащ се прозорец за оценяване |
| `fired_at` | timestamp | |

Вижте [ръководството за предупреждения](/bg/guides/alerts) за създаване на правила, метрики,
периоди на изчакване и каналите за имейл / Slack.

---

## Свързано

<CardGroup cols={2}>
  <Card title="telephony.incoming / web.incoming" icon="phone" href="/bg/webhooks/call-incoming">
    Блокиращият payload за входящо обаждане, на който трябва да отговорите.
  </Card>
  <Card title="telephony.complete / web.complete" icon="phone-slash" href="/bg/webhooks/call-complete">
    Транскрипция и метрики след обаждането.
  </Card>
  <Card title="Webhook крайни точки" icon="bolt" href="/bg/webhooks/endpoints">
    Абонирайте URL към подмножество от тези събития.
  </Card>
  <Card title="Функционални инструменти" icon="screwdriver-wrench" href="/bg/tools/overview">
    Как се генерират събитията `telephony.tool` / `web.tool`.
  </Card>
</CardGroup>
