Получение данных перед звонком позволяет обогащать контекст звонка внешними данными до того, как голосовой агент начнет говорить. Когда функция включена на узле «Начало звонка», Агентика отправляет HTTP-запрос в ваш API сразу после инициации звонка. Пока ответ загружается, абонент слышит гудок вызова. Когда данные приходят, они объединяются с начальным контекстом звонка и становятся доступны как переменные шаблона в промптах и приветствиях.

Как это работает

  1. Звонок приходит (входящий) или инициируется (исходящий).
  2. Агентика отправляет POST-запрос на настроенный эндпоинт со стандартизированной полезной нагрузкой.
  3. Абонент слышит гудок вызова, пока ожидается ответ.
  4. Ваш API отвечает JSON-объектом с объектом initial_context.
  5. Переменные объединяются с начальным контекстом звонка.
  6. Голосовой агент стартует с полным доступом к полученным данным через синтаксис {{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) или телефонный тестовый звонок из редактора воркфлоу — эти переменные по умолчанию недоступны. Чтобы имитировать данные телефонии во время тестирования:
  1. Откройте воркфлоу и перейдите в Настройки.
  2. В Переменные контекста добавьте:
    • caller_number — номер, который нужно имитировать как номер звонящего, например +12137771234.
    • called_number — номер, на который как будто позвонили, например +12137771235.
  3. Сохраните настройки.
Теперь при любом тестовом звонке — веб или телефонном — эти значения будут отправляться в запросе получения данных перед звонком на ваш эндпоинт, позволяя проверить весь сценарий как при реальном входящем звонке.
Эти переменные контекста используются только во время тестовых звонков из редактора воркфлоу. В производственных входящих звонках и исходящих звонках кампаний используются реальные данные телефонии, а эти значения игнорируются.

Пример интеграции

Простой эндпоинт на Node.js, который ищет клиента по номеру телефона: