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

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

  1. Загрузите CSV с контактами — в нем должен быть столбец phone_number; все дополнительные столбцы станут initial_context для каждого звонка
  2. Создайте кампанию — привяжите ее к воркфлоу, задайте параллелизм, окна расписания и поведение повторов
  3. Запустите ее — Агентика начнет обзванивать контакты в пределах вашего лимита параллелизма
  4. Следите за прогрессом — отслеживайте число обработанных, завершенных, неудачных и ожидающих контактов в реальном времени
  5. Ставьте на паузу и возобновляйте — можно остановить и перезапустить кампанию в любой момент без потери прогресса

CSV с контактами

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

Расписание и параллелизм

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

Поведение повторов

Агентика может автоматически повторять попытки для контактов, которые не ответили или были заняты. Вы задаёте число повторов, паузу между ними и то, какие исходы вообще стоит повторять:
max_retries принимает значения 0–10, retry_delay_seconds — 30–3600. Флаг retry_on_voicemail пока ни на что не влияет: повторяются только исходы «занято» и «без ответа» — распознавание автоответчика ещё не передаёт свой исход в телефонные статусы.

Защита от сбоев (circuit breaker)

Защита от сбоев автоматически ставит кампанию на паузу, когда доля неудачных звонков становится слишком высокой. Это защищает от лишних расходов и проблем с репутацией телефонии из-за неправильно настроенного агента или плохого списка контактов. Когда она включена, Агентика отслеживает долю неудач в скользящем временном окне. Если показатель превышает порог, кампания автоматически ставится на паузу; возобновить ее нужно вручную после расследования проблемы. Кампания, остановленная защитой от сбоев, ведет себя как вручную поставленная на паузу: текущие звонки нормально завершаются, а после устранения причины кампанию можно возобновить.

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

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

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

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

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

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

Результаты

Звонок каждого контакта создает запись запуска с полным транскриптом, записью разговора и собранным контекстом, как при ручном запуске. Чтобы получить их все, используйте эндпоинт получения запусков кампании.

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

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

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

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