AGONTS

Очередь операторов

Hand-off живому человеку, когда бот не справляется. Интерфейс, статусы, приоритеты.

Если агент не справился или клиент попросил человека — разговор попадает в очередь, где живой оператор его подхватывает. Без потери истории, без повторных вопросов. Это обязательная часть любого production-бота.

Зачем нужно

Никакой LLM не решит 100% случаев. Примите это как факт и проектируйте с учётом. Типичная статистика на production-ботах:

  • 60-80% случаев — бот решает сам.
  • 10-25% — нужен человек (сложный случай, жалоба, нестандарт).
  • 5-10% — клиент сразу просит человека, ничего не обсуждая.

Hand-off на оператора — не костыль, а обязательный элемент нормальной системы. Без него:

  • Клиенты с жалобами остаются без решения → репутация компании падает.
  • Сложные сделки (крупная сумма, нестандартный запрос) — теряются.
  • Регулируемые кейсы (фин. консультация, мед. советы) — юридически рискованны без участия человека.

Что даёт хорошо настроенный hand-off

Сохранение истории

Оператор видит, что клиент говорил боту — не переспрашивает, не раздражает.

Эскалация без трения

Клиент даже не замечает момент передачи (для голоса — с автоматическим TTS).

Distribution по приоритету

Жалоба в красной зоне → быстро берут. Простое уточнение → в общей очереди.

SLA контроль

Если клиент ждёт дольше 60 сек — карточка становится красной, уведомляет супервайзера.

Возврат боту

Оператор решил главное → отдаёт дальше боту, освобождает руки для следующего клиента.

API-интеграция

Можно использовать не наш интерфейс оператора, а свой help-desk / колл-центр через API.


Три триггера передачи

Во flow есть нода transfer-human. Когда разговор её достигает, сессия помечается waiting_human и всплывает в очереди.

Типичные условия для срабатывания:

  • Клиент три раза подряд не дал валидного ответа на вопрос.
  • LLM вернул «не знаю» или признал, что не понимает.
  • Клиент использовал слова-триггеры: «жалоба», «претензия», «оператор», «человек», «живой» и т.п.
  • Сработало бизнес-правило: сумма заказа > 100К рублей → только с менеджером.
  • Специфичные темы: юр-вопросы, жалобы на здоровье, финансовые риски.

Реализация: intent-router или decision-нода во flow → если условие выполнилось → transfer-human с параметрами priority и reason.

Пример:

[intent-router]
  ├─ intent = "complaint" → [transfer-human, priority=9, reason="Жалоба"]
  ├─ intent = "legal_q"   → [transfer-human, priority=7, reason="Юр. вопрос"]
  └─ ...

Кнопка «Соединить с человеком» в чат-виджете. Простой и очевидный выход для клиента.

Для голоса агент распознаёт фразы:

  • «Дайте мне человека / оператора / живого сотрудника».
  • «Я хочу поговорить с менеджером».
  • «Переключите на [имя]».
  • «Соедините с офисом».

Все эти фразы в системном промпте агента привязаны к немедленному вызову transfer-human с priority=5 (стандартный).

Нюанс: не все просьбы про «человека» должны срабатывать. Если клиент говорит «я человек», «по-человечески объясните» — это не триггер. LLM обычно корректно различает.

Супервайзер видит разговор в live-списке и перехватывает. Это не триггер, а принудительная передача от имени оператора.

Когда полезно:

  • VIP-клиент зашёл в чат — бот обслужит, но вы хотите лично.
  • Видите, что бот «завис» на странном диалоге — вмешиваетесь.
  • Нужно сделать апсейл на конкретной сделке — встреваете в конце разговора бота.
  • Тренировка операторов — супервайзер смотрит и подстраховывает.

Как работает: в списке активных сессий нажимаете «взять» → статус меняется с ai_active на human_active, бот замолкает, вы начинаете отвечать.


Статусы сессии

Жизненный цикл в одной картинке:

    [ai_active]

       ├─ бот сам или клиент попросил → передача


  [waiting_human] ─── оператор берёт ──▶ [human_active]

                                              ├─ оператор закрывает ─▶ [closed]

                                              └─ оператор возвращает ─▶ [ai_active]

Статусы:

  • ai_active — общается бот. Основной статус для 70-90% сессий.
  • waiting_human — ждёт оператора в очереди. Визуально подсвечивается по приоритету и времени ожидания.
  • human_active — разговор ведёт живой оператор. Бот молчит, но слышит / видит всё.
  • closed — разговор завершён. Архивная запись, доступна для просмотра и аналитики.

Работа оператора

Интерфейс «Очередь»

В сайдбаре слева — пункт Очередь. Три колонки:

Ожидают (waiting_human)

Сортировка: приоритет × время ожидания. Самые критичные наверху. Цветовая индикация SLA.

Мои (human_active)

Сессии, которые я взял и активно веду. Параллельно — обычно 2-5.

Завершённые (closed)

Мои сессии за последние 24 часа. Для пересмотра / переоткрытия.

Процесс взятия сессии

Нажмите «Взять» на карточке

Сессия исчезает из «Ожидают» (не может быть взята другим оператором благодаря anti-double-pickup). Переходит в «Мои».

Открывается рабочее окно

Слева: профиль клиента

  • Имя, телефон, email.
  • История прошлых сессий (если есть).
  • Значения слотов, собранных ботом.
  • Привязанные CRM-данные (если есть интеграция).

Центр: хронология разговора

  • Все сообщения клиента, бота, ваши.
  • С момента вашего взятия бот замолкает.
  • Можно прокрутить вверх и увидеть, что клиент говорил боту.

Справа: инструменты оператора

  • Подсказки от ИИ (по вашему запросу — «что ответить?»).
  • Поиск по базе знаний.
  • Быстрые действия (перевод на коллегу, создание тикета).
  • Заметки (видны только коллегам, не клиенту).

Ответ клиенту

Печатаете в поле ввода → Enter → сообщение уходит клиенту тем же каналом, что и сессия (чат / голос / SIP).

Для голосовых сессий: ваш текст автоматически озвучивается TTS. Ответ звучит голосом того же бота — клиент не замечает момента передачи. Плавный hand-off.

Закрытие или возврат боту

Когда вопрос решён — выбираете один из трёх вариантов:

  • «Закрыть» → статус closed. Диалог в архиве.
  • «Вернуть агенту» → статус ai_active, бот продолжает разговор с того же места.
  • «Передать коллеге» → сессия идёт в очередь с вашим выбранным приоритетом и заметкой.

Быстрые действия оператора

  • /note — добавить внутреннюю заметку, не видимую клиенту.
  • /transfer @sergey — передать коллеге напрямую.
  • /close — закрыть сессию.
  • /kb поиск — быстрый поиск в базе знаний.
  • /suggest — попросить ИИ предложить ответ (AI-assist).

Приоритет в очереди

Сессии в waiting_human сортируются по:

Приоритет (0-9)

Задаётся нодой transfer-human в flow. Примеры:

  • 0-2 — любопытствующие, не срочные вопросы (по умолчанию нет).
  • 3-5 — стандартные эскалации (клиент просто попросил человека).
  • 6-8 — сложные кейсы (юр. вопрос, нестандарт).
  • 9 — критичные (жалоба, конфликт, клиент грозит судом).

Выше приоритет — выше в списке у оператора.

Время ожидания

При одинаковом приоритете — чем дольше ждёт, тем выше. Предотвращает «забытость» сессий в общей массе.

SLA

Если план или канал имеет SLA (например, 60 секунд), карточка становится красной после превышения. Визуальная тревога для оператора и супервайзера.

Отображение причины

На карточке видна причина эскалации (поле reason из ноды transfer-human):

  • «Жалоба» — красным цветом.
  • «Юр. вопрос» — оранжевым.
  • «Не понял после 3 попыток» — жёлтым.
  • «Клиент попросил человека» — зелёным (не критично).

Оператор сразу понимает контекст до открытия сессии.


Live-обновления

Очередь подключена к SSE-стриму. Новые сессии появляются в реальном времени, без перезагрузки страницы.

Уведомления

  • Звуковой сигнал при новой сессии (настраивается в личном профиле оператора, можно отключить).
  • Цветовая индикация превышения SLA.
  • Счётчик на favicon — количество ожидающих сессий, видно в соседней вкладке браузера.

Мобильный интерфейс

Есть мобильная версия (responsive). Супервайзеры могут мониторить с телефона.


Несколько операторов

Anti-double-pickup

Один оператор взял сессию → она скрывается у всех остальных. Нет ситуации «два оператора одновременно пишут клиенту».

Технически: при клике «Взять» — атомарная операция в БД, владельцем становится один, другие получают свежий список.

Параллельная работа

Оператор может вести несколько сессий одновременно (обычно 2-5). Настраивается лимит в настройках роли оператора.

Типичные лимиты:

  • Текстовые чаты: 3-5 параллельно.
  • Голосовые звонки: 1 активный (физически не может параллелить).
  • Комбинация: 1 звонок + 2-3 чата.

Timeout и возврат

Если оператор «исчез» (закрыл вкладку, уснул, отвлёкся):

  • После таймаута (по умолчанию 3 минуты без ответа) сессия возвращается в очередь с пометкой «возвращена от оператора».
  • Клиенту в это время виден индикатор «Собеседник печатает…» чтобы не думал, что его забыли.

Метрики

Ключевые показатели здоровья очереди. Смотрите в Очередь → Статистика или на дашборде.

KPI для супервайзера

  • AWT (Average Wait Time) — среднее время ожидания в очереди. Цель: <60 сек.
  • AHT (Average Handling Time) — средняя длительность разговора с оператором. Цель: 3-5 мин (дольше — оператор не эффективен, короче — может быть недорешённый вопрос).
  • Эскалации/день — сколько раз за день бот передавал человеку. Растёт = бот деградирует. Падает = бот улучшается.
  • SLA compliance — процент сессий, взятых в SLA. Цель: 90%+.
  • CSAT (после разговора, если настроен опрос) — оценка клиента. Цель: 4+ из 5.

KPI для отдельного оператора

  • Сессий в день — сколько обработал.
  • Среднее AHT — скорость.
  • CSAT по его сессиям.
  • % возвратов боту — сколько отдал обратно (хороший показатель — 30-50%, меньше — оператор «за всё отвечает», больше — уходит в лень).
  • % повторных обращений — если клиент вернулся в течение 7 дней с той же проблемой → оператор не решил в первый раз.

Интеграция с внешним колл-центром

Если у вас уже есть help-desk / колл-центр (Zendesk, ServiceNow, Freshdesk, самописный) — можно использовать его вместо встроенного интерфейса оператора.

Как это работает

Платформа отдаёт события очереди через SSE-стрим (GET /operators/queue/stream). Ваша система подписывается, получает:

  • Новую сессию в очереди (с полной историей).
  • Обновление статуса сессии.
  • Новое сообщение клиента.

Ваши операторы работают в знакомом интерфейсе. Платформа — только «движок» для AI-части.

REST API

  • GET /operators/queue/stream — live-стрим новых событий.
  • GET /operators/queue — снапшот текущей очереди.
  • POST /operators/sessions/:id/claim — взять сессию.
  • POST /operators/sessions/:id/send-message — ответить клиенту.
  • POST /operators/sessions/:id/close — закрыть сессию.
  • POST /operators/sessions/:id/return-to-ai — вернуть боту.
  • POST /operators/sessions/:id/transfer/:userId — передать коллеге.

Подробные OpenAPI-спеки — в разделе Архитектура.

Типичная интеграция

Ваш help-desk подключается к SSE-стриму AG0NTS.

При появлении новой сессии — создаётся тикет в help-desk с полным контекстом (история, слоты, метаданные).

Оператор отвечает в вашем интерфейсе.

Ответ через API уходит обратно в AG0NTS, клиент получает.

Закрытие тикета в help-desk → автоматическое закрытие сессии в AG0NTS.


Права

Роли в воркспейсе (см. раздел Основные понятия):

  • Viewer — только смотрит статистику очереди.
  • Operator — видит очередь, берёт сессии, отвечает.
  • Engineer — всё выше + настраивает flow-эскалации.
  • Admin — всё выше + настраивает приоритеты, SLA, лимиты параллельности.

Отладка типичных проблем


Паттерны для эффективной работы команды

Паттерн 1: двухуровневая поддержка

  • Уровень 1: бот + простые операторы (2-3 мин на сессию).
  • Уровень 2: опытные специалисты (сложные случаи, 10+ мин на сессию).

Бот передаёт L1. L1 решает типовое или эскалирует L2.

Экономика: L1 = $10/час, L2 = $25/час. Если 80% L1 справляется сам, а 20% идёт на L2 — средняя стоимость разговора снижается на 40% по сравнению с «все операторы L2».

Паттерн 2: тематические очереди

  • Очередь «Продажи» — приоритет на новых клиентов.
  • Очередь «Поддержка» — действующие клиенты.
  • Очередь «Жалобы» — только жалобы, берут опытные.

Разделение через reason ноды transfer-human. Разные операторы видят разные очереди.

Паттерн 3: мониторинг качества

Супервайзер раз в день смотрит случайные 5-10 закрытых сессий — проверяет, правильно ли оператор отвечал, нет ли грубости, соблюдает ли скрипты.

Найденные проблемы → индивидуальный фидбек / тренинги.

Паттерн 4: возврат боту после решения

Если оператор решил конкретный вопрос, но клиент может задать ещё — возвращайте сессию боту вместо закрытия.

Бот продолжит диалог, клиенту не придётся создавать новую сессию. Операторы освобождаются быстрее.


On this page