# Архитектура Голосового ИИ (Voice AI V1) Этот документ описывает техническое устройство и жизненный цикл обработки входящих голосовых звонков с помощью ИИ-оператора. ИИ интегрирован поверх базовой телефонии Asterisk и не заменяет ее полностью, выступая как первая линия поддержки (L1). ## 1. Ключевые принципы 1. **AI-first**: Звонок сначала направляется ИИ, если очередь настроена соответствующим образом. 2. **Перехват звонка (Handoff)**: Исходный звонок детерминированно переключается на человека-оператора, если ИИ не может решить проблему или если клиент явно просит человека. 3. **Единый источник истины**: Asterisk остается мастер-системой для SIP-потока, записи звонков и маршрутизации. 4. **Безопасность (Read-Only)**: В версии V1 ИИ работает исключительно на чтение и выдачу справочной информации. Апдейт критичных финансовых данных в базе строго запрещен для ИИ и требует переключения на человека. ## 2. Архитектура обработки звонка Процесс обработки звонка ИИ разделен на два основных микросервиса: - **`ai_voice_runtime_service` (Аудио-прослойка):** Осуществляет прием аудио-потока. Работает в Real-time. Слушает аудио (через ASR модель) и отправляет синтезированную речь обратно клиенту (через TTS модель). Также отлавливает попытки клиента перебить робота (Barge-in), мгновенно прерывая воспроизведение. - **`ai_orchestrator_service` (Мозг ИИ):** Не работает со звуком. Получает только готовый текстовый транскрипт (реплику). Принимает решение: 1. Найти знания в `kb-service` (RAG). 2. Сгенерировать текстовый ответ для клиента (который будет озвучен через TTS). 3. Если запрос слишком сложный — отправить команду "Переключить на живого человека". ## 3. Флоу входящего звонка (Step-by-step) 1. Абонент звонит на платформу. 2. **`asterisk-bridge-service`** улавливает событие и решает направить звонок в `voice_lab`. 3. Поднимаются две параллельные сессии: `voice_ai_session` (отслеживание аудио) и `ai_session` (бизнес-логика). 4. Абонент подключается к медиа-интерфейсу `ai_voice_runtime_service`. Проигрывается дисклеймер: "Здравствуйте, я голосовой помощник...". 5. Абонент озвучивает свой вопрос. 6. ASR распознает вопрос и отправляет текст в **`ai_orchestrator_service`**. 7. Оркестратор смотрит историю клиента, ищет ответ в базе знаний, генерирует ответ и возвращает команду в runtime "Скажи это". 8. Если оркестратор понимает, что нужна помощь: - Отправляет сигнал `needs_handoff` с детальной "Сводкой ИИ" для оператора. - Звонок перехватывается, и абонент слушает музыку ожидания в очереди к живым людям. ## 4. Интеграция с Operator UI Когда звонок поступает к оператору после ИИ, оператор не видит отдельный ИИ-интерфейс. Он видит стандартную карточку звонка. Но внутри этой карточки динамически выводится: - **AI Summary (Сводка):** Что клиент сказал, что ИИ попытался сделать и почему перевел звонок на человека. - **Таймлайн:** В историю обращений клиента логгируется, что "ИИ запрашивал перевод на специалиста".