Исходящие кампании AI-сотрудника: AI-дайлер и холодный обзвон

Как запустить обзвон роботом: статусы воронки, карточка агента, кампания в AI-дайлере, итог разговора в заявке, послезвонковый вебхук и аналитика. Плюс вариант, когда звонки идут прямо из кабинета ElevenLabs.

Голосовой агент умеет не только принимать звонки, но и звонить сам. Эта страница — об исходящей стороне: как собрать кампанию, куда ложится итог каждого разговора и что чаще всего ломается. Базовая настройка агента описана отдельно: AI-сотрудник на телефоне.

#Два пути, и они не равноценны

AI-дайлер CRMBatch calling ElevenLabs
Очередь, повторы, часы звонковв CRMв кабинете ElevenLabs
Лимит одновременных разговоровнастраивается в кампаниитолько тарифный
Блокировка заявки на время звонкаестьнет
Как находится заявкапо контексту звонкапо последним 9 цифрам номера
Статистикав воронке CRM вместе с остальными заявкамиотчёт кампании отдельно

По умолчанию берите AI-дайлер: одна система вместо двух, и результат сразу в воронке. Batch calling имеет смысл, когда кампания уже собрана на стороне ElevenLabs — этот случай описан в конце страницы.

#Шаг 1. Статусы воронки обзвона

Роботу нужно, куда складывать результат. Для холодного обзвона в CRM заводится отдельный набор статусов — ровно тех, между которыми различает итог разговора:

КодСтатусГруппа
meeting_bookedВстреча назначенаПринято
interestedЗаинтересованОбработка
send_infoОтправить материалыОбработка
wrong_personНе тот человекОбработка
recallПерезвонОбработка
not_interestedНе интересноОтмена
no_needНет потребностиОтмена
competitorПользуется конкурентомОтмена
do_not_callНе звонитьОтмена
invalid_contactНеверный контактОшибка

В промте агента перечисляйте только те коды, которые он имеет право ставить: модель поставит ровно то, что вы ей разрешили. Как устроены группы и переходы — в статье о статусах.

#Шаг 2. Проект и база

  1. 01

    Заведите отдельный проект под обзвон

    По нему кампания отбирает очередь и по нему же фильтруется статистика — холодная база не смешивается с рабочими заявками.

  2. 02

    Импортируйте базу

    Заявки → Импорт из файла, маппинг колонок на поля CRM: импорт из Excel и CSV.

  3. 03

    Обязательно смаппите комментарий

    В нём лежит карточка компании — вид деятельности, регион, сегмент. Именно она уходит агенту ещё до первого слова; без неё робот открывает разговор вслепую.

  4. 04

    Уберите очевидный брак

    Строки с пометкой об ошибочном номере в реестре лучше исключить руками: это не номера, а ошибки источника.

#Шаг 3. Карточка агента под исходящие

Интеграции → AI-сотрудник

  • Agent IDиз ElevenLabsобязательное

    идентификатор агента в кабинете

  • Номер для исходящихиз ElevenLabsобязательное

    телефонный номер, с которого звонит агент

  • Шлюзпусто

    для исходящих кампаний звонит сам ElevenLabs, телефония в разговоре не участвует

  • Проектвыборобязательное

    тот же, из которого набирается очередь

  • Менеджер для встречпользовательобязательное

    без него schedule_meeting отказывает — то есть цель кампании срывается ровно тогда, когда клиент уже согласился

  • Разрешить собирать корзинуфлаг

    для холодного обзвона выключить: в звонке ничего не продаётся

  • Лимит разговорасекундыобязательное

    с запасом над целевой длительностью: обрыв по таймауту убивает вызов set_call_outcome

#Шаг 4. Инструменты исходящего разговора

Все инструменты — POST с заголовком X-Asterisk-Secret; готовые адреса собраны в CRM на странице AI-сотрудника. Для исходящего звонка номер клиента берётся из контекста вызова.

ИнструментЧто делает
set_call_outcomeглавный: код статуса плюс заметка для менеджера. Вызывается ровно один раз, перед прощанием
schedule_meetingвремя встречи, канал (Meet/Zoom), мессенджер для ссылки, почта, тема. Ставит статус, назначает менеджера, создаёт напоминание
update_customerимя, мессенджер, дополнительный номер, почта — вызывается сразу, как только услышал, а не в конце
schedule_callbackдоговорённость перезвонить; в паре со статусом recall
end_callвстроенный инструмент ElevenLabs — только после set_call_outcome

Заметка из set_call_outcome — не второстепенное поле. Именно она, а не статус, является ценностью обзвона: «не интересно, потому что уже другая система» и «не интересно, потому что нет отдела продаж» — это два разных списка для следующей волны. Поэтому неизвестный код статуса заметку не теряет: статус можно проставить руками, а пересказанную роботом причину восстановить неоткуда.

#Шаг 5. Послезвонковый вебхук

Settings → Webhooks → Post-call webhook в кабинете ElevenLabs, авторизация HMAC, секрет — та же строка, что в поле «Ключ подписи вебхука» в Интеграции → ElevenLabs.

Рядом стоит включить «Самостоятельно забирать историю звонков»: раз в полчаса CRM сама идёт в ElevenLabs за разговорами, которых у неё ещё нет. Это закрывает три случая — вебхук не настроили, включили позже первых звонков, доставка потерялась. Дублей не будет: ключ тот же, идентификатор разговора.

#Шаг 6. Кампания

AI-дайлер → Создать кампанию

  • Проектвыборобязательное

    откуда набирается очередь

  • AI-сотрудниквыборобязательное

    карточка агента из шага 3

  • Одновременных разговоровчислообязательное

    упирается в лимит вашего тарифа ElevenLabs: выставленный с запасом, он тратит попытки — отказ в звонке считается неудачной попыткой

  • Попыток на заявкучисло

    обычно 2–3

  • Интервалы повторовминуты

    например 60 и 240

  • Дни и часырасписаниеобязательное

    звонок в девять утра или в семь вечера портит не один разговор, а репутацию номера

Дальше — *Наполнить очередь*: проект плюс статус. Очередь наполняется отбором, поэтому заявка, уже прошедшая обзвон и сменившая статус, в новую волну не попадёт. Монитор кампании обновляется раз в несколько секунд и показывает, кто именно сейчас в разговоре.

#Шаг 7. Аналитика разговоров

В кабинете агента настраиваются две разные вещи. Критерии оценки отвечают на вопрос «сработал ли разговор»: договорились ли о конкретных дате и времени, говорили ли с тем, кто принимает решение, честно ли ответил агент на вопрос «вы робот?», прекратил ли после явного отказа.

Сбор данных вытаскивает из разговора структурированные поля — какую систему используют сейчас, сколько людей работает с клиентами, что болит, какое возражение прозвучало. Это не дублирует set_call_outcome: инструмент пишет в заявку во время разговора, а аналитика даёт срез по всей кампании и отвечает на вопрос «кому звонить в следующей волне».

#Шаг 8. Проверка до первого звонка

  1. Инструмент lookup_customer отвечает и видит заявку по номеру — в ответе должен быть комментарий с карточкой компании.
  2. set_call_outcome с тестовым кодом статуса меняет заявку: проверьте историю.
  3. Один живой звонок на свой номер кнопкой «Позвонить AI-сотрудником» из карточки заявки.
  4. В карточке после него есть все трое: сам звонок с транскриптом, итог заметкой, новый статус в истории.
Ответ инструментаПричина
403 forbiddenне тот Asterisk Secret или заголовок не долетел
not_foundпо последним девяти цифрам номера заявки нет
unknown_status или status_applied: falseтакого кода статуса в этой CRM нет — вернитесь к шагу 1

Если звонок есть, а статуса нет — модель не вызвала set_call_outcome. Лечится описанием инструмента и порядком в промте, а не повторным запуском кампании.

#Если звонки идут прямо из ElevenLabs

Когда кампания собрана в кабинете ElevenLabs (batch calling), CRM в наборе номера не участвует — но результат всё равно может ложиться в заявку. Инструменты те же, меняется одно: заявка ищется по номеру телефона, по последним девяти цифрам, и берётся самая свежая заявка этого номера. Формат записи значения не имеет.

Доступ к инструментам даёт Asterisk Secret из настроек телефонии. Токен вебмастера здесь не подходит: он умеет ровно одно — создать заявку, и статусы существующей не меняет. Секрет живёт только в настройках инструмента на стороне ElevenLabs (сервер-сервер) — в браузер, на лендинг или в CSV его класть нельзя, а его смена мгновенно ломает все инструменты, которые им пользуются.

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

#Границы, о которых лучше знать заранее

  • «Недозвон» робот не ставит. Звонок без ответа — это разговор, которого не было, и ни один инструмент в нём не вызывался. Такие номера видны в очереди кампании как неудачные попытки.
  • Автоответчик — отдельный случай. Включите его распознавание, иначе голосовая почта выслушает весь скрипт и зачтётся как разговор.
  • Цены роботу лучше не называть. Стоимость зависит от количества пользователей и набора модулей, а холодный звонок не успевает выяснить ни того, ни другого: названная вслепую цифра либо отпугивает, либо потом расходится с реальным предложением.
  • Звонок робота — это персональные данные. Запись разговора сохраняется, поэтому на вопрос «откуда у вас мой номер» в промте должен быть честный ответ, а на «не звоните больше» — статус do_not_call, который не попадает в фильтр следующих волн.
  • Робот не скрывает, что он робот. На прямой вопрос отвечает честно и предлагает перевести на человека — это не только этика, но и то, что проверяется критериями оценки разговоров.