> 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.

# Five9

> **Note**
>
> このガイドを進める前に、ElevenLabsのSIPトランクとカスタムSIPヘッダーのサポートについて理解するため、[SIPトランクガイド](/docs/ja/eleven-agents/phone-numbers/sip-trunking)を読むことをおすすめします。

## 概要

このガイドでは、Five9 AI Agent Connectを使用して、ElevenAgentsをFive9 Virtual Contact Center（VCC）と統合する方法を説明します。Five9はライブ通話をElevenLabsの電話番号に転送し、ElevenLabsエージェントが会話を処理した後、ElevenLabsはルーティングまたはディスポジションデータをFive9に返して、Five9フローを継続できるようにします。

## Five9統合の仕組み

Five9 AI Agent Connectは、SIP経由の外部転送を使用し、双方向でカスタムSIP `X-`ヘッダーを通じて通話コンテキストをやり取りします。

1. **着信転送**：Five9 IVR External Transfer Moduleが、INVITE上のSIP `X-`ヘッダーとして通話コンテキストを送信しながら、通話をElevenLabsの電話番号へ転送します。
2. **会話**：ElevenLabsが通話に応答し、必要に応じてルーターエージェントを経由して適切なエージェントにルーティングした後、発信者との会話を処理します。
3. **返送経路**：会話が終了すると、ElevenLabsはルーティングおよびディスポジションデータを`X-`ヘッダーとしてSIP BYEに追加します。
4. **AI後のルーティング**：Five9は返されたヘッダーを通話変数にマッピングし、ライブエージェントへの転送、通話終了、ディスポジションの記録など、通話フローを継続します。

## 要件

Five9統合を設定する前に、以下を確認してください。

1. AI Agent Connectが有効になっているアクティブなFive9 VCCドメイン。
2. Five9設定への管理者アクセス、または変更を行うFive9導入チーム。
3. ElevenLabsアカウントと、転送された通話を処理するための[エージェント](/docs/ja/eleven-agents/quickstart)。
4. Five9の転送先として使用する、ElevenLabsにインポート済みの[SIPトランク電話番号](/docs/ja/eleven-agents/phone-numbers/sip-trunking)。

> **Note**
>
> AI Agent ConnectはFive9 VCCの有料アドオンであり、デフォルトでは有効になっていません。この統合を開始する前に、Five9アカウントマネージャーに連絡してドメインで有効化してください。

> **Note**
>
> 設定を開始する前に、両チームで転送用電話番号、各方向に送信するヘッダー名、ルーティング値、テスト計画について合意しておく必要があります。

## ElevenLabsの設定

#### 転送用電話番号をインポートする

[SIPトランクガイド](/docs/ja/eleven-agents/phone-numbers/sip-trunking)に従って、Five9が通話を転送する電話番号をインポートします。カスタムSIPヘッダーおよびBYEヘッダーには、SIPトランク電話番号が必要です。

`+1`の国番号を含むE.164形式で番号をインポートしてください（例：`+18005550100`）。Five9はこの形式で転送を送信するため、不一致があると転送に失敗します。

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

1つのエージェントがFive9からのすべての通話を処理する場合は、[電話番号ダッシュボード](https://elevenlabs.io/app/agents/phone-numbers)でそのエージェントを電話番号に直接割り当てます。

複数のエージェントで1つの転送番号を共有する場合は、代わりにルーターエージェントを割り当て、[1つの番号で複数のエージェントをルーティングする](#routing-multiple-agents-through-one-number)に従ってください。

#### 返却ヘッダーを設定する

会話中にエージェントが設定する動的変数を、Five9が想定するSIP BYEヘッダー名にマッピングします。[BYEヘッダーの設定](#configuring-bye-headers)を参照してください。

#### テスト通話を実行する

Five9でテスト通話を行い、着信ヘッダーが動的変数として届くこと、およびBYEヘッダーが想定どおりに返されることを確認します。着信ヘッダー値は、会話履歴の**Phone Call**タブで確認できます。

## 1つの番号で複数のエージェントをルーティングする

単一のFive9転送番号を通じて複数のElevenLabsエージェントへ通話をルーティングするには、電話番号に**ルーターエージェント**を割り当て、Five9から`X-AgentID`などのヘッダーで対象エージェントを送信します。

着信`X-`ヘッダーは[動的変数](/docs/ja/eleven-agents/customization/personalization/dynamic-variables)として公開されるため、ルーターエージェントでは`X-AgentID`を`{{sip_agentid}}`として利用できます。ルーターエージェントに[エージェント転送](/docs/ja/eleven-agents/customization/tools/system-tools/agent-transfer)ツールを設定し、想定する各`X-AgentID`値に対して転送ルールを追加します。各値を、その通話を処理すべきエージェントにマッピングしてください。

これにより、エージェントごとに別の電話番号を用意する必要がなくなります。

## Five9からElevenLabsに送信されるヘッダー

Five9は、INVITE上のSIP `X-`ヘッダーとして通話メタデータを送信できます。ヘッダー名は、`X-`プレフィックスを削除し、小文字に変換し、ハイフンをアンダースコアに置き換え、`sip_`プレフィックスを追加することで正規化されます。

| ヘッダー              | 動的変数                    | 説明                                          |
| ----------------- | ----------------------- | ------------------------------------------- |
| `X-CallANI`       | `{{sip_callani}}`       | 発信者の電話番号。                                   |
| `X-CallDNIS`      | `{{sip_calldnis}}`      | ダイヤルされた電話番号。                                |
| `X-CallID`        | `{{sip_callid}}`        | 一意のFive9通話識別子。                              |
| `X-CallSessionID` | `{{sip_callsessionid}}` | 現在のセッションの識別子。                               |
| `X-CallCampaign`  | `{{sip_callcampaign}}`  | Five9キャンペーンの名前。                             |
| `X-AgentID`       | `{{sip_agentid}}`       | ルーターエージェントによるルーティングに使用する対象ElevenLabsエージェント。 |

これらの変数をエージェントプロンプト、最初のメッセージ、ツールで使用し、会話をパーソナライズできます。

> **Note**
>
> 予約済みヘッダー`X-Call-ID`および`X-Caller-ID`は、`system__call_sid`および`system__caller_id`の[システム動的変数](/docs/ja/eleven-agents/customization/personalization/dynamic-variables#system-dynamic-variables)にマッピングされます。Five9はハイフンなしの`X-CallID`および`X-CallANI`を送信し、これらは代わりに`sip_callid`および`sip_callani`に正規化されます。プロンプトで参照する前に、テスト通話中にどの変数が入力されているか確認してください。

## ElevenLabsからFive9に返されるヘッダー

ElevenLabsは、ルーティングおよびレポートデータをSIP BYEで返します。以下のヘッダー名は、Five9 AI Agent Connectで推奨される規則です。

| ヘッダー               | 説明                                 |
| ------------------ | ---------------------------------- |
| `X-RouteType`      | Five9が実行するアクション。例：`SkillTransfer`。 |
| `X-RouteValue`     | アクションの対象。例：Five9スキル名。              |
| `X-RouteReason`    | 顧客の意図など、ルーティング判断のコンテキスト。           |
| `X-ConversationId` | ログの関連付けに使用するElevenLabs会話識別子。       |

Five9フローで必要な追加の`X-`ヘッダーも返せます。各ヘッダー値はエージェント上の動的変数から取得されるため、エージェントは会話中にこれらの変数を設定する必要があります。

## BYEヘッダーの設定

BYEヘッダーは、エージェントの動的変数の最終値をFive9に返します。電話番号の`inbound_trunk_config`で`attributes_to_headers`を使用し、各動的変数名をヘッダー名にマッピングします。エージェントが設定する変数と、`system__conversation_id`などの[システム動的変数](/docs/ja/eleven-agents/customization/personalization/dynamic-variables#system-dynamic-variables)の両方をマッピングできます。

**`Python`**

```python title="Python"
import os
from dotenv import load_dotenv
from elevenlabs import ElevenLabs, InboundSipTrunkConfigRequestModel

load_dotenv()

elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))

elevenlabs.conversational_ai.phone_numbers.update(
    phone_number_id="phnum_8901k4t9z5defmb8vh3e9361y7nj",
    inbound_trunk_config=InboundSipTrunkConfigRequestModel(
        attributes_to_headers={
            "route_type": "X-RouteType",
            "route_value": "X-RouteValue",
            "route_reason": "X-RouteReason",
            "system__conversation_id": "X-ConversationId",
        }
    ),
)
```

**`JavaScript`**

```typescript title="JavaScript"
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.phoneNumbers.update("phnum_8901k4t9z5defmb8vh3e9361y7nj", {
  inboundTrunkConfig: {
    attributesToHeaders: {
      route_type: "X-RouteType",
      route_value: "X-RouteValue",
      route_reason: "X-RouteReason",
      system__conversation_id: "X-ConversationId",
    },
  },
});
```

**`cURL`**

```bash title="cURL"
curl -X PATCH "https://api.elevenlabs.io/v1/convai/phone-numbers/phnum_8901k4t9z5defmb8vh3e9361y7nj" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "inbound_trunk_config": {
      "attributes_to_headers": {
        "route_type": "X-RouteType",
        "route_value": "X-RouteValue",
        "route_reason": "X-RouteReason",
        "system__conversation_id": "X-ConversationId"
      }
    }
  }'
```

ヘッダー値には、エージェントツールまたはWebhookオーバーライドを通じて通話中に設定された値を含め、会話終了時点の動的変数の値が使用されます。エージェントが終了時に`route_type`を`SkillTransfer`に、`route_value`を`billing_support`に設定する通話では、次のBYEヘッダーが生成されます。

```
X-RouteType: SkillTransfer
X-RouteValue: billing_support
X-RouteReason: Customer needs help with an invoice
X-ConversationId: conv_7401k6a2b8cxyzmn9pq3r5s7t1uv
```

その後、Five9は発信者を`billing_support`スキルにルーティングします。

## 推奨ルーティング値

Five9フローで直接分岐できるよう、`X-RouteType`値はシンプルで予測可能なものにしてください。

| `X-RouteType`     | `X-RouteValue`の例  | 説明                        |
| ----------------- | ----------------- | ------------------------- |
| `SkillTransfer`   | `billing_support` | 通話を特定のFive9スキルキューに転送します。  |
| `PhoneTransfer`   | `+18005550199`    | 通話を外部の電話番号に転送します。         |
| `Hangup`          | 空                 | AIとのやり取り後に通話を終了します。       |
| `DispositionOnly` | `Resolved`        | 通話を終了し、特定のディスポジションを記録します。 |

## Five9の設定

通常、Five9導入チームは以下を行います。

1. Five9ドメインでAI Agent Connectを有効にします。
2. Five9 IVR転送フローを設定します。
3. ElevenLabsの電話番号を転送先として追加します。
4. External Transfer Moduleを設定します。
5. ElevenLabsに送信する送信`X-`ヘッダーを設定します。
6. ElevenLabsから返される受信`X-`ヘッダーを設定します。
7. 返されたヘッダーをFive9通話変数にマッピングします。
8. それらの変数に基づいて分岐するAI後のルーティングロジックを設定します。
9. エンドツーエンドのテスト通話を行います。

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

#### 転送された通話を接続できない

* ElevenLabsの電話番号がSIPトランク番号としてインポートされ、エージェントが割り当てられていることを確認してください。
* Five9 External Transfer Moduleで設定された転送先が、インポートした番号と一致することを確認してください。
* ファイアウォールで、設定したトランスポートおよびポートのSIPシグナリングトラフィックが許可され、RTPポートがブロックされていないことを確認してください。

#### 着信ヘッダーを動的変数として利用できない

* Five9がINVITE上で`X-`プレフィックス付きのヘッダーを送信していることを確認してください。
* 正規化された変数名を確認してください。`X-AgentID`は`{{X-AgentID}}`や`{{agent_id}}`ではなく、`{{sip_agentid}}`になります。
* 会話履歴の**Phone Call**タブで、どのヘッダーが到着したか確認してください。
* カスタムヘッダーで`system__call_sid`および`system__caller_id`システム変数を上書きすることはできません。

#### BYEヘッダーがない、または空になっている

* 通話を受ける電話番号の`inbound_trunk_config`に`attributes_to_headers`が設定されていることを確認してください。
* キーが動的変数名で、値がヘッダー名であることを確認してください。逆ではありません。
* 会話中にエージェントが実際にそれらの動的変数を設定していることを確認してください。未設定の変数ではヘッダー値は生成されません。

#### ルーターエージェントが誤ったエージェントに転送する

* Five9がすべての転送通話で`X-AgentID`を送信していることを確認してください。
* 各`X-AgentID`値に、ルーターエージェント上の対応する転送ルールがあることを確認してください。
* ルーターエージェントの転送ルールが`{{sip_agentid}}`を参照していることを確認してください。

## 便利なリンク

* [SIPトランクガイド](/docs/ja/eleven-agents/phone-numbers/sip-trunking)
* [SIPリファレンス](/docs/ja/eleven-agents/phone-numbers/sip-reference)
* [エージェント転送ツール](/docs/ja/eleven-agents/customization/tools/system-tools/agent-transfer)
* [動的変数](/docs/ja/eleven-agents/customization/personalization/dynamic-variables)
* [電話番号更新APIリファレンス](/docs/ja/api-reference/phone-numbers/update)