Exotelインテグレーション
Exotelインテグレーション
Exotelの電話番号をElevenAgentsに接続し、着信・発信通話に利用します。
概要
このガイドでは、Exotelの電話番号をElevenAgentsに直接接続する方法を説明します。このインテグレーションにより、既存のExotel番号とインフラをそのまま使用しながら、着信・発信の両方でElevenLabsの高度なAI音声機能を活用できます。
インテグレーションの仕組み
Exotelインテグレーションでは、Exotelの以下の2つの機能を使用します。
- Voicebotアプレット(着信・発信メディア):Exotel上のExoMLアプレットで、ElevenLabsへのWebSocketを開き、通話オーディオを双方向にストリーミングします。
- Connect API(発信ダイヤル):発信時、ElevenLabsはAPIキーとAPIトークンを使用してExotelの
Calls/connect.jsonエンドポイントを呼び出します。Exotelが発信先にダイヤルし、通話が応答されると、同じVoicebotアプレットを介してオーディオをElevenLabsにルーティングします。
着信の場合、Exotelは電話番号に割り当てたVoicebotアプレットへ着信をルーティングし、アプレットがElevenLabsへのWebSocketを開きます。
発信の場合、ElevenLabsがConnect API経由で通話を開始し、ExotelがVoicebotアプレットを介して通話を接続し直します。
要件
Exotelインテグレーションを設定する前に、以下を確認してください。
- 少なくとも1つの電話番号がプロビジョニングされた、有効なExotelアカウント。
- my.exotel.com(シンガポール)またはmy.exotel.in(ムンバイ)のExotelダッシュボードへの管理者アクセス。
- ElevenLabsアカウントと、電話番号を接続するエージェント。
Exotelは現在、シンガポール(api.exotel.com)およびムンバイ
(api.in.exotel.com)クラスターでサポートされています。Exotelアカウントがプロビジョニングされたクラスターを選択してください。誤ったリージョンを使用すると、認証に失敗します。
ExotelアカウントでVoicebotを有効にする
まず、Exotelサポートに連絡して、以下を依頼してください。
- アカウントでVoicebotアプレットを有効化する。これはデフォルトで制限されており、アカウントにプロビジョニングされるまでApp Bazaarには表示されません。
- 必要なチャネル数(同時通話数)をプロビジョニングする。これは、Exotelがアカウントで実行を許可するVoicebot同時通話数の上限です。予想されるピークトラフィックに合わせて設定してください。
この手順には通常1~2営業日かかります。残りの設定を始める前に依頼してください。
ElevenLabs WebSocketエンドポイント
Exotel Voicebotアプレットを設定し、以下のWebSocket URLにオーディオをストリーミングします。
ElevenLabsアカウントが隔離されたデータレジデンシー環境(EUまたはインド)にある場合は、対応するデータレジデンシーURLを使用する必要があります。データ レジデンシーの詳細をご覧ください。
Exotelでの設定
Exotel認証情報を取得する
Exotelダッシュボードで、左側のMonitorメニューを開き、Developerをクリックします。API認証情報ページが開き、Account SID、APIキー、APIトークンを確認できます。

以下の4つの値が必要です。
- Account SID:ExotelアカウントのSID。
- APIキー:Exotel API認証情報のユーザー名部分。
- APIトークン:Exotel API認証情報のパスワード部分です。秘密として扱ってください。
- リージョン(APIサブドメイン):Exotelアカウントが存在するクラスターです。
api.exotel.com(シンガポール)またはapi.in.exotel.com(ムンバイ)のいずれかです。Developerページに表示されるAPI URLのホストを確認すると、どちらかを確認できます。
ElevenLabsは、発信ダイヤルのためにExotelのConnect APIを呼び出す際、HTTP Basic認証でAPIキーとAPIトークンを使用します。
App BazaarでVoicebotアプレットを作成する
-
Exotelダッシュボードで、左側のManageメニューを開き、App Bazaarをクリックします。

-
Create / Add New Flowをクリックし、アプリにわかりやすい名前(例:
ElevenLabs)を付けてから、OKをクリックします。
-
右側のアプレットパレットから、VoicebotアプレットをCall Startキャンバスにドラッグします。

-
Voicebotアプレットの設定を開き、データレジデンシーに対応するElevenLabs WebSocket URLをURLフィールド(「Which bot you want to connect the enduser?」フィールド)に貼り付けます。
ElevenLabsアカウントがEUまたはインドのデータレジデンシーにある場合は、上の表にある対応するデータレジデンシーURL(例:
wss://api.in.residency.elevenlabs.io/v1/convai/conversation/exotel)を使用してください。デフォルトのapi.elevenlabs.ioは使用しません。特定の録音またはコンプライアンス要件がない限り、Voicebotのその他のオプション(「Record this?」、「Recording Channels」、「Recording Format」、「Encrypt DTMF」)はデフォルトのままで構いません。

-
(任意)有人転送用にConnectアプレットを連結する。 エージェントから人間へ通話を転送する必要がない場合は、この手順をスキップしてください。エージェントのTransfer to numberツールを使用する場合は、フロー内でVoicebotアプレットの直後にConnectアプレットを追加する必要があります。
右側のVoice Appletsパレットから、ConnectアプレットをVoicebotのNext → Continue to the next appletスロットにドラッグします。

Connectアプレットの設定で、Configure parameters dynamically by providing a URLを選択し、データレジデンシーに対応するElevenLabs connect-appletエンドポイントをPrimary URLに貼り付けます。

対応するデータレジデンシーURLは以下のとおりです。
エージェントがTransfer to numberツールを呼び出すと、ElevenLabsは制御をExotelに戻し、ExotelはこのURLを取得してダイヤル先の電話番号を取得します。Fallback URLは空のままにし、その他の設定はすべてデフォルトのままにしてください。
-
アプレットを保存して公開します。
-
Applet ID(App IDと呼ばれることもあります)を控えます。ExoMLエディターのURL(例:
.../exoml/start_voice/12345)またはAppリストで確認できます。この値は、ElevenLabsに電話番号をインポートする際に必要です。
Voicebotアプレットは着信・発信の両方の通話レッグを処理します。アカウントごとに必要なアプレットは1つだけです。ElevenLabsにインポートするすべての電話番号で共有できます。
電話番号にフローを割り当てる(着信のみ)
前の手順で作成したExoMLフローを保存して公開します。次に、Exotel電話番号をそのフローにルーティングして、着信がVoicebotアプレットに届くようにします。
-
Exotelダッシュボードで、左側のManageメニューを開き、ExoPhones(App Bazaarのすぐ下)をクリックします。

-
まだ電話番号がない場合は、続行する前にBuy a numberをクリックして、必要な国/地域の番号を購入します。
-
ElevenLabsエージェントで使用する番号を見つけます。その番号のInstalled App列にあるドロップダウンを開き、前の手順で作成したフロー(例:ElevenLabs)を選択します。

-
設定を保存します。その番号への着信は、Voicebotアプレットへ直接ルーティングされ、ElevenLabsにストリーミングされるようになります。
番号を発信専用で使用する場合は、この手順をスキップできます。発信はElevenLabsからConnect API経由でダイヤルされ、Installed Appの割り当てには依存しません。
ElevenLabsでの設定
Exotel電話番号をインポートする
ElevenAgentsダッシュボードで、Phone Numbersタブに移動します。+ Import numberをクリックし、ドロップダウンからFrom Exotelを選択します。

以下のフィールドに入力します。
- Label:わかりやすい名前(例:
Support Line)。 - Phone number:E.164形式のExotel番号(例:
+918048961234)。 - Exotel Account SID:上記の手順1で取得した値。
- Exotel API Key:上記の手順1で取得した値。
- Exotel API Token:上記の手順1で取得した値(ワークスペースシークレットとして保存されます)。
- Region:Exotelクラスターに対応する
Singapore (api.exotel.com)またはMumbai (api.in.exotel.com)を選択します。 - Voicebot Applet ID:上記の手順2で取得したApp ID。
Importをクリックして番号を保存します。ElevenLabsはExotelに対して認証情報を検証し、APIトークンをワークスペースシークレットとして保存します。
エージェントを割り当てる
番号をインポートしたら、Phone Numbersリストから番号を開き、Assigned agentドロップダウンで着信を処理するエージェントを選択します。
着信には、Exotel側で電話番号にVoicebotアプレットが割り当てられている必要があります(前のセクションを参照)。発信専用の設定では、着信の割り当ては必要ありません。
着信をテストする
任意の電話からExotel番号に電話をかけます。通話はExotelによってVoicebotアプレットへルーティングされ、アプレットがElevenLabsへのWebSocketを開きます。エージェントが応答し、会話を開始します。
Calls Historyダッシュボードで通話をモニタリングし、すべてが想定どおりに動作していることを確認してください。
発信する
インポートしたExotel番号から発信することもできます。エージェントが電話番号にダイヤルし、相手が応答すると会話を開始します。
発信時はエージェントが会話の開始者となるため、適切な最初のメッセージがエージェントに設定されていることを確認してください。
ダッシュボードではなくプログラムから発信をトリガーするには、Exotel経由の発信エンドポイントを使用します。APIリファレンスには、リクエストスキーマとすぐに使えるSDKスニペットが含まれています。
エージェント設定の要件
Voicebotアプレットは、8 kHz PCMでオーディオをストリーミングします。ElevenLabsプラットフォームがオーディオ形式の変換を自動で処理します。エージェントのTTSまたは入力オーディオ設定を変更する必要はありません。
電話番号の形式
電話番号はE.164形式(例:+918048961234)で保存されます。インドのExotel番号をローカル形式で08048961234または8048961234と表記する場合でも、+918048961234として入力してください。ElevenLabsでは、同一番号を異なる形式で重複インポートすることはできません。
通話転送
エージェントにTransfer to numberツールを設定すると、エージェントからExotelに通話を転送できます。ツールが起動すると、ElevenLabsはVoicebotレッグを終了し、Exotelは連結されたConnectアプレットの動的URLから発信先番号を取得して、対象にダイヤルします。
この機能を使用するには、両方が必要です。
- ExoMLフローでVoicebotアプレットの直後に設定された任意のConnectアプレット(Exotelでの設定の手順5を参照)。
- エージェントに設定されたTransfer to numberツール。エージェント転送ガイドを参照してください。
フロー内にConnectアプレットがない場合、Voicebotの終了後にExotelが通話をルーティングする先がないため、エージェントの転送は失敗します。
トラブルシューティング
発信開始時のexotel_connect_failedエラー
発信開始時のexotel_connect_failedエラー
ElevenLabsがExotelのConnect APIから200以外のレスポンスを受信しました。最も一般的な原因は以下のとおりです。
- Regionが間違っています。インポート時に選択したリージョンが、アカウントのExotelクラスター(
SingaporeまたはMumbai)と一致していることを確認してください。 - API KeyまたはAPI Tokenが無効です。ExotelのAPI Settingsページで認証情報を再確認し、正しい値で番号を再インポートしてください。
- Account SIDがAPI Key/Tokenの組み合わせと一致していません。
- 発信先番号がE.164形式ではありません。
着信がエージェントに届かない
- VoicebotアプレットのURLフィールドが、データレジデンシーに対応するElevenLabs WebSocketエンドポイントと完全に一致していることを確認してください(
wss://を含む)。 - Exotelの電話番号が、Voicebotアプレットを含むExoMLアプリにルーティングされていることを確認してください(Exotelダッシュボード、ExoPhones、対象番号、Installed App)。
- ElevenLabsで、Phone Numbersタブの電話番号にエージェントが割り当てられていることを確認してください。
インポート時のApplet ID不一致エラー
インポート時のApplet ID不一致エラー
Voicebot Applet IDフィールドには、ExoMLエディターURL内の数値のApp IDが必要です(例:.../exoml/start_voice/12345の場合、IDは12345です)。完全なURLを貼り付けないでください。IDのみを使用します。
異なる形式で電話番号を2回インポートした
ElevenLabsは、Exotel番号を保存前にE.164へ正規化し、(provider, phone_number)で一意性を強制します。同じ番号を以前にE.164以外の形式でインポートした場合は、まず古いエントリーを削除してから、E.164形式で再インポートしてください。