> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Exotelインテグレーション

## 概要

このガイドでは、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アカウント](https://exotel.com/)。
2. [my.exotel.com](https://my.exotel.com)（シンガポール）または[my.exotel.in](https://my.exotel.in)（ムンバイ）のExotelダッシュボードへの管理者アクセス。
3. ElevenLabsアカウントと、電話番号を接続する[エージェント](/docs/ja/eleven-agents/quickstart)。

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

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

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

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

> **Warning**
>
> この手順には通常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` |

> **Info**
>
> ElevenLabsアカウントが隔離されたデータレジデンシー環境（EUまたはインド）にある場合は、対応するデータレジデンシーURLを使用する必要があります。[データ レジデンシー](/docs/ja/overview/administration/data-residency)の詳細をご覧ください。

## Exotelでの設定

#### Exotel認証情報を取得する

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

![Exotelサイドバー：Developer](/docs/_fern-img/ebe936f8cd0d1773a88bb4922a7642cf8c2f844f39eb4ee9ee04eab50ecfa6c4.webp)

以下の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アプレットを作成する

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

   ![Exotelサイドバー：App Bazaar](/docs/_fern-img/1e50c6687044e4fea1e6e636bc2db8a4a481c87eb44cdfc8019cff20bd1fe363.webp)

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

   ![Exotel：Add New Flowダイアログ](/docs/_fern-img/928f17d1351f93e7a9bd60d92498dde8b24d350686cf273be146e9d315927704.webp)

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

   ![Voicebotが強調表示されたExotelアプレットパレット](/docs/_fern-img/d19a0e66925d5931cd8f9eae7a1264b8a0e259d07736564cab4e1e894401c508.webp)

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

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

   > **Info**
   >
   > 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アプレット](/docs/_fern-img/bb375863bb02b0908786403c080280f4561f21d887fb490050d54ff4ec211794.webp)

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

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

   ![Connectが強調表示されたVoice Appletsパレット](/docs/_fern-img/1c325fc4ae992db551209b667519ffd75161b6a97ebf71ed6b751bbf26339faf.webp)

   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アプレット](/docs/_fern-img/7ed4516ec33ea62830d9279a266ada20311741d0489fe2661dc528b8dbcbe126.webp)

   対応するデータレジデンシー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` |

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

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

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

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

#### 電話番号にフローを割り当てる（着信のみ）

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

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

   ![Exotelサイドバー：ExoPhones](/docs/_fern-img/30351173b2c2cfaa2ccd8d9e29e6aaba319ac3b5f2ee51d91a4f7913d3e218a4.webp)

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

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

   ![ExoPhones：電話番号にInstalled Appを割り当てる](/docs/_fern-img/5ed6b42794bb00f330dd52d50a5831622e3156955d59adb1ca64b746d1ec7d2b.webp)

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

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

## ElevenLabsでの設定

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

ElevenAgentsダッシュボードで、[**Phone Numbers**](https://elevenlabs.io/app/agents/phone-numbers)タブに移動します。**+ Import number**をクリックし、ドロップダウンから**From Exotel**を選択します。

![From Exotelが選択されたElevenAgentsの番号インポートドロップダウン](/docs/_fern-img/2a62cf9f6b63914c5688da5f58515168fa1ff39b8602f70fea7a1ff257bb6918.webp)

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

* **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**ドロップダウンで着信を処理するエージェントを選択します。

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

#### 着信をテストする

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

> **Tip**
>
> [Calls Historyダッシュボード](https://elevenlabs.io/app/agents/history)で通話をモニタリングし、すべてが想定どおりに動作していることを確認してください。

## 発信する

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

#### 発信を開始する

[**Phone Numbers**](https://elevenlabs.io/app/agents/phone-numbers)タブでExotel番号を見つけ、**Outbound call**ボタンをクリックします。

#### 通話を設定する

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

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

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

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

ダッシュボードではなくプログラムから発信をトリガーするには、[Exotel経由の発信](/docs/ja/api-reference/exotel/outbound-call)エンドポイントを使用します。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での設定](#setup-on-exotel)の手順5を参照）。
2. エージェントに設定された**Transfer to number**ツール。[エージェント転送ガイド](/docs/ja/eleven-agents/customization/tools/system-tools/transfer-to-number)を参照してください。

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

## トラブルシューティング

#### 発信開始時の\`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\`不一致エラー

**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形式で再インポートしてください。

## 便利なリンク

* [Exotel API経由の発信APIリファレンス](/docs/ja/api-reference/exotel/outbound-call)
* [Exotel APIドキュメント](https://developer.exotel.com/api/)
* [Exotel Voicebotアプレットリファレンス](https://support.exotel.com/support/solutions/articles/3000099826)
* [ElevenAgents電話番号ダッシュボード](https://elevenlabs.io/app/agents/phone-numbers)