Кампания — это способ автоматически запускать workflow для множества контактов. Вместо того чтобы запускать звонки по одному через API, вы загружаете список номеров, а Агентика обзванивает их с учетом окон расписания, лимитов concurrency и правил retry.

Как работает кампания

  1. Загрузите contacts CSV — в нем должен быть столбец phone_number; все дополнительные столбцы станут initial_context для каждого звонка
  2. Создайте campaign — привяжите ее к workflow, задайте concurrency, time slots и retry behaviour
  3. Запустите ее — Агентика начнет обзванивать контакты в пределах вашего concurrency limit
  4. Следите за прогрессом — отслеживайте processed, completed, failed и pending в реальном времени
  5. Ставьте на паузу и возобновляйте — можно остановить и перезапустить кампанию в любой момент без потери прогресса

Contacts CSV

CSV управляет кампанией. Каждая строка — один контакт.
Столбцы кроме phone_number автоматически передаются как initial_context в каждый звонок и становятся доступны как template variables в prompt агента. Так каждый звонок может быть персонализированным даже в масштабе.

Расписание и concurrency

Concurrency управляет числом одновременных звонков. Оно ограничено вашим telephony plan. Начинайте с консервативного значения. Time slots ограничивают, когда Агентика может звонить. Это полезно для соблюдения рабочих часов или регуляторных требований:
Если time slots не заданы, Агентика звонит непрерывно после запуска кампании.

Retry behaviour

Агентика может автоматически повторять попытки для контактов, которые не ответили, были заняты или попали на voicemail. Вы задаёте число повторов, паузу между ними и то, какие исходы вообще стоит повторять:
max_retries принимает значения 010, retry_delay_seconds303600.

Circuit breaker

Circuit breaker автоматически ставит кампанию на паузу, когда доля неудачных звонков становится слишком высокой. Это защищает от лишних расходов и проблем с telephony reputation из-за неправильно настроенного агента или плохого списка контактов. Когда он включен, Агентика отслеживает failure rate в скользящем временном окне. Если показатель превышает threshold, кампания автоматически ставится на паузу; возобновить ее нужно вручную после расследования проблемы. Кампания, остановленная circuit breaker, ведет себя как вручную поставленная на паузу: in-flight звонки нормально завершаются, а после устранения причины кампанию можно возобновить.

Жизненный цикл кампании

Кампанию можно ставить на паузу и возобновлять в любой момент. In-flight звонки нормально завершаются до того, как пауза вступит в силу.

Значения по умолчанию для организации

Лимиты кампаний и стартовые значения задаются на уровне организации, и форма создания кампании читает их из GET /api/v1/organizations/campaign-defaults: Если кампании уже были, форма подставляет значения из last_campaign_settings, иначе — из default_retry_config. Так вторая кампания начинается там, где закончилась первая, а не с нуля.
Этот endpoint работает только на чтение. concurrent_call_limit — настройка организации на стороне оператора (значение по умолчанию для развёртывания — 10); поднять её через API самостоятельно нельзя.

Перезвон по завершённой кампании

Когда кампания завершается, часть контактов просто не взяла трубку. Не нужно собирать по ним CSV вручную: нажмите Перезвонить на странице кампании — кнопка появляется только у кампании в состоянии completed — или вызовите POST /api/v1/campaign/{campaign_id}/redial. Агентика создаст новую кампанию, список контактов которой — ровно те абоненты родительской кампании, чей последний звонок закончился одной из отмеченных вами причин:
  • Все три причины по умолчанию true; хотя бы одна должна остаться включённой.
  • Новая кампания создаётся в состоянии created, контакты уже поставлены в очередь из исходных контекстов родительской кампании — проверьте её и запустите как обычную.
  • Она наследует retry-конфигурацию родителя, если вы не передали новый retry_config; имя по умолчанию — <имя родителя> (Redial).
  • Перезвон по кампании можно сделать только один раз. После этого родительская кампания ссылается на кампанию-перезвон, а кнопка исчезает.
  • Если под выбранные причины никто не подошёл, запрос отклоняется: перезванивать некому.

Результаты

Звонок каждого контакта создает run record с полным transcript, recording и gathered context, как при ручном запуске. Чтобы получить их все, используйте endpoint Get Campaign Runs.

Выгрузка результатов в CSV

GET /api/v1/campaign/{campaign_id}/report отдаёт потоком CSV по завершённым запускам кампании с именем campaign_<id>_report.csv. На странице кампании это кнопка Скачать отчёт с необязательным диапазоном дат; параметры start_date и end_date (ISO 8601) фильтруют по времени создания запуска. В файле одна строка на запуск:
Каждая переменная, извлечённая агентом за время кампании, получает свой столбец — так что выгрузка сразу заменяет ручной сбор данных из transcripts.

Выгрузка загруженного списка контактов

GET /api/v1/campaign/{campaign_id}/source-download-url возвращает presigned-ссылку на исходный CSV с контактами, действующую один час:
Страница кампании использует её в действии Скачать CSV. Ссылка работает только для кампаний, созданных из загруженного CSV, и файл должен принадлежать вашей организации. Чтобы начать, см. Campaigns API reference.