Пошаговая инструкция

Как настроить исходящий WebHook

Подключение занимает несколько минут: подготовьте HTTPS-адрес, вставьте его в ProZvonki, отправьте тест и выберите нужные события. Ниже — порядок настройки и точный формат запросов.

Значок WebHook из настроек ProZvonki

Шаг 1. Подготовьте HTTPS-адрес

Создайте WebHook в n8n, Make или своей системе. Обработчик должен принимать POST, читать JSON и возвращать код 2xx только после того, как событие надёжно сохранено.

Шаг 2. Откройте настройки ProZvonki

Перейдите в Настройки → вкладка «Бизнес» → Интеграции → WebHook и включите интеграцию.

Шаг 3. Введите URL и токен

Вставьте полный HTTPS URL. Если на сервере настроена Bearer-авторизация, укажите токен. Нажмите «Сохранить и отправить тест» и убедитесь, что приложение сообщает об успешной отправке.

Шаг 4. Выберите данные и события

Включите call_started, если событие нужно уже в момент звонка. Отдельно решите, передавать ли имя контакта и запись разговора. На телефоне с двумя SIM выберите рабочую SIM и задайте понятные метки.

Шаг 5. Защититесь от повторов

Сохраняйте обработанные значения event_id. Если сервер получил запрос, но ответ потерялся, телефон отправит то же событие повторно. Для событий одного разговора используйте общий call_id.

Пример события завершения звонка

Неприменимые поля передаются как null, поэтому структура JSON остаётся предсказуемой.

{
  "event_id": "550e8400-e29b-41d4-a716-446655440000",
  "call_id": "663dbf58-1bfd-4a59-a3af-bad6f9511cec",
  "event": "call_finished",
  "direction": "incoming",
  "result": "answered",
  "ended_by": "remote",
  "number": "+79001234567",
  "hidden": false,
  "contact_name": "Иван Петров",
  "contact_name_source": "contacts",
  "duration_sec": 42,
  "timestamp": "2026-09-25T10:30:00Z",
  "timestamp_unix": 1790332200,
  "sim_slot": 0,
  "sim_label": "Рабочая SIM"
}

Формат записи разговора

recording_ready приходит запросом multipart/form-data. Часть payload содержит JSON с event_id, тем же call_id, номером, направлением, длительностью, именем файла, форматом и размером. Часть recording содержит сам аудиофайл. Серверу не нужно декодировать Base64.

Какие ответы считать успешными

Верните любой HTTP-код 2xx только после сохранения события и файла. Для временной проблемы верните 408, 425, 429 или 5xx — приложение повторит попытку. Ответы 401/403 означают, что нужно исправить URL, токен или права доступа.

FAQ

Частые вопросы о настройке WebHook

Какие ответы считать успешными?

Верните HTTP-код 2xx только после того, как событие и файл надёжно сохранены. Иначе при потере ответа данные могут считаться доставленными преждевременно.

Почему событие может прийти повторно?

Если ответ сервера потерялся или возникла временная сетевая ошибка, приложение повторит доставку с тем же event_id. Обработчик должен быть идемпотентным.

Что проверить, если тест не проходит?

Проверьте полный HTTPS URL, доступность обработчика из интернета, Bearer-токен и журналы принимающего сервера. Успешный обработчик должен вернуть 2xx.

Можно ли использовать HTTP вместо HTTPS?

Используйте HTTPS. Обычный HTTP блокируется политикой безопасности Android, кроме явно разрешённых локальных адресов для разработки.

Как передаётся запись разговора?

Отдельным multipart-запросом: JSON-метаданные находятся в части payload, бинарный аудиофайл — в части recording. Base64 не используется.