概要
このチュートリアルでは、音声AIエージェントを立ち上げて、そこに電話番号を与え通話することを行います。以下に解説する内容の見通しをよくするために、まずは全体像について解説します。 AIエージェントと電話を繋ぐ方法には様々ありますが、ここではLiveKit(WebRTCのプラットフォーム)にSIP接続の設定をして、WebRTCのインフラを活用して実現する方法を案内します。 LiveKitにSIP設定するためには、電話回線で送られてくる情報をLiveKitに送るサービスを利用する必要があります。この様なサービスは一般的に”SIP Trunk”と呼ばれます。“onBridge”は日本国内でのAI利用に最適化したSIP Trunkサービスですので、LiveKitへの接続は少ない手数で可能となります。 以下が全体を示す模式図です。完全に正確なものではありませんが、全体感をつかむ参考にしてください。
手順
本チュートリアルの手順を紹介します。- LiveKit で今回のチュートリアルで使うためのプロジェクトを管理画面で設定します。(“プロジェクト”はLiveKitの管理単位です)
- LiveKit社が提供するAI Agentフレームワークである”LiveKit Agent”で作った小規模なエージェントをLocalで起動します。
- LiveKitの”サンドボックス”機能でWebRTCでエージェントと会話をテストします。
- 正しく動作確認ができたら、次は onBridge に LiveKit と接続する設定を行います。
- LiveKit側のテレフォニー設定を行います。
LiveKitのプロジェクト作成
LiveKitにアカウントを作成し、左下メニューから”Create new project”で新しいプロジェクトを作ります。
LiveKit Agentを使ったミニエージェントをローカルで起動する
最小構成で動作するLiveKit Agentのサンプルリポジトリを用意しています。こちらをクローンしてください。 TypeScript版 LiveKit Agent 最小構成サンプル:https://github.com/sparkleai/mini-livekit-agent-jsパッケージインストール
環境変数の設定
音声認識(STT)にDeepgram、推論と音声合成(TTS)にはOpenAIのAPIを使う設定になっています。以下の内容を各サービスから取得し.envに設定してください。
- OpenAI : https://platform.openai.com/
- Deepgram: https://deepgram.com/
LiveKitのキーの取得
左メニューからSettings > API keysに進んでください。
.env へペーストして保存してください。

.env の設定は次の様になります

プログラムのローカルでの起動
以下のコマンドでLiveKitエージェントを起動してください。
LiveKit サンドボックスでテストする
LiveKit Cloudには、プロジェクトごとに独立した環境で サンプルアプリケーションをDeployして試せる機能(Sandbox)がついています。Voice assitantのサンプルは、プロジェクトに登録されている 音声Agentと会話できる WebRTCクライアントのサンプルです。これを利用して今 Localに立ち上がっている LiveKit Agentのサンプルと会話テストをしてみましょう。 LiveKit の Sandbox メニューに進み、“Voice assistant” を選択してください。





電話接続の設定を行う
LiveKitのプロジェクトに onBridge経由でダイヤルインできる様にするには、次の手順を行います。- onBridgeで電話番号を取得します。
- LiveKitで”SIP URL”を取得し、onBridgeで使いたい電話番号の設定として、そのSIP URLを設定します。
- LiveKitで”Inbound Trunk”の設定を行います。具体的には、取得した電話番号をアサインします。
- LiveKitで”Dispatch Rule”の設定を行います。個別のコールに対してルームアサインの方法や通話するエージェントの種類などを設定します。
onBridgeで電話番号を取得
onBridgeの開発者向けプラン(Developer Plan)では、クレジットカードを登録するだけで電話番号を即日に取得できます。LiveKitのSIP URLの取得とonBridgeへの登録
LiveKitのSIP URLはプロジェクトのSettingメニュー”SIP URI”の項目から確認できます。こちらをコピーしてください。

LiveKitのInbound Trunk と Dispatch Ruleの設定
最後に、LiveKit側に取得した電話番号をSIP接続する設定と、電話がかかってきたときにどの様な挙動を行うかを決めるDispatch Ruleを登録しましょう。 この設定にはLiveKit CLIを使います。お使いの環境に応じて、以下のリンク先の内容に従って、セットアップしてください。 https://docs.livekit.io/home/cli/cli-setup/ lkコマンドが使える様になります。上のページで紹介されいた通り、LiveKit Cloudを利用している場合はlk cloud authコマンドによりクレデンシャルの入力を省略することができますので、コマンドをうち、指示に従ってログインをします。


後でデフォルトを変えたくなった
lk project set-default <プロジェクト名> で切り替えることができます。Inbound Trunkの設定
Inbound Trunkの設定を進めるにあたり、事前に適当な場所に次のような設定用ファイルを作っておきましょう。 “name”と”numbers”という要素を持ったobjectをinbound.jsonとして保存します。“numbers”項目は、このInbound Trunkで受け付ける電話番号のリストです。電話番号の表記方法としE.164形式を取る必要があります。+ 記号と日本の国番81につづけて、電話番号の頭の0を省略した番号を続けて書きます。
下のサンプルは050-5555-1234 という架空の番号を設定した場合のサンプルです。実際に利用する電話番号に変更して記述してください。
inbound.jsonを保存した同じ階層で次の様にコマンドしてください。inbound trunkの保存ができるSIPTrunkIDが表示されます。

Telephony > Configuration メニューからGUIで確認できます。
Dispatch Ruleの設定
最後にDispatch Ruleを設定します。LiveKitのDispatch Ruleとは、コールをどのようにLiveKitのRoomやWorker(つまり担当するエージェント)にルーティングするかを制御するルールセットです。 次の様なJSONファイルを用意します。テスト通話とトラブルシューティング
これで全ての設定が終わりました。onBridgeで取得した電話番号に電話を掛けて、音声AIエージェントと通話ができることを確認してください。 うまく通話できなかったときは、以下のことを確認し、修正してください。ピピピっと音がなるが、電話がかからない場合
電話のルーティングに失敗している可能性があります。以下の部分を順番に確認してください。- 発信者番号がonBridgeのSMS認証を受けていること。
Developerプランはテスト目的での利用に制限されているため、利用できる番号は同じオーガニゼーションに所属するSMS認証済み番号に限られています。
onBridgeの電話番号管理画面で、着信&発信が可能な電話番号のリストが確認できますので、そこに登録されている番号からテストしてください。 - onBridgeに正しくLiveKitのSIP URLが登録されていること。
onBridgeの管理画面にログインし、取得している電話番号の設定を確認してください。 - LiveKitのInbound Trunkの電話番号が、onBridgeで取得した番号であっていること。
LiveKit Cloundにログインし、Telphony > Configuration メニューに移動します。設定されている番号が取得している番号と等しいことを確認してください。 - Dispatchルールが正しく登録されていること。
上記と同じ画面でDispatchルールが登録されていることを確認してください。
コール音はなるが、音声エージェントが通話に出ない
エージェントが立ち上がっていないか、LiveKitのプロジェクトにエージェントが正しく登録されていない可能性があります。以下の部分を順番に確認してください。- Localでエージェントが立ち上がっていること。
エージェントプログラムが正しく起動して待機状態であるかを確認してください。もし待機状態でない場合は待機状態にしてください。 - エージェント
.env設定が正しいこと。
LiveKit CloudのSettings > API keys メニューに進み、利用しているAPIの詳細画面を開きますLIVEKIT_URL/LIVEKIT_API_KEY/LIVEKIT_API_SECRETそれぞれの値が、正しくエージェントの.envに保存されていることを確認します。もし異なっていれば修正し、エージェントを立ち上げ直してください。
改善・応用について
ここで利用している音声エージェントのサンプルは最小構成です。次の様な改善を通して音声AIエージェントの開発を進めていきましょう。- STT や TTSのモデルを他の、より高速なものに変更する
- LLMのモデルや、プロンプトを変更して応答を改善する
- Function Calling(Tool Calling)を追加する
- RAG機能を追加して、特定文脈での質問に答えられる様にする
- 終話判定などのターン管理を改善する。