Это exten.bot: голосовой VoIP бот OpenaAI Realtime
exten.bot — это веб-интерфейс на Django для создания VoIP голосовых ботов, которых можно подключить к любой программной или аппаратной АТС с поддержкой SIP. Система основана на сервере OpenSIPS и модуле opensips-ai-voice-connector, а для искусственного интеллекта использует OpenAI real-time API. Платформа поддерживает рабочие процессы dify.ai (или другие MCP серверы), позволяя проектировать логику бота и интеграцию с другими системами через вызовы функций.
Интеграция с MCP серверами (Model Context Protocol)
MCP-сервер — это компонент Model Context Protocol (MCP), который действует как мост между языковыми моделями и внешними системами, позволяя им взаимодействовать с данными и инструментами, такими как базы данных, веб-сервисы и другие приложения, через стандартизированный интерфейс
Параметры MCP сервера, доступные при создании и редактировании
- Server url - адрес подключаемого MCP сервера (обязательно)
- Api key - ключ API для авторизации (при необходимости)
- Server label - Метка сервера будет отображаться в логах и во взаимодействии с ботом
- Требуется подтверждение - должен ли бот спрашивать разрешение на использование сервера. По умолчанию Нет. Функция подтверждения еще в разработке

Вызов функций ботом (Function Calling)
Функционал голосового бота можно значительно расширить подключив к нему дополнительные функции к которым он будет обращаться во время диалога.
В личном кабинете можно добавить функцию, которую потом привязать к одному или нескольким голосовым ботам.
Поля функций:
- Название: человекочитаемое название функции
- URL: адрес вебхука, принимающего запросы для обработки этой функции и возвращающий ответ
- Bearer Token: токен для авторизации (если требуется)
- Описание функции (Json schema): структурированное описание функции для бота. Пример.
- Шаблон входных данных для вебхука (Input schema): шаблон входящих данных для вебхука
После добавления функции в форме редактирования голосового бота будет доступна её привязка к боту.
Примеры и подробности работы с функциями здесь.

Создание голосового бота exten.bot
Для создания простого голосового VoIP бота-консультанта, работающего на текстовой инструкции перейдите в раздел Настройки - Боты и создайте нового бота.
Типы голосовых ботов exten.bot:
Поскольку голосовой бот exten.bot представляет собой SIP аккаунт, то, в зависимости от его роли (сервер или клиент) можно создать два типа записей:
- Сервер (registrar), по умолчанию: учетные данные для регистрации SIP аккаунта выдаются сервером exten.bot. Их необходимо использовать на своём сервере для подключения к серверу exten.bot
- Клиент (registrant): при создании бота в полях логин, пароль и домен необходимо указать учетные данные SIP аккаунта, выданного вашим сервером, к которому exten.bot подключится в качестве клиента
Описание полей бота
- Домен - exten.bot
- Username и Password - учетные данные SIP аккаунта для подключения
- Токен - токен OpenAI
- Модель - ИИ модель на которой будет работать голосовой бот
- Голос - голос для озвучивания голосового бота
- MCP - серверы. К своему голосовому боту вы можете подключить неограниченное количество внешних MCP-серверов
- Функции: набор заранее созданных функций, к которым голосовой бот будет обращаться в процессе диалога
- Инструкция - текстовая инструкция по которой будет работать голосовой бот
- Приветственное сообщение - его бот озвучит при соединении
- Transfer URI - SIP адрес на который голосовой бот будет переводить звонки по просьбе абонента. Пример: sip:100@10.8.0.1 (будет работать при условии подключения бота к этой же АТС)
Параметры SIP подключения
- Адрес сервера: exten.bot
- Порт: 5060 UDP
- Диапазон RTP портов: 10000:20000 UDP
- Поддерживаемые кодеки: G711 (μ-law и A-law)
- Поле контакт: Username, полученный при создании бота
- Максимальное количество контактов: 5
- SIP URI голосового бота: openai@exten.bot или 70000000000@exten.bot
Подключение голосового бота к FreePBX
Для подключения голосового бота к АТС используйте полученные username и password, домен для регистрации exten.bot
В примере показаны настройки PJSIP транка во FreePBX
Add PJSIP Trunk - General - Trunk Name = <username>

-- pjsip Settings - General -
- Username и Auth username = <username>
- Secret = <password>
- SIP Server = exten.bot
- Context = from-internal

PJSIP Settings - Advanced
- Contact User = <username>
- From Domain = exten.bot
- From User = <username>

Подключение голосового бота к FusionPBX
1. Accounts > Gateways > Add

- Gateway: exten.bot
- Username: <username>
- Password: <password>
- From Domain: exten.bot
- Proxy: exten.bot:5060
- Profile: external
2. Applications > Bridges > Add

- Name: bot
- Action: Gateway
- Gateways: exten.bot
- Destination Number: openai@exten.bot
3. Dialplan > Outbound Routes > Add

- Gateway: Bridges > bot
- Dialplan Expression: 500 (для примера)
После этого позвоните на номер 500 для соединения с голосовым ботом