> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hubtalk.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Детали звонка

> Транскрипт и события, задержки хода, пост-аналитика, технический вердикт, запись разговора и вебхук-доставки.

# Детали звонка

Открыв строку, вы увидите весь разговор целиком со всем, что платформа зафиксировала о нём.

## Транскрипт и события звонка

Транскрипт показывает каждую реплику по порядку, а переходы между нодами отображаются прямо перед репликой той ноды, в которую произошёл переход. Рядом с транскриптом платформа показывает события звонка в том месте, где они произошли — у каждого есть иконка, краткая сводка и статус-пилюля, по клику на которую раскрывается полная информация (запрос/ответ, стадии или аргументы):

* **«Вызов функции»** — был вызван инструмент или функция, с аргументами, ответом и длительностью выполнения.
* **«Поиск по базам знаний»** — был выполнен запрос к базе знаний, с найденными пассажами и их релевантностью.
* **«Перевод звонка»** — попытка перевода, со стадиями (hold, dialing, answered, briefing, bridged и так далее) и итогом.
* **«Напоминание о тишине»** — было воспроизведено напоминание.
* **«Авто-завершение»** — звонок завершился автоматически, например после долгой тишины.
* **«Автоответчик»** — был обнаружен автоответчик, и агент оставил сообщение. У события бывает пометка **«маркер на промежуточном»**: автоответчик опознан по характерной фразе («вы позвонили…», «оставьте сообщение») прямо посреди приветствия, не дожидаясь, пока распознавание отдаст готовый результат.
* **«Абонент положил трубку»** — звонок завершил человек.
* **«Code-узел»** — выполнился code-шаг и обновил переменные.
* Событие с кодом `turn_rollback` — пауза расколола фразу абонента надвое; см. [реплику, склеенную из обрывков](#реплика-склеенная-из-обрывков) ниже.

Список типов этим не исчерпывается: там же появляются **«Наблюдатель»**, **«Коррекция агенту»**, **«Инцидент»**, **«Разметка паузы»**, **«Функция до звонка»** и **«Функция после звонка»**, ошибки распознавания, синтеза и модели. Статус-пилюля у события одна из: **ок**, **предупреждение**, **ошибка**, **в процессе**, **пропущено**, **таймаут**, **подавлена**.

События, произошедшие после последней реплики, отображаются хвостом под транскриптом. Некоторые реплики несут собственные пометки:

* **«прервана»** — реплика была прервана абонентом, показана только произнесённая часть.
* **«не прозвучало»** — реплика была сгенерирована, но абонент её не услышал; она показана приглушённой, чтобы можно было понять, что агент собирался сказать, не приняв это за реально услышанное. Подсказка у пометки различает **две причины**: звонок оборвался раньше, чем реплика зазвучала, — или речь перебили до первого звука.
* **«брифинг оператору»** — приватное сообщение, которое агент передал оператору-человеку во время перевода; абонент его не слышит.
* **«сказано во время реплики агента»** — реплика абонента, прозвучавшая поверх непрерываемой реплики агента; см. ниже.

Реплики, которые агент произносит **вне обычного хода разговора** — напоминание при тишине, прощание, сообщение на автоответчик, фраза на удержании, — показываются каждая отдельным блоком со своей меткой времени и своими метриками. Прерывание такой реплики правит именно её, а не предыдущую обычную. Такая реплика тоже получает пометку **«не прозвучало»**, если её перебили до первого звука.

<Note>
  **Перебивание обрезает ровно ту реплику, которую перебили.** Если на одном ходу агент говорил дважды, обрезка ляжет на вторую фразу и не тронет первую — ту, которую абонент действительно услышал.
</Note>

## Абонент говорил, когда перебивать было нельзя

Если на узле выключено перебивание, а абонент всё равно заговорил поверх реплики агента, его слова сохраняются отдельной записью с пометкой **«сказано во время реплики агента»**. Разговор при этом идёт своим чередом: **хода по такой реплике не было, и агент на неё не отвечал** — узел не разрешал себя перебить.

Запись видна везде, где виден разговор:

* в карточке звонка — пузырём абонента с этой пометкой;
* в стенограмме для пост-колл аналитики — строкой `Client [during agent's reply]: …`;
* в транскрипте [вебхуков](/ru/v4/webhooks) — у такой строки стоит `out_of_turn: true`;
* в выгрузках отчёта — как обычная реплика абонента.

В метриках ходов (`GET /v1/calls/{call_id}/turns`) такой записи нет: хода не было, мерить нечего. По той же причине она не увеличивает счётчик ходов в Истории.

<Warning>
  **Это ровно те слова, которые важнее всего не потерять.** Поверх дисклеймера абонент чаще всего говорит «не звоните мне больше» или «вы ошиблись номером». Если вы строите на транскрипте автоматику — отказы, реестр «не звонить», разбор жалоб, — читайте и записи с этой пометкой, а не только реплики внутри ходов.
</Warning>

<Warning>
  **Непрозвучавшая реплика не считается сказанной — и это меняет ход разговора**

  Реплика с пометкой **«не прозвучало»** не попадает ни в подсказку языковой модели на следующем ходу, ни в расшифровку для пост-колл аналитики, ни в разбор отсылок вроде «да, это он». Чего абонент не слышал, того для модели не было.

  Но потерянная реплика остаётся потерянной: агент её не переигрывает. Если вступление перебили до первого звука, абонент его так и не услышит — а разговор пойдёт дальше так, будто вступления не было.
</Warning>

На странице деталей также отображаются итоговые значения переменных звонка и версия сценария, на которой прошёл звонок.

## Реплика, склеенная из обрывков

Абонент, сделавший паузу внутри фразы — «Да… нет, не хочу», — для распознавания звучит как две реплики. Если агент к этому моменту ещё не издал звука, платформа [откатывает непроизнесённый переход](/ru/v4/platform/agents/building) и склеивает обрывки в одну реплику. История такого звонка читается не так, как звучит запись, поэтому стоит узнавать три вещи:

* **Одна реплика абонента там, где в записи их две.** На записи стоит `merged_from: N` — сколько обрывков склеено, — и список `fragments` с текстом, временем и фазами распознавания каждого. Время самой реплики и её фазы ASR и VAD — у **первого** обрывка: абонент начал говорить тогда. Языковая модель агента раскола не видит, ей достаётся одна обычная реплика.
* **Агент как будто повторяется.** Если продолжением оказался шум, а не речь, переход остаётся, а реплика узла просто произносится заново — под новым номером тёрна и без реплики абонента между ними. Событие `turn_rollback` рядом имеет статус `redo` и причину `noise`. Частые перебивания шумом — повод посмотреть настройки перебивания у агента, а не Историю.
* **Переход в узел, который ничего не сказал.** В деталях события отката есть `discarded_path` — узлы, куда диалог унесло по обрывку до того, как переход отменили. Это и есть объяснение перехода в транскрипте, под которым нет реплики.

Если откат **не** состоялся, то же событие со статусом `committed` называет причину: агент успел заговорить (`agent_spoke`), в отменённой попытке уже был вызов в ваши системы (`external_side_effect`), абонент услышал реплику (`audio_started`), сработал лимит в четыре обрывка (`limit`) или канал не передал признак звука (`no_signal`). Ни одна из них не влияет на технический вердикт звонка.

## Задержки хода диалога

Под каждым ходом стоит компактная строка задержек, по клику раскрывающаяся в детали. Фазы **складываются арифметически**: `ASR` + `ожидание` + `LLM` + `TTS` ≈ `ход целиком`.

* **ASR** — от конца речи абонента до финального транскрипта.
* **ожидание** — от финального транскрипта до фиксации конца реплики (производная величина: у потокового распознавания это остаток окна endpointing, у пакетного — около нуля).
* **LLM** — от транскрипта до первого токена ответа; внутрь этой фазы попадает вызов классификатора.
* **TTS** — от первого предложения в синтез до первого фрагмента звука.
* **ход целиком** — итог: от конца речи клиента до первого звука агента.

Фаза **VAD** (от конца речи до решения, что реплика закончена) целиком включает в себя ASR и поэтому с ней не суммируется — она показывается в развороте деталей, а не в компактной строке. У старых сессий производная «ожидание» считается на лету. Если провайдер не отдал точное время хода, значение помечается как оценка платформы.

<img src="https://mintcdn.com/hubtalk/cKl-cjuDGhk4sToG/images/v4_history_call_transcript_events.png?fit=max&auto=format&n=cKl-cjuDGhk4sToG&q=85&s=058d7be198d0eaee9998e42961e14abe" alt="Деталь звонка: транскрипт с событиями между репликами (переходы, предупреждение) и пометкой «не прозвучало»" width="1440" height="900" data-path="images/v4_history_call_transcript_events.png" />

## Пост-колл аналитика

Карточка **аналитики** показывает результат пост-колл анализа, когда он готов: резюме, тональность, бейдж успешности, таблицу извлечённых пользовательских полей и уровень аналитики. Если анализ был пропущен, карточка объясняет причину, например автоответчик или отсутствие речи. Кнопки **«Перезапустить аналитику»** и **«Перезапустить (глубокий уровень)»** запускают повторный анализ звонка.

Состав полей берётся из **той версии агента, которой шёл звонок**: версия, опубликованная, пока звонок ещё шёл, разбор этого звонка не меняет.

<Warning>
  Важно и другое: повторный запуск из кабинета читает **текущий черновик** агента, а не версию, которой шёл звонок. Для звонка месячной давности обычно это и нужно; если нет — сначала опубликуйте нужную версию или читайте исходный результат в записи самого звонка.
</Warning>

<img src="https://mintcdn.com/hubtalk/cKl-cjuDGhk4sToG/images/v4_history_analytics_card.png?fit=max&auto=format&n=cKl-cjuDGhk4sToG&q=85&s=0cfe4792d1b3127dccd51b877405cfc7" alt="Карточка Пост-аналитика с сообщением о неудавшемся анализе и кнопками повторного запуска" width="320" height="186" data-path="images/v4_history_analytics_card.png" />

## Техническое здоровье

Карточка **«Техническое здоровье»** показывает, были ли у звонка технические проблемы: **«ОК»**, **«Предупреждение»** или **«Ошибка»**, с перечислением конкретных причин (например, неудавшийся перевод, медленный ход разговора или ошибка распознавания речи). Если причин нет, карточка так и пишет: «Причин нет — звонок прошёл штатно».

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

## Код оператора у недозвона

У недозвона рядом с причиной показывается **числовой код, присвоенный оператором связи** — например «Занято (486)». Трактовки кодов у операторов различаются, поэтому платформа не выдаёт свою расшифровку, а прямо советует уточнять её у своего оператора.

Код есть в кабинете, в выгрузках отчётов, в [Web API](/ru/v4/web-api) и в [вебхуках](/ru/v4/webhooks) — у каждой строки, так что разбор выборки не требует ручного сопоставления. Отдельно стоит знать: причина «абонент отклонил» у большинства операторов на самом деле означает «занято», и платформа теперь различает эти два случая. Для исторических звонков кода нет — он не восстанавливается. Техническое здоровье отражает, как отработала техника звонка, — это отдельная характеристика и от качества разговора (тональность и успешность из аналитики), и от соблюдения правил (см. [инциденты](/ru/v4/platform/incidents)). Чтобы найти звонки с проблемами, возьмите фильтр **«Здоровье: любое»** на странице Истории.

<img src="https://mintcdn.com/hubtalk/cKl-cjuDGhk4sToG/images/v4_history_health_badge.png?fit=max&auto=format&n=cKl-cjuDGhk4sToG&q=85&s=a86753ec356b43b1240c528bfe576088" alt="Карточка Техническое здоровье с бейджем Предупреждение и причиной" width="320" height="219" data-path="images/v4_history_health_badge.png" />

<img src="https://mintcdn.com/hubtalk/cKl-cjuDGhk4sToG/images/v4_history_error_code.png?fit=max&auto=format&n=cKl-cjuDGhk4sToG&q=85&s=27ba6b3ac3247f377982760c758d9bed" alt="Недозвон с кодом оператора: «Неверный номер (404)» — при этом технический вердикт остаётся «ОК»" width="1440" height="900" data-path="images/v4_history_error_code.png" />

## Отменённый набор

Набор, остановленный до соединения — кнопкой в кабинете или запросом `POST /v1/calls/{id}/end` через [Web API](/ru/v4/web-api), — получает собственную причину **«отменён оператором»** в корзине «не соединились».

Что из этого следует:

* **попытка контакта на отмену не тратится**, частотный потолок на номер — тоже: вы остановили набор сами, платформа не считает это попыткой дозвониться;
* **техническое здоровье звонка отмена не портит** — это решение человека, а не сбой платформы;
* отмена функцией агента до набора и отмена командой извне — **разные причины**: в разборе инцидента и в отчётности кампании это разные события.

<Warning>
  **Исторические строки не переписаны.** Отличить в старых записях отменённый набор от честного «нет речи» нечем — такой информации в них просто не сохранилось. Разбивка по причинам на границе 22 сентября 2026 разъезжается.
</Warning>

## Запись разговора

Если звонок был записан, карточка **записи** показывает плеер с play/pause, регулировкой скорости воспроизведения, mute и скраббером, по которому можно кликать или тянуть вдоль волны, а также длительность, размер и формат записи и кнопку **«Скачать»**. Пока запись ещё финализируется, карточка показывает индикатор обработки; если запись не удалась или была удалена по истечении срока хранения, карточка сообщает об этом. Отдельный случай — **слишком короткий** звонок: абонент положил трубку сразу, записывать было нечего, и это не сбой записи.

Длительность в карточке записи — авторитетная, сохранённая платформой; оценка браузера используется только как запасной вариант, поэтому число в шапке сессии и длина аудио в плеере совпадают.

<Note>
  **Начало разговора попадает в запись целиком.** На входящем звонке это первая реплика абонента, на исходящем запись начинается с момента, когда абонент взял трубку, — гудки в файл не попадают.

  Если часть звука всё же потеряна, на её месте в записи стоит тишина, а карточка помечает пропуск: так видно, что аудио короче разговора, а не что абонент молчал. Порог срабатывания консервативный — помечаются заметные потери, примерно от секунды.
</Note>

<img src="https://mintcdn.com/hubtalk/9ArMFeq_K4HZh-Td/images/v4_history_recording_player.png?fit=max&auto=format&n=9ArMFeq_K4HZh-Td&q=85&s=e3c30e97f6b0c9753fa93d879670e856" alt="Карточка записи разговора с плеером" width="320" height="232" data-path="images/v4_history_recording_player.png" />

## Webhook-доставки

Карточка **webhook-доставок** перечисляет все webhook-уведомления, отправленные по этому звонку: событие, статус доставки (delivered, pending или dead), количество попыток, код ответа и историю попыток. Кнопка повтора позволяет вручную переотправить доставку.

## Действия

* **«Открыть агента»** — переход к агенту, который обработал звонок.
* **«Прикрепить в Copilot»** — добавляет звонок вместе с резюме, тональностью и извлечёнными полями в контекст Copilot-ассистента агента.
* **«Скачать лог»** — экспортирует полную запись звонка в файл JSON, включая транскрипт, события, переменные, аналитику и конфигурацию сценария, действовавшую на момент звонка. Файл может содержать персональные данные — обращайтесь с ним соответственно.
