Skip to main content

Вебхуки

Вебхуки позволяют HubTalk AI v4 автоматически отправлять данные о звонках в ваши системы после завершения разговора. Используйте их для дашбордов, CRM-обновлений и автоматизации процессов.

Что отправляют вебхуки

Вебхук передаёт JSON-payload с информацией о звонке, включая:
  • статус и длительность звонка
  • данные агента
  • транскрипт и резюме
  • пользовательские аналитические переменные

Как включить вебхуки

Укажите URL вебхука в редакторе агента в разделе вебхука. Система будет отправлять данные после каждого завершённого разговора или попытки звонка. Форма «Новый webhook»: адрес, события, имя env-переменной с секретом подписи и таймаут ответа

Один адрес принадлежит одному агенту

У каждого вебхука указан агент, и это должен быть живой агент вашей организации. Адреса на всю организацию не существует: подписка без имени агента отклоняется с кодом webhooks.agent_required, а неизвестный или архивный — с кодом webhooks.agent_not_found.
Подписки на всю организацию не бывает. Если интеграции нужны события по нескольким агентам, зарегистрируйте адрес отдельно у каждого. Строка с пустым именем агента, если такая лежит в базе, инертна: её не удаляют, но она ничего не получает.
Чтобы получать события по нескольким агентам, добавьте адрес каждому из них. Один и тот же URL переиспользовать можно: в payload есть agent_id, поэтому один приёмник разберёт все.

Настройки вебхука

Вебхуки агента живут в секции «🪝 Уведомления после звонка» панели настроек в конструкторе. Кнопка «Добавить webhook» открывает форму с такими полями:
  • Адрес (URL) — HTTPS-адрес, который принимает уведомления. http:// доступен только организации — владельцу платформы.
  • События — что отправлять:
    • «Звонок завершён (call_ended — после завершения звонка;
    • «Аналитика готова (call_analyzed — когда готова пост-колл аналитика.
  • Секрет подписи — имя env-переменной — хранится только ссылка на переменную: значение берётся из окружения и не попадает в базу и логи.
  • Таймаут ответа (сек) — максимальное ожидание ответа вашего сервиса; 0 означает умолчание пайплайна.
  • Включён — отправку можно приостановить, не удаляя адрес.
  • Слать события тест-сессий — по умолчанию выключено, то есть тесты из кабинета вебхук не дёргают.
Отдельного поля с выбором агента в форме нет: вебхук принадлежит тому агенту, в настройках которого вы его завели. У сохранённого адреса в списке есть кнопка «Тест» — она отправляет пробное уведомление, не дожидаясь настоящего звонка.

Примеры использования

  • отправка результатов звонка в CRM
  • обновление статуса заявки в службе поддержки
  • запуск задачи последующего контакта, если клиент согласился на звонок
  • сохранение резюме звонка для контроля качества

Пример payload

Ниже пример webhook-сообщения call_ended, которое HubTalk AI v4 может отправить на ваш endpoint:

Второе событие: готовность аналитики

HubTalk AI v4 может отправить второй вебхук, когда пост-колл аналитика завершит обработку. Событие call_analyzed содержит полный объект звонка вместе с результатами анализа, поэтому подписчику достаточно одного этого события, чтобы получить полную картину — подписка на call_ended необязательна.
Оба события несут поле error_code — числовой код отказа, присвоенный оператором связи (например 486 при status_reason = busy). Он равен null, если оператор кода не отдал. Трактовки кодов у операторов различаются — не строите на них жёсткую логику без сверки со своим оператором. Учтите также, что busy и user_declined — разные причины: занято и отбой абонента различаются. Если анализ был пропущен или завершился ошибкой, call_analysis пуст, а в payload добавляется поле reason, объясняющее причину, например voicemail или no_speech. Если у звонка есть запись, call_analyzed также содержит поле верхнего уровня recording_url и объект recording — уже с готовой ссылкой на запись. call_ended несёт тот же блок записи, но на этот момент она обычно ещё обрабатывается.

На недозвоне переменные тоже приходят

Звонок, который не состоялся — недозвон, занято, сбой, автоответчик, — всё равно даёт вебхук, и в этом вебхуке есть dynamic_variables: значения, которые вы передали для контакта при постановке звонка в очередь. В разговоре ничего не собрано, потому что разговора не было, но входные данные звонка на месте.
Не используйте пустой dynamic_variables как признак недозвона. Переменные приходят и на состоявшемся звонке, и на недозвоне, поэтому пустой словарь об исходе ничего не говорит. Ветвитесь по call_status и status_reason — именно эти поля говорят об исходе.
Три поверхности показывают одно и то же: переменная звонка внутри пост-колл функций, словарь в вебхуке завершения и GET /v1/calls/{call_id} в Web API — по одному звонку данные совпадают.

Как проверить

После настройки выполните тестовый звонок или используйте инструмент инспекции вебхуков, чтобы убедиться, что payload приходит на ваш endpoint и формат данных соответствует ожиданиям.

Не усложняйте сначала

Начните с одного URL вебхука и небольшого набора полей. Когда интеграция работает, добавьте больше аналитики и переменных.