Exotelインテグレーション

Exotelの電話番号をElevenAgentsに接続し、着信・発信通話に利用します。

概要

このガイドでは、Exotelの電話番号をElevenAgentsに直接接続する方法を説明します。このインテグレーションにより、既存のExotel番号とインフラをそのまま使用しながら、着信・発信の両方でElevenLabsの高度なAI音声機能を活用できます。

インテグレーションの仕組み

Exotelインテグレーションでは、Exotelの以下の2つの機能を使用します。

  1. Voicebotアプレット(着信・発信メディア):Exotel上のExoMLアプレットで、ElevenLabsへのWebSocketを開き、通話オーディオを双方向にストリーミングします。
  2. Connect API(発信ダイヤル):発信時、ElevenLabsはAPIキーとAPIトークンを使用してExotelのCalls/connect.jsonエンドポイントを呼び出します。Exotelが発信先にダイヤルし、通話が応答されると、同じVoicebotアプレットを介してオーディオをElevenLabsにルーティングします。

着信の場合、Exotelは電話番号に割り当てたVoicebotアプレットへ着信をルーティングし、アプレットがElevenLabsへのWebSocketを開きます。

発信の場合、ElevenLabsがConnect API経由で通話を開始し、ExotelがVoicebotアプレットを介して通話を接続し直します。

要件

Exotelインテグレーションを設定する前に、以下を確認してください。

  1. 少なくとも1つの電話番号がプロビジョニングされた、有効なExotelアカウント。
  2. my.exotel.com(シンガポール)またはmy.exotel.in(ムンバイ)のExotelダッシュボードへの管理者アクセス。
  3. ElevenLabsアカウントと、電話番号を接続するエージェント。

Exotelは現在、シンガポール(api.exotel.com)およびムンバイ (api.in.exotel.com)クラスターでサポートされています。Exotelアカウントがプロビジョニングされたクラスターを選択してください。誤ったリージョンを使用すると、認証に失敗します。

ExotelアカウントでVoicebotを有効にする

まず、Exotelサポートに連絡して、以下を依頼してください。

  1. アカウントでVoicebotアプレットを有効化する。これはデフォルトで制限されており、アカウントにプロビジョニングされるまでApp Bazaarには表示されません。
  2. 必要なチャネル数(同時通話数)をプロビジョニングする。これは、Exotelがアカウントで実行を許可するVoicebot同時通話数の上限です。予想されるピークトラフィックに合わせて設定してください。

この手順には通常1~2営業日かかります。残りの設定を始める前に依頼してください。

ElevenLabs WebSocketエンドポイント

Exotel Voicebotアプレットを設定し、以下のWebSocket URLにオーディオをストリーミングします。

環境WebSocket URL
デフォルト(米国/国際)wss://api.elevenlabs.io/v1/convai/conversation/exotel
EUデータレジデンシーwss://api.eu.residency.elevenlabs.io/v1/convai/conversation/exotel
インドデータレジデンシーwss://api.in.residency.elevenlabs.io/v1/convai/conversation/exotel

ElevenLabsアカウントが隔離されたデータレジデンシー環境(EUまたはインド)にある場合は、対応するデータレジデンシーURLを使用する必要があります。データ レジデンシーの詳細をご覧ください。

Exotelでの設定

1

Exotel認証情報を取得する

Exotelダッシュボードで、左側のMonitorメニューを開き、Developerをクリックします。API認証情報ページが開き、Account SID、APIキー、APIトークンを確認できます。

Exotelサイドバー:Developer

以下の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トークンを使用します。

2

App BazaarでVoicebotアプレットを作成する

  1. Exotelダッシュボードで、左側のManageメニューを開き、App Bazaarをクリックします。

    Exotelサイドバー:App Bazaar

  2. Create / Add New Flowをクリックし、アプリにわかりやすい名前(例:ElevenLabs)を付けてから、OKをクリックします。

    Exotel:Add New Flowダイアログ

  3. 右側のアプレットパレットから、VoicebotアプレットをCall Startキャンバスにドラッグします。

    Voicebotが強調表示されたExotelアプレットパレット

  4. Voicebotアプレットの設定を開き、データレジデンシーに対応するElevenLabs WebSocket URLをURLフィールド(「Which bot you want to connect the enduser?」フィールド)に貼り付けます。

    wss://api.elevenlabs.io/v1/convai/conversation/exotel

    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」)はデフォルトのままで構いません。

    ElevenLabs WebSocket URLで設定されたVoicebotアプレット

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

    右側のVoice Appletsパレットから、ConnectアプレットをVoicebotのNext → Continue to the next appletスロットにドラッグします。

    Connectが強調表示されたVoice Appletsパレット

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

    https://api.elevenlabs.io/v1/convai/exotel/connect-applet

    ElevenLabs動的URLで設定されたConnectアプレット

    対応するデータレジデンシーURLは以下のとおりです。

    環境ConnectアプレットURL
    デフォルト(米国/国際)https://api.elevenlabs.io/v1/convai/exotel/connect-applet
    EUデータレジデンシーhttps://api.eu.residency.elevenlabs.io/v1/convai/exotel/connect-applet
    インドデータレジデンシーhttps://api.in.residency.elevenlabs.io/v1/convai/exotel/connect-applet

    エージェントがTransfer to numberツールを呼び出すと、ElevenLabsは制御をExotelに戻し、ExotelはこのURLを取得してダイヤル先の電話番号を取得します。Fallback URLは空のままにし、その他の設定はすべてデフォルトのままにしてください。

  6. アプレットを保存して公開します。

  7. Applet ID(App IDと呼ばれることもあります)を控えます。ExoMLエディターのURL(例:.../exoml/start_voice/12345)またはAppリストで確認できます。この値は、ElevenLabsに電話番号をインポートする際に必要です。

Voicebotアプレットは着信・発信の両方の通話レッグを処理します。アカウントごとに必要なアプレットは1つだけです。ElevenLabsにインポートするすべての電話番号で共有できます。

3

電話番号にフローを割り当てる(着信のみ)

前の手順で作成したExoMLフローを保存して公開します。次に、Exotel電話番号をそのフローにルーティングして、着信がVoicebotアプレットに届くようにします。

  1. Exotelダッシュボードで、左側のManageメニューを開き、ExoPhones(App Bazaarのすぐ下)をクリックします。

    Exotelサイドバー:ExoPhones

  2. まだ電話番号がない場合は、続行する前にBuy a numberをクリックして、必要な国/地域の番号を購入します。

  3. ElevenLabsエージェントで使用する番号を見つけます。その番号のInstalled App列にあるドロップダウンを開き、前の手順で作成したフロー(例:ElevenLabs)を選択します。

    ExoPhones:電話番号にInstalled Appを割り当てる

  4. 設定を保存します。その番号への着信は、Voicebotアプレットへ直接ルーティングされ、ElevenLabsにストリーミングされるようになります。

番号を発信専用で使用する場合は、この手順をスキップできます。発信はElevenLabsからConnect API経由でダイヤルされ、Installed Appの割り当てには依存しません。

ElevenLabsでの設定

1

Exotel電話番号をインポートする

ElevenAgentsダッシュボードで、Phone Numbersタブに移動します。+ Import numberをクリックし、ドロップダウンからFrom Exotelを選択します。

From Exotelが選択されたElevenAgentsの番号インポートドロップダウン

以下のフィールドに入力します。

  • 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トークンをワークスペースシークレットとして保存します。

2

エージェントを割り当てる

番号をインポートしたら、Phone Numbersリストから番号を開き、Assigned agentドロップダウンで着信を処理するエージェントを選択します。

着信には、Exotel側で電話番号にVoicebotアプレットが割り当てられている必要があります(前のセクションを参照)。発信専用の設定では、着信の割り当ては必要ありません。

3

着信をテストする

任意の電話からExotel番号に電話をかけます。通話はExotelによってVoicebotアプレットへルーティングされ、アプレットがElevenLabsへのWebSocketを開きます。エージェントが応答し、会話を開始します。

Calls Historyダッシュボードで通話をモニタリングし、すべてが想定どおりに動作していることを確認してください。

発信する

インポートしたExotel番号から発信することもできます。エージェントが電話番号にダイヤルし、相手が応答すると会話を開始します。

1

発信を開始する

Phone NumbersタブでExotel番号を見つけ、Outbound callボタンをクリックします。

2

通話を設定する

Outbound Callモーダルで、以下を行います。

  1. 会話を処理するエージェントを選択します。
  2. 受信者の電話番号をE.164形式で入力します。
  3. Send Test Callをクリックして通話を開始します。

ElevenLabsは保存済みの認証情報を使ってExotelのConnect APIを呼び出します。Exotelが受信者にダイヤルし、通話が応答されるとVoicebotアプレットを介してオーディオをルーティングし直します。

発信時はエージェントが会話の開始者となるため、適切な最初のメッセージがエージェントに設定されていることを確認してください。

ダッシュボードではなくプログラムから発信をトリガーするには、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から発信先番号を取得して、対象にダイヤルします。

この機能を使用するには、両方が必要です。

  1. ExoMLフローでVoicebotアプレットの直後に設定された任意のConnectアプレット(Exotelでの設定の手順5を参照)。
  2. エージェントに設定されたTransfer to numberツール。エージェント転送ガイドを参照してください。

フロー内にConnectアプレットがない場合、Voicebotの終了後にExotelが通話をルーティングする先がないため、エージェントの転送は失敗します。

トラブルシューティング

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タブの電話番号にエージェントが割り当てられていることを確認してください。

Voicebot Applet IDフィールドには、ExoMLエディターURL内の数値のApp IDが必要です(例:.../exoml/start_voice/12345の場合、IDは12345です)。完全なURLを貼り付けないでください。IDのみを使用します。

ElevenLabsは、Exotel番号を保存前にE.164へ正規化し、(provider, phone_number)で一意性を強制します。同じ番号を以前にE.164以外の形式でインポートした場合は、まず古いエントリーを削除してから、E.164形式で再インポートしてください。

便利なリンク