# Вебхуки

Отримуйте події чатів і дзвінків клієнта на власній точці прийому, підписані й перевірювані

> Full REST + WebSocket API reference: https://api.happ.tools/reference

Отримуйте події чатів і дзвінків у реальному часі на власному сервері — Happ POST'ить JSON, коли щось стається, тож ви можете запускати сповіщення в Slack, пошук у CRM, аналітику чи власні робочі процеси.

<WebhooksPageDemo />

## Підключення [#підключення]

1. Відкрийте каталог **Інтеграцій** і натисніть **Підключити** на **Chat webhook** або **Call webhook**.
2. У модальному вікні введіть ваш **URL вебхука** — HTTPS-точку, що приймає події.
3. За бажанням встановіть **секрет вебхука** для перевірки запитів.
4. Натисніть **Підключити**.

Окремої сторінки вебхуків, перемикачів підписки на події та внутрішнього журналу доставок немає — модальне вікно це лише URL + необов'язковий секрет.

## Надсилані події [#надсилані-події]

| Вебхук  | Спрацьовує на                                                                                               |
| ------- | ----------------------------------------------------------------------------------------------------------- |
| Чат     | Кожне повідомлення у відстежуваному чаті — від клієнта, від асистента і від оператора                       |
| Дзвінок | Завершення дзвінка — одна доставка після дзвінка з тривалістю, метаданими і посиланням на запис, якщо він є |

## Подія дзвінка [#подія-дзвінка]

Вебхук дзвінка надсилає один плаский JSON на кожен завершений дзвінок (без вкладеного `result_json`). Основні поля:

| Поле                        | Значення                                                                                                                                                                                          |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `event_type`                | Завжди `post_call`                                                                                                                                                                                |
| `call_uuid`                 | Унікальний ID дзвінка — дедуплікуйте за ним, той самий дзвінок може прийти більше одного разу                                                                                                     |
| `externalNumber`            | Телефон клієнта, той самий, що в історії дзвінків; `null`, якщо номера не було (наприклад, вебдзвінок)                                                                                            |
| `direction`                 | `inbound`, `outbound` або `null`                                                                                                                                                                  |
| `summary`, `callSuccessful` | AI-підсумок і вердикт: `success`, `failure` або `unknown`                                                                                                                                         |
| `dynamicVariables`          | Змінні, з якими запустили дзвінок, повертаються назад — передайте ID контакту в CRM або замовлення під час запуску дзвінка й прочитайте його тут. Системні змінні VA (`system__*`) не передаються |

Повна схема й приклад: [api.happ.tools/reference](https://api.happ.tools/reference).

## Перевірка запитів [#перевірка-запитів]

Задайте секрет вебхука — і кожна доставка нестиме два заголовки:

| Заголовок       | Значення                                                                       |
| --------------- | ------------------------------------------------------------------------------ |
| `Authorization` | `Basic <секрет>` — ваш секрет як є, не base64 від `user:password`              |
| `X-Signature`   | `sha256=<hex>` — HMAC-SHA256 від сирого тіла запиту, обчислений вашим секретом |

Перевіряйте так: перерахуйте HMAC-SHA256 від сирого тіла (до розбору JSON) і порівняйте константним у часі порівнянням. Якщо ваша платформа не дає доступу до сирого тіла — звіряйте заголовок `Authorization`. Без секрету жоден із цих заголовків не надсилається. Той самий механізм, що й [інструменти](/docs/agents/tools) асистента.

Використовуйте лише HTTPS, відповідайте `200` швидко (обробляйте асинхронно) й обробляйте дублікати доставки ідемпотентно.

## Вебхуки проти вебхуків інструментів [#вебхуки-проти-вебхуків-інструментів]

|                      | Вебхуки інтеграцій                | Вебхуки інструментів                 |
| -------------------- | --------------------------------- | ------------------------------------ |
| Тригер               | Автоматично на події              | Викликається AI під час розмови      |
| Напрямок             | Happ → ваш сервер                 | Happ → ваш сервер → відповідь → AI   |
| Відповідь            | Підтвердження HTTP 200            | JSON, що використовується асистентом |
| Випадок використання | Моніторинг, логування, сповіщення | Динамічний пошук, дії                |

Для вебхуків, які AI викликає посеред розмови, див. [Інструменти](/docs/agents/tools).

**API:** [api.happ.tools/reference](https://api.happ.tools/reference)

## Далі [#далі]

* [Інструменти](/docs/agents/tools) — вебхуки, які викликає AI
* [Сповіщення](/docs/integrations/notifications) — вбудоване сповіщення
* [Інтеграції](/docs/integrations) — повний каталог
