Skip to main content

Проверка, чат-тест, голосовой тест, Copilot

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

Проверка. Ошибки блокируют публикацию, предупреждения — нет. Здесь честное предупреждение учебного агента: напоминание при молчании (8 с) прозвучит раньше таймера ответа (12 с).

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

Тест → Голосовой звонок. Звонок из браузера по черновику или по опубликованной версии, со своими переменными звонка и экспортом метрик задержки.

Старт теста с выбранной ноды

Ноду в середине графа не нужно доразговаривать от начала: разговор идёт по рёбрам от Begin через приветствие, сбор данных и ветвления, и попасть в нужную ветку с первой попытки удаётся не всегда — одна фраза не так понята классификатором, и разговор ушёл в соседнюю ветку. Выделите ноду на канвасе — и в тест-панели появится кнопка «▶ С ноды <имя>». Сессия начинается сразу с неё: ребро от Begin не проходится, нода исполняется тем же механизмом, что при обычном приходе по ребру. Работает и в чате, и в голосовом тесте. «↺ Заново» перезапускает с той же ноды, поэтому один участок можно прокрутить подряд сколько угодно раз. Без выделения и на ноде Begin кнопки нет — предлагать бессмысленное действие незачем. В Истории сессии старт с ноды помечен отдельным событием с именем ноды: читающий запись не гадает, почему разговор начался с середины.
Переменные пути не заполняются — это главное, что нужно знать.Сессия получает только значения по умолчанию из флоу. Если нода читает переменную, которую заполняет нода выше по пути, переменная будет пустой, и нода поведёт себя не так, как в живом разговоре. Это не дефект: собрать такие значения автоматически нельзя надёжно — в переменные пишут ещё и глобальные ноды, и результаты функций, и статический разбор графа дал бы неверную картину.Синтетической истории разговора тоже нет. Движок не выдумывает реплики, которые «были бы» сказаны по пути к ноде: транскрипт начинается прямо с неё.
Границы, о которых стоит знать заранее:
  • Только тестовые входы. Публичный API, телефония и передача звонка другому агенту поле стартовой ноды не принимают. Разговор с реальным клиентом, начатый с середины и с пустыми переменными, — это дефект, а не возможность.
  • Вход один — кнопка в тест-панели. Контекстного меню на канвасе нет.
  • Внутрь опубликованного компонента стартовать нельзя: у нод его тела нет собственного выделения на канвасе. Для черновика это работает — нода-компонент резолвится в свою точку входа.

Как читать трейс чат-теста

Каждый ход в тест-панели показывает не только реплику, но и решение движка: какой переход сработал и по какому типу (PROMPT, EQUATION, ALWAYS, DEFAULT), сколько заняли классификатор и генерация, что вернул вызов функции, что нашлось в базах знаний, какая цель закрылась. Это главный отладочный инструмент: если агент «ушёл не туда», ответ виден в строке перехода, а не в догадках.
Тест-панель: живой диалог с трейсом переходов, вызовом функции и таймингами

Тест → Чат. Реальный прогон: клиент просит перенести визит, срабатывает промпт-переход, extract достаёт дату, Function отдаёт мок-ответ CRM (200), формула ведёт в узел с окнами. Переключатели сверху: rigid/flex, черновик/опубликованная, заглушки HTTP или реальные вызовы.

Обязательный минимум тестов перед публикацией
  • Счастливый путь целиком — до End.
  • Каждая ветка ветвлений: «окон нет», «CRM не ответила», «клиент отменяет».
  • Оба глобальных узла: вопрос не по теме (и возврат в сценарий) и просьба человека.
  • Молчание клиента — сработал ли таймер и напоминания.
  • Голосом — минимум один полный звонок: только там слышны паузы, перебивания и произношение чисел и дат.
Панель Copilot в редакторе

Copilot — правки словами: «добавь узел, который спрашивает удобное время, и веди его в проверку слотов». Copilot никогда не меняет флоу молча: он показывает предложение, вы принимаете или отклоняете.

Предложение проверяется и применяется целиком: когда новая ветка приходит одним предложением, шаг внутри него может ссылаться на узел, который создаётся следующим шагом того же предложения. А если применить что-то нельзя, Copilot называет настоящую причину с путём до поля, а производные симптомы честно помечает как «зависит от операции …» — чтобы одна опечатка не превращалась в пять одинаковых карточек «Неприменимо».