Телефония и SIP
Голосовые агенты могут принимать и совершать телефонные звонки через SIP-интеграцию. Это позволяет подключить AI-агента к реальным телефонным линиям для автоматизации call-центра, обработки входящих звонков и проведения исходящих кампаний. Подробнее о конфигурации см. в разделе Телефония и SIP.
Архитектура телефонии
Телефонная интеграция построена на базе LiveKit SIP Bridge:
Телефон → [SIP-провайдер] → [SIP-транк] → [LiveKit SIP Bridge] → [Voice Agent]
Для работы телефонии необходимо настроить:
- SIP-транки -- подключения к SIP-провайдерам
- Правила маршрутизации (Dispatch Rules) -- определяют, какой агент обрабатывает звонок
- Телефонные номера -- номера, привязанные к агентам
SIP-транки
SIP-транк -- это подключение к телефонному провайдеру, через которое проходят голосовые звонки.
Входящие транки (Inbound)
Входящие транки принимают звонки из телефонной сети.
| Параметр | Описание |
|---|---|
| Name | Название транка для идентификации |
| Numbers | Телефонные номера в формате E.164 (например, +15551234567) |
| Allowed Addresses | Список разрешённых IP-адресов / CIDR для фильтрации (белый список) |
| Media Encryption | Шифрование медиа: Disabled, Require, Prefer |
| Headers | Передача SIP-заголовков: None, All, X-Headers |
| Krisp Enabled | Включить шумоподавление Krisp на входящем аудио |
Исходящие транки (Outbound)
Исходящие транки используются для совершения звонков из системы.
| Параметр | Описание |
|---|---|
| Name | Название транка |
| Address | Адрес SIP-сервера (IP или hostname) |
| Numbers | Исходящие номера в формате E.164 |
| Transport | Транспортный протокол: Auto, UDP, TCP, TLS |
| Media Encryption | Шифрование медиа |
| Auth Username | Имя пользователя для аутентификации |
| Auth Password | Пароль для аутентификации |
Номера телефонов должны быть в формате E.164: знак +, код страны, номер без пробелов и дефисов. Пример: +14155551234.
Смотрите полную настройку SIP-транков и правил маршрутизации в разделе интеграций.
Правила маршрутизации (Dispatch Rules)
Правила маршрутизации определяют, как входящие SIP-звонки направляются к голосовым агентам.
Параметры правила
| Параметр | Описание |
|---|---|
| Name | Название правила |
| Rule Type | Тип маршрутизации: Room (в комнату), Individual (индивидуальная), Direct (прямая) |
| Room Prefix | Префикс для имени комнаты LiveKit |
| Agent ID | ID голосового агента, который будет обрабатывать звонок |
| Trunk IDs | Фильтр по конкретным SIP-транкам (опционально) |
| Phone Numbers | Фильтр по номерам телефонов (опционально) |
| Hide Phone Number | Скрыть номер звонящего |
Типы маршрутизации
- Room -- каждый звонок создаёт отдельную комнату LiveKit с указанным префиксом. Это стандартный режим для большинства сценариев.
- Individual -- каждый звонок получает индивидуальную комнату
- Direct -- прямая маршрутизация в конкретную комнату
Пример настройки
Для маршрутизации всех звонков на номер +15551234567 к агенту поддержки:
- Создайте входящий SIP-транк с номером
+15551234567 - Создайте правило маршрутизации:
- Rule Type:
Room - Agent ID: ID вашего голосового агента
- Phone Numbers:
+15551234567
- Rule Type:
Телефонные номера
Вкладка Номера в разделе "Голосовые агенты" позволяет управлять телефонными номерами, привязанными к агентам.
Добавление номера
Для добавления номера нажмите Добавить номер и заполните:
| Поле | Описание | Обязательное |
|---|---|---|
| Номер телефона | Номер в формате E.164 (например, +15551234567) | Да |
| Название | Понятное название для номера (например, "Линия поддержки") | Нет |
| Провайдер | Телефонный провайдер (Twilio, Vonage) | Да |
| Агент | Голосовой агент, обрабатывающий звонки на этот номер | Нет |
Управление номерами
В таблице номеров отображаются:
- Номер -- телефонный номер
- Название -- дружественное имя
- Провайдер -- SIP-провайдер
- Агент -- привязанный голосовой агент (или "Не назначен")
- Статус -- активен / неактивен, верифицирован
Доступные действия (через контекстное меню):
- Копировать номер
- Редактировать
- Удалить
Исходящие звонки
Платформа поддерживает инициирование исходящих звонков через API.
Параметры исходящего звонка
| Параметр | Описание |
|---|---|
| phone_number | Номер для звонка (E.164) |
| agent_id | ID голосового агента |
| trunk_id | ID исходящего SIP-транка (опционально, выбирается автоматически) |
| caller_id | Номер, отображаемый у вызываемого абонента |
| room_name | Имя комнаты LiveKit (генерируется автоматически) |
Определение автоответчика (AMD)
При исходящих звонках автоматически запускается Answering Machine Detection (AMD) -- определение, ответил ли живой человек или автоответчик.
AMD работает следующим образом:
- Собирает первые ~5 секунд транскрипции после ответа
- Отправляет текст на классификацию с помощью LLM
- Определяет тип ответа:
human(человек),voicemail(автоответчик),ivr(голосовое меню) - Если определён автоответчик или IVR -- звонок автоматически завершается
AMD работает по принципу "fail-open": при любых ошибках (нет транскрипции, ошибка LLM) система считает ответ человеческим. Это гарантирует, что живые люди не будут сброшены из-за ошибок определения.
Ожидание ответа
При исходящем звонке агент не начинает говорить сразу. Вместо этого:
- Ожидает появления аудио-трека от удалённого участника (индикатор ответа на звонок)
- Делает короткую паузу (~0.8 сек), чтобы пользователь успел поднести телефон к уху
- Произносит приветственное сообщение
Таймаут ожидания ответа: 60 секунд.
Интеграция с MMD Smart
Платформа поддерживает интеграцию с MMD Smart -- системой call-центра для входящих и исходящих звонков.
Настройка подключения
Для интеграции с MMD создайте Телефонное подключение (Telephony Connection):
| Параметр | Описание |
|---|---|
| Organization ID | Идентификатор организации в MMD |
| BFF WebSocket URL | URL WebSocket-сервиса MMD (по умолчанию: wss://ccc.mmdsmart.com) |
| Keycloak URL | URL аутентификации (по умолчанию: https://auth.mmdsmart.com/auth) |
| Keycloak Realm | Realm аутентификации (по умолчанию: call_center) |
Привязка агентов к MMD
После создания подключения можно привязать голосовых агентов, указав учётные данные MMD-агента:
- Agent ID -- логин агента в MMD
- Password -- пароль агента в MMD
Учётные данные шифруются перед сохранением в базе данных.
Сессии и аналитика
Просмотр сессий
Вкладка Сессии предоставляет полную информацию о звонках:
- Фильтры: по агенту, каналу (Web, SIP Inbound, SIP Outbound, MMD), статусу, диапазону дат
- Статистика: общее количество сессий, успешные/неуспешные, общая продолжительность
- График: визуализация сессий по дням
- Таблица: детальный список всех сессий
Детали сессии
При нажатии на сессию открывается панель с:
- Транскрипт -- полный диалог (реплики пользователя и агента)
- Метрики:
- LLM: prompt/completion токены, время первого токена
- TTS: количество символов, длительность аудио, время первого байта
- STT: длительность аудио, время обработки
- Общая средняя задержка
- Количество реплик
Каналы в сессиях
| Канал | Описание |
|---|---|
web | Звонок через веб-интерфейс |
sip_inbound | Входящий телефонный звонок |
sip_outbound | Исходящий телефонный звонок |
mmd | Звонок через MMD Bridge |
Используйте фильтр по каналу для анализа производительности агента в разных сценариях. Например, телефонные звонки обычно имеют бОльшую задержку из-за дополнительного hop через SIP Bridge.