Исходящие кампании AI-сотрудника: AI-дайлер и холодный обзвон
Как запустить обзвон роботом: статусы воронки, карточка агента, кампания в AI-дайлере, итог разговора в заявке, послезвонковый вебхук и аналитика. Плюс вариант, когда звонки идут прямо из кабинета ElevenLabs.
Голосовой агент умеет не только принимать звонки, но и звонить сам. Эта страница — об исходящей стороне: как собрать кампанию, куда ложится итог каждого разговора и что чаще всего ломается. Базовая настройка агента описана отдельно: AI-сотрудник на телефоне.
#Два пути, и они не равноценны
| AI-дайлер CRM | Batch 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. Проект и база
- 01
Заведите отдельный проект под обзвон
По нему кампания отбирает очередь и по нему же фильтруется статистика — холодная база не смешивается с рабочими заявками.
- 02
Импортируйте базу
Заявки → Импорт из файла, маппинг колонок на поля CRM: импорт из Excel и CSV. - 03
Обязательно смаппите комментарий
В нём лежит карточка компании — вид деятельности, регион, сегмент. Именно она уходит агенту ещё до первого слова; без неё робот открывает разговор вслепую.
- 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. Проверка до первого звонка
- Инструмент
lookup_customerотвечает и видит заявку по номеру — в ответе должен быть комментарий с карточкой компании. set_call_outcomeс тестовым кодом статуса меняет заявку: проверьте историю.- Один живой звонок на свой номер кнопкой «Позвонить AI-сотрудником» из карточки заявки.
- В карточке после него есть все трое: сам звонок с транскриптом, итог заметкой, новый статус в истории.
| Ответ инструмента | Причина |
|---|---|
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, который не попадает в фильтр следующих волн. - Робот не скрывает, что он робот. На прямой вопрос отвечает честно и предлагает перевести на человека — это не только этика, но и то, что проверяется критериями оценки разговоров.