40 lines
4.9 KiB
Markdown
40 lines
4.9 KiB
Markdown
# Архитектура Голосового ИИ (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 (Сводка):** Что клиент сказал, что ИИ попытался сделать и почему перевел звонок на человека.
|
||
- **Таймлайн:** В историю обращений клиента логгируется, что "ИИ запрашивал перевод на специалиста".
|