EXTEN.BOT について
EXTEN.BOTは、SIP対応のソフトウェアまたはハードウェアPBXに接続するVoIP音声ボットを作成するDjango製Webインターフェースです。OpenAI real-time APIを使い、カスタム関数やMCPサーバーで機能を拡張できます。
主な機能
- 01SIP接続音声ボットの作成
- 02OpenAI real-time API対応
- 03会話用カスタム関数
- 04MCPサーバーの設定
- 05SIP URIによる転送
活用シーン
- 01PBX経由で音声ボットを提供
- 02ボットからカスタム関数を呼び出す
- 03MCPサーバーでボットの機能を拡張
MCP 対応
管理者はベースURL、任意のAPIキー、承認設定を指定してMCPサーバーを登録し、会話中に機能を拡張するためボットに関連付けられます。
詳細
exten.bot
exten.bot は、SIP に対応するあらゆるソフトウェアまたはハードウェア PBX に接続できる VoIP 音声ボットを作成するための、Django ベースのウェブインターフェースです。
このシステムは、OpenSIPS サーバーと opensips-ai-voice-connector 上に構築されています。
AI には、OpenAI リアルタイム API を使用します。
このプラットフォームは、ボットの機能拡張や外部システムとの連携のために、カスタム関数と MCP サーバーに対応しています。
exten.bot で機能をお試しいただけます。
インストール
OS:Debian 12
DB: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
- opensips のドメインテーブルに、sip exten.bot ドメイン(exten.example.com)を追加します
Exten.bot ウェブアプリ
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 service として実行できます
設定
your_domain/admin の管理パネルに移動し、次のデータを入力します
-
/admin/bot/domain/ にドメイン(exten.example.com)を追加します。opensips のドメイン設定と同じものを指定します
-
/admin/bot/model/ にモデル gpt-4o-realtime-preview を追加します
-
/admin/bot/voice/ にボットの voices を追加します
-
/admin/workflow/function/ に、音声ボットが会話中に呼び出せるカスタム関数を追加します
-
/admin/workflow/mcp/ に、ボットの機能拡張用の MCP サーバーを追加します
これで音声ボットを作成できます
- /admin/bot/bot/ にボットを追加します
フィールドの説明
- Owner - ボットを関連付けるユーザー
- Username and Password - 自動的に生成されます。SIP への接続にこの情報を使用します
- Domain - exten.bot の SIP ドメイン
- Token - openai token
- Model - openai realtime model
- Voice - openai voice
- Instruction - ボットへの指示テキスト
- Welcome msg - 接続時にボットが音声で伝えるメッセージ
- Transfer uri - ユーザーのリクエストに応じて音声ボットが通話を転送する sip uri(sip:[email protected])
- Functions - 会話中に音声ボットが利用できるカスタム関数を選択します
- MCP Servers - ボットの機能拡張用の MCP サーバーを選択します
この後、opensips データベース(subscriber テーブル)にアカウントが作成されていることを確認します。
すべて問題なければ、受け取った sip アカウントの認証情報をソフトフォンまたは PBX で使用して [[email protected]] に発信し、電話で音声ボットと会話できます
サーバー上の SIP 接続を診断するには、コンソールユーティリティ [sngrep] を使用します
Functions and MCP Servers
カスタム関数
/admin/workflow/function/に移動して、カスタム関数を作成します- 各関数には、名前、URL、JSON スキーマ、任意の入力スキーマが必要です
- 関数はボットにリンクされ、会話中に呼び出すことができます
- ボットの所有者のみが、自分の関数を自分のボットにリンクできます
MCP サーバー
/admin/workflow/mcp/に移動して、MCP サーバーを追加します- 各サーバーには、ベース URL、任意の API キー、承認設定が必要です
- サーバーのラベルは自動生成されますが、編集できます
- MCP サーバーは音声ボットに拡張機能を提供します
- ボットの所有者のみが、自分の MCP サーバーを自分のボットにリンクできます
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。