# Вебхуки

Получайте события чатов и звонков клиента на собственный эндпоинт — с подписью и проверкой

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

Получайте события чатов и звонков в реальном времени на собственный сервер — Happ отправляет POST с JSON, когда что-то происходит, и вы можете запускать оповещения в Slack, поиск в CRM, аналитику или собственные рабочие процессы.

<WebhooksPageDemo />

## Подключение [#connect]

1. Откройте каталог **Интеграции** и нажмите **Подключить** на **Вебхук чатов** или **Вебхук звонков**.
2. В модальном окне введите **URL вебхука** — HTTPS-эндпоинт, который принимает события.
3. При желании задайте **Секрет вебхука** для проверки запросов.
4. Нажмите **Подключить**.

Отдельной страницы вебхуков, переключателей подписки на события и журнала доставок в приложении нет — в модальном окне только URL и необязательный секрет.

## Отправляемые события [#events-sent]

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

## Событие звонка [#call-event]

Вебхук звонка присылает один плоский 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).

## Проверка запросов [#verifying-requests]

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

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

Для проверки пересчитайте HMAC-SHA256 от сырого тела (до разбора JSON) и сравните за константное время. Если ваша платформа не даёт доступа к сырому телу, проверяйте заголовок `Authorization`. Без секрета ни один из этих заголовков не отправляется. Тот же механизм, что и у [инструментов](/docs/agents/tools) агента.

Используйте только HTTPS, отвечайте `200` быстро (а сами события обрабатывайте асинхронно) и делайте обработку повторных доставок идемпотентной.

## Вебхуки и вебхуки инструментов [#webhooks-vs-tool-webhooks]

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

О вебхуках, которые AI вызывает посреди разговора, см. [Инструменты](/docs/agents/tools).

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

## Дальше [#next]

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