Девять причин завершения звонка голосового агента и что чинить по каждой. Таблица по данным вкладки «Звонки» и переменной call_close_reason.
Причина завершения звонка в аналитике объясняет, что случилось на линии: клиент положил трубку, номер не ответил, сработал автоответчик или агент сам довёл сценарий до конца. Разбор по причинам показывает быстрее любого прослушивания записи, где ломается сценарий агента, а где подводит база номеров.
Возьмите отчёт за последнюю неделю и разложите звонки голосового агента на десятки: из каждых десяти семь обрываются раньше, чем разговор дошёл до цели. Само по себе число ничего не говорит — обрыв обрыву рознь, и без разбора причин все семь выглядят одинаково подозрительно.
Причина завершения звонка — это отметка в аналитике голосового агента, которая объясняет, чем закончился конкретный разговор: агент договорил, собеседник положил трубку, номер не ответил или сработал автоответчик.
Причины собраны на вкладке «Звонки» в разделе аналитики платформы Савви. Данные показываются сразу, без формирования отчёта, за последние 30 дней без сегодняшнего дня, с фильтрами по агенту и по каналу — все звонки, входящие, исходящие или тестовые.
Основной график здесь — круговая диаграмма «Доля звонков с известной причиной завершения». Важная оговорка: звонки, по которым причина не определилась, в эту диаграмму не попадают вовсе, поэтому сумма долей на графике не равна общему числу звонков за период. Показатель «Всего звонков» рядом уже включает тестовые вызовы, и для оценки реальной нагрузки на линию их стоит вычесть.
Проверьте на своих диалогах.Регистрация без карты, 500 ₽ на тест по промокоду BLOG500
Собрать агентаДевять причин закрывают весь диапазон исходов звонка, от штатного финала до сбоя на стороне сервиса. Технические значения из переменной call_close_reason пригодятся, если причину нужно передать дальше — в вебхук или условие обзвона.
| Причина | Что произошло | Что чинить |
|---|---|---|
Абонент положил трубку (participant_disconnected) | собеседник сам закончил разговор | смотреть вместе со средней длительностью: короткие звонки с таким исходом — вопрос к первой фразе |
Агент завершил (agent_finished) | сценарий отработан полностью, разговор закрыт по плану | это та доля, которую и растят настройкой инструкции |
Молчание абонента (participant_inactive) | собеседник замолчал дольше настроенной паузы | смягчить «Чувствительность к голосу» или увеличить «Паузу для завершения речи» |
Абонент не ответил (participant_no_answer) | исходящий звонок не подняли | вопрос к времени звонка и качеству базы |
Абонент занят (participant_busy) | линия собеседника была занята в момент вызова | повторный набор чуть позже, отдельным правилом обзвона |
Автоответчик (voicemail) | вызов попал на голосовую почту | пересмотреть время звонков по этому сегменту базы |
Переведён на оператора (transferred) | сработал перевод на менеджера | нормально, если по плану; частый рост доли — сценарий слишком легко эскалирует |
Лимит длительности (max_duration) | разговор упёрся в максимальную длительность из настроек | агент не доводит разговор до цели, сценарий стоит укоротить |
Внутренняя ошибка (internal_error) | сбой на стороне сервиса | смотреть детали в экспорте диалога, при повторах писать в поддержку |
Руководство платформы прямо связывает две строки таблицы с частыми ошибками настройки: рост «Молчания абонента» почти всегда означает, что распознавание речи выставлено слишком строго, а рост «Лимита длительности» — что агент не укладывается в отведённое время и упирается в потолок вместо того, чтобы закончить разговор самому.
Не каждый пропуск попадает в девять причин выше. Прежде чем звонок начнётся, ему нужен корректный номер телефона у контакта — если поле пустое или в нём записан неверный формат, вызов не запускается, и разбирать здесь нечего: причины завершения фиксируются только у звонков, которые реально соединились или хотя бы дозвонились до линии.
Разница на практике выглядит так: «Абонент не ответил» — это набранный номер, до которого никто не дошёл; отсутствующий номер — это вообще не набранный вызов, и в статистике вкладки «Звонки» он не оставит следа ни в одной из девяти причин. Перед запуском обзвона по базе стоит свериться, в каком поле карточки лежит телефон и в каком формате, — иначе часть строк таблицы просто пропустят звонок молча.
Эти две причины стоит проверять первыми: обе указывают именно на настройки голосового агента.
Молчание абонента лечится в блоке распознавания речи: параметр «Чувствительность к голосу» отвечает за то, насколько легко агент улавливает реплику, а «Пауза для завершения речи» задаёт, сколько тишины он готов терпеть перед завершением. Слишком строгие значения обрывают разговор на естественной паузе собеседника, который просто задумался перед ответом.
Руководство прямо рекомендует не трогать параметры распознавания речи и синтеза до первого разбора статистики. Правка вслепую до того, как накопились реальные звонки, чаще меняет одну проблему на другую, чем решает исходную.
Лимит длительности — сигнал другого рода: агент физически не успевает довести клиента до результата за отведённое время. Здесь обычно эффективнее сократить сам сценарий, чем поднимать потолок длительности: меньше уточняющих вопросов, короче вступление, конкретнее формулировка цели звонка в инструкции.
Переменная call_close_reason заполняется только после завершения звонка, и в этом её ограничение и её польза одновременно. Внутри самого разговора агент не может проверить условие по ней — исход ещё не наступил. Зато она отлично работает в том, что происходит следом: в вебхуке, в уведомлении менеджеру или в условии повторного обзвона.
Типовой пример — перезвон тем, кто не поднял трубку с первого раза. Условие обзвона проверяет значение participant_no_answer или participant_busy и ставит номер в очередь на повторный вызов через заданное время, без участия человека. Для текстовых каналов то же самое устройство разбирает материал про аналитику диалогов: там причина завершения — один из четырёх показателей, с которых стоит начинать оценку агента, здесь же она разложена по каждому конкретному значению. Полный список переменных голосового канала — в руководстве платформы.
Проговорите вслух результат за последнюю неделю отдельно по каждой из девяти причин, в стороне от общей цифры пропущенных звонков: так сразу видно, где раздутая доля обрывов означает несостоявшийся вызов из-за плохого номера, а где агент действительно не справляется со сценарием.
Дальше цикл простой: неделя наблюдения, одна правка по самой большой проблемной доле, снова неделя. Отдельно стоит свериться со сценарием у входящих — там перевод на оператора и то же молчание абонента разбираются в статье про голосового робота на входящих, и логика чтения причин там совпадает один в один.
На вкладке «Звонки» в разделе аналитики: там строится диаграмма «Доля звонков с известной причиной завершения» за последние 30 дней, не считая сегодня. Причина каждого звонка записывается в переменную call_close_reason и доступна в экспорте диалога.
Потому что причина завершения фиксируется только у звонка, который состоялся. Если у контакта в базе нет телефона или номер записан некорректно, вызов не запускается вовсе: дело в качестве данных контакта, до молчания на линии или занятого гудка дело просто не доходит.
Обычно это слишком строгая настройка чувствительности к голосу в блоке распознавания речи: агент не слышит собеседника и завершает звонок по паузе раньше, чем стоило бы. Проверяется правкой параметров «Чувствительность к голосу» и «Пауза для завершения речи».
Первое — это исходящий звонок, до которого никто не дошёл: линия была свободна, но трубку не взяли. Второе — короткий гудок «занято», когда собеседник в этот момент уже разговаривает. Оба значения относятся только к исходящим звонкам и никак не характеризуют сценарий агента.
Да, через условие обзвона или вебхук: переменная call_close_reason заполняется после завершения звонка и годится для правила вида «повторить вызов, если значение — participant_no_answer или participant_busy». Внутри самого разговора эта переменная не работает, потому что звонок к моменту её заполнения уже закончился.
Тестовый звонок из кабинета получает канал test_voice_call и попадает в общую статистику вкладки «Звонки» так же, как обычный вызов. При оценке реальной нагрузки и реального распределения причин тестовые звонки стоит исключать отдельно — фильтр по каналу «Тестовые» в аналитике для этого и нужен.