mcpField
E
EXTEN.BOT

EXTEN.BOT

github.com/estvita聊天应用558 周前更新

关于 EXTEN.BOT

EXTEN.BOT 是用于创建 VoIP 语音机器人的 Django 网页界面,可连接支持 SIP 的软件或硬件 PBX。机器人使用 OpenAI 实时 API,并可通过自定义函数和 MCP 服务扩展。

主要功能

  1. 01创建 SIP 连接语音机器人
  2. 02支持 OpenAI 实时 API
  3. 03自定义对话函数
  4. 04配置 MCP 服务
  5. 05按 SIP URI 转接呼叫

适用场景

  1. 01通过 PBX 提供语音机器人
  2. 02让机器人调用自定义函数
  3. 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 服务关联到其机器人

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。