关于 EXTEN.BOT
EXTEN.BOT 是用于创建 VoIP 语音机器人的 Django 网页界面,可连接支持 SIP 的软件或硬件 PBX。机器人使用 OpenAI 实时 API,并可通过自定义函数和 MCP 服务扩展。
主要功能
- 01创建 SIP 连接语音机器人
- 02支持 OpenAI 实时 API
- 03自定义对话函数
- 04配置 MCP 服务
- 05按 SIP URI 转接呼叫
适用场景
- 01通过 PBX 提供语音机器人
- 02让机器人调用自定义函数
- 03通过 MCP 服务扩展机器人能力
MCP 相关
管理员可添加带基础 URL、可选 API 密钥和审批设置的 MCP 服务,再将其关联到机器人以扩展对话能力。
详细介绍
exten.bot
exten.bot 是一个基于 Django 的 Web 界面,用于创建可连接到任何支持 SIP 的软件或硬件 PBX 的 VoIP 语音机器人。
系统基于 OpenSIPS 服务器和 opensips-ai-voice-connector 构建。
AI 功能使用 OpenAI 实时 API。
该平台支持自定义函数和 MCP 服务,以扩展机器人的能力并与外部系统集成。
你可以在 exten.bot 测试其功能。
安装
操作系统:Debian 12 数据库:MySQL
SIP 服务器 OpenSIPS
-
你需要安装 OpenSIPS 3.6 服务器;请参考官方文档。
-
安装 opensips-cli
-
安装 opensips 模块:opensips-mysql-module、opensips-mysql-dbschema、opensips-json-module、opensips-http-modules、opensips-restclient-module、opensips-auth-modules、opensips-dialplan-module
curl https://apt.opensips.org/opensips-org.gpg -o /usr/share/keyrings/opensips-org.gpg
echo "deb [signed-by=/usr/share/keyrings/opensips-org.gpg] https://apt.opensips.org bookworm 3.6-releases" >/etc/apt/sources.list.d/opensips.list
echo "deb [signed-by=/usr/share/keyrings/opensips-org.gpg] https://apt.opensips.org bookworm cli-nightly" >/etc/apt/sources.list.d/opensips-cli.list
apt update
apt install opensips opensips-cli opensips-mysql-module opensips-mysql-dbschema opensips-json-module opensips-http-modules opensips-restclient-module opensips-auth-modules opensips-dialplan-module
- 可选:安装 openssips-cp
- 将配置文件 opensips.cfg 和 opensips-cli.sfg 放入文件夹 /etc/opensips,并将数据库连接信息替换为你自己的
- 创建 opensips 数据库:opensips-cli -x database create
- 将你的 exten.bot SIP 域名(exten.example.com)添加到 opensips domains 表
Exten.bot Web 应用
sudo apt-get install build-essential libmysqlclient-dev python3-dev libssl-dev pkg-config
git clone https://github.com/estvita/exten_bot.git
cd exten_bot
cp examples/.env.example .env
Make the necessary changes to your .env
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements/production.txt
安装所需的软件包和依赖项后,进行基本配置。
python manage.py migrate
python manage.py collectstatic
python manage.py createsuperuser
python manage.py runserver 0.0.0.0:8000
在管理面板 /admin/authtoken/ 中创建并保存用户令牌
AI Voice Connector
使用我分叉的 voice connector 以获得增强功能
我尚未测试在 Docker 中安装 openai voice connector 的连接,因此目前我们将在 Python 虚拟环境中运行它。
git clone https://github.com/estvita/opensips-ai-voice-connector-ce connector
cd connector
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp docs/config.example config.ini
修改 config.ini
[opensips]
ip = 127.0.0.1
port = 8080
[rtp]
ip = 192.168.3.29 vyour Opensips server external address
min_port = 10000
max_port = 20000
[engine]
event_ip = 127.0.0.1
bind_ip = 0.0.0.0
event_port = 50060
api_url = http://127.0.0.1:8000/api/bots/ your exten.bot api url
api_key = XXXXXXXXXXXXX token generated in exten.bot Django admin
尝试运行 voice connector
python src/main.py -c config.ini -l INFO
在 logs/app.log 中,你应该会看到类似以下内容
2025-05-25 11:44:11,575 - tid: 139832749932608 - INFO - Starting server at 127.0.0.1:50060
测试后,你可以将 voice connector 作为 debian 服务运行
设置
前往 your_domain/admin 下的管理面板并填写以下数据
-
/admin/bot/domain/ 添加域名(exten.example.com),与 opensips 域设置中的域名相同
-
/admin/bot/model/ 添加模型 gpt-4o-realtime-preview
-
/admin/bot/voice/ 添加机器人语音
-
/admin/workflow/function/ 添加语音机器人可在对话期间调用的自定义函数
-
/admin/workflow/mcp/ 添加 MCP 服务以扩展机器人的能力
现在你可以创建语音机器人
- /admin/bot/bot/ 添加机器人
字段说明
- Owner - 与机器人关联的用户
- Username and Password - 自动生成,你将使用这些信息连接到 SIP
- Domain - 你的 exten.bot SIP 域名
- Token - openai 令牌
- Model - openai 实时模型
- Voice - openai 语音
- Instruction - 机器人的文本指令
- Welcome msg - 连接时机器人将播报的消息
- Transfer uri - 语音机器人应用户要求转接呼叫的 sip uri(sip:[email protected])
- Functions - 选择语音机器人在对话期间可访问的自定义函数
- MCP Servers - 选择 MCP 服务以扩展机器人的能力
完成后,检查 opensips 数据库中是否已创建该帐户(subscriber 表)。
如果一切正常,你可以在软电话或 PBX 上使用收到的 sip 帐户凭据拨打 [[email protected]],通过电话与语音机器人交谈
如需诊断服务器上的 SIP 连接,请使用控制台工具 [sngrep]
函数和 MCP 服务
自定义函数
- 前往
/admin/workflow/function/创建自定义函数 - 每个函数都需要:名称、URL、JSON 架构,以及可选的输入架构
- 函数与机器人关联,可在对话过程中调用
- 只有机器人所有者才能将自己的函数关联到其机器人
MCP 服务
- 前往
/admin/workflow/mcp/添加 MCP 服务 - 每个服务都需要:基础 URL、可选的 API 密钥和审批设置
- 服务标签会自动生成,但可以编辑
- MCP 服务为语音机器人提供扩展能力
- 只有机器人所有者才能将自己的 MCP 服务关联到其机器人
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。