HappHapp Docs
Воркспейс

Контроль AI и передача человеку

Управляйте тем, когда отвечает AI, а когда чат берёт на себя оператор-человек

MarkdownOpen in ClaudeOpen in ChatGPT

В каждом чате есть переключатель контроля AI, чтобы команда вашего клиента могла оставить агента на автопилоте или в любой момент вмешаться вручную.

На скриншоте — разговор сразу после того, как AI вызвал turnOffAiMode: переключатель AI в заголовке чата выключен, баннер напоминает оператору, что он отвечает вручную, а последнее сообщение пришло от коллеги.

Переключение режима AI

  1. Откройте любой чат в Чаты (панель или мобильное приложение) и нажмите переключатель AI — изменение применяется сразу.
  2. Или через API: PATCH /api/chats/{chatId} с { "isUnderAiControl": false } (заголовок X-Access-Token: happ_your_token_here).
СостояниеПоведение
AI вкл. (isUnderAiControl: true)Агент автоматически отвечает на новые сообщения
AI выкл. (isUnderAiControl: false)Агент на паузе; сообщения ждут человека в панели

Когда AI выключен, aiDisableReason фиксирует причину:

ПричинаОписание
manualЧеловек выключил AI из панели или через API
autoAI вызвал turnOffAiMode, чтобы передать разговор
insufficient_balanceУ компании закончились кредиты; AI возобновится сам, как только баланс станет положительным

Передача человеку

Встроенный инструмент turnOffAiMode доступен всегда. Когда AI решает, что не может помочь, он вызывает инструмент, isUnderAiControl становится false, чат появляется в панели как требующий внимания, а WebSocket-событие CHAT_MODE_CHANGED оповещает всех клиентов. Настройте push-уведомления в Telegram, чтобы чат команды получал оповещение о каждой передаче.

Задайте правила передачи в промпте агента:

If the customer asks to speak to a human, or if you cannot resolve
their issue after 2 attempts, use the turnOffAiMode tool to transfer
the conversation to a human operator. Tell the customer that a team
member will respond shortly.

Автовозобновление и контекстное окно

  • После автоматической передачи AI возвращается сам, когда в чате наступает тишина. Задержка задаётся для каждого агента (aiAutoReturnDelayMinutes, по умолчанию 30 минут). После ручного выключения AI сам не включается — включить его снова должен человек.
  • Контекст — скользящее окно, а не фиксированный отрезок времени: агент видит последнюю часть разговора, которая помещается в контекст модели, а всё, что было до последней отметки саммари, заменено этим саммари. Старые сообщения остаются в базе, и их можно найти встроенным инструментом searchPreviousConversations.

Передача между агентами

PATCH /api/chats/{chatId} с { "assistantId": "new-assistant-uuid" }. Новый агент продолжает с последнего сообщения; вся история сохраняется.

Группировка сообщений

Сообщения, отправленные подряд, объединяются в одну серию: платформа ждёт 12 секунд тишины после последнего сообщения, прежде чем агент ответит, а чат, где самое старое неотвеченное сообщение ждёт дольше 30 секунд, подхватывает проверка, которая запускается раз в минуту. Клиенты часто присылают заказ по частям, поэтому агент отвечает один раз — на всю серию целиком. Пока изображение или голосовое сообщение ещё распознаётся, окно продлевается до завершения распознавания.

WebSocket-события

{
  "type": "CHAT_MODE_CHANGED",
  "payload": {
    "chatId": "uuid",
    "isUnderAiControl": false,
    "aiDisableReason": "auto"
  }
}

Подключайтесь к wss://api.happ.tools для обновлений в реальном времени.

API: api.happ.tools/reference

Дальше

Help me solve it

Happ answers right away and hands over to a manager when needed.

На этой странице