Как это работает
- Звонок приходит (входящий) или инициируется (исходящий).
- Агентика отправляет POST-запрос на настроенный эндпоинт со стандартизированной полезной нагрузкой.
- Абонент слышит гудок вызова, пока ожидается ответ.
- Ваш API отвечает JSON-объектом с объектом
initial_context. - Переменные объединяются с начальным контекстом звонка.
- Голосовой агент стартует с полным доступом к полученным данным через синтаксис
{{variable_name}}.
Конфигурация
Откройте редактор узла «Начало звонка» и раскройте Дополнительные настройки. Включите Получение данных перед звонком и настройте:URL должен указывать на публичный адрес: localhost, приватные и link-local адреса (включая
169.254.169.254) и имена внутренних сервисов отклоняются при сохранении агента и повторно проверяются перед каждой отправкой. Редиректы не выполняются. В self-hosted установке, где получатель живёт в локальной сети или в соседнем compose-сервисе (например, n8n), оператор может снять это ограничение переменной окружения TOOL_TEST_ALLOW_PRIVATE_TARGETS=true — она действует и на HTTP-инструменты.Формат запроса
Агентика отправляетPOST-запрос со следующим JSON-объектом:
Заголовок
Content-Type установлен в application/json. Если вы настроили учётные данные, соответствующий заголовок аутентификации будет добавлен.
Ожидаемый формат ответа
Ваш API должен вернуть JSON-объект со статусом2xx. Переменные, которые нужно добавить в контекст звонка, должны находиться внутри ключа initial_context:
initial_context на верхний уровень:
Устаревший ключ
dynamic_variables по-прежнему принимается как полная замена (drop-in alias) для initial_context, поэтому существующие интеграции продолжают работать без изменений. Для новых интеграций используйте initial_context. Если в ответе есть оба ключа, приоритет у initial_context.- Приветствие:
Hello {{customer_name}}, thank you for calling! - Промпт:
The customer is a {{loyalty_tier}} member with {{open_tickets}} open support tickets.
Если ответ не является корректным JSON-объектом, не содержит
initial_context или устаревший dynamic_variables, либо запрос завершается ошибкой или по таймауту, звонок продолжается без дополнительного контекста. Получение данных перед звонком никогда не блокирует и не прерывает звонок.Вложенные переменные
Еслиinitial_context содержит вложенные объекты, обращайтесь к ним через точечную нотацию:
{{customer.name}} и {{customer.address.city}}.
Таймаут
У запроса есть таймаут 10 секунд. Если ваш API не ответит за это время, звонок продолжится без полученных данных. Проектируйте эндпоинт так, чтобы он отвечал как можно быстрее и сокращал длительность гудка вызова. Когда приходит настоящий телефонный звонок, переменные контекстаcaller_number и called_number автоматически задаются провайдером телефонии и включаются в запрос получения данных перед звонком как from_number и to_number. Но когда вы делаете тестовый звонок — веб-звонок (WebRTC) или телефонный тестовый звонок из редактора воркфлоу — эти переменные по умолчанию недоступны.
Чтобы имитировать данные телефонии во время тестирования:
- Откройте воркфлоу и перейдите в Настройки.
- В Переменные контекста добавьте:
caller_number— номер, который нужно имитировать как номер звонящего, например+12137771234.called_number— номер, на который как будто позвонили, например+12137771235.
- Сохраните настройки.
Эти переменные контекста используются только во время тестовых звонков из редактора воркфлоу. В производственных входящих звонках и исходящих звонках кампаний используются реальные данные телефонии, а эти значения игнорируются.