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

# 通話キューイング

## 概要

エージェントまたはワークスペースが同時実行数の上限に達すると、新しい通話は通常すぐに拒否されます。通話キューイングを有効にすると、エージェントの対応枠が埋まっている間に着信した発信者は、保留音を聞きながら回線を維持し、空き枠ができしだい到着順に自動接続されます。

通話キューイングはエージェントごとに設定でき、新しいエージェントではデフォルトで有効です。

> **Note**
>
> 通話キューイングは、エージェントで[バースト料金](/docs/ja/eleven-agents/guides/burst-pricing)が有効な場合のバースト容量を含め、利用可能なすべての容量が使用中になった時点で適用されます。

## 通話キューイングの仕組み

1. **容量の確認**：通話が着信すると、ElevenAgentsはエージェントとワークスペースに空いている同時実行スロットがあるかを確認します。空きがあれば、通話はすぐに接続されます。
2. **キューイング**：空きスロットがない場合、発信者はエージェントのキューで保留され、保留音が流れます。待機中は会話が開始されず、料金も発生しません。
3. **接続**：スロットが空いた瞬間、キューの先頭にいる発信者が接続され、通常どおり会話が開始されます。
4. **タイムアウト**：**キューの最大待機時間**内にスロットが空かない場合、通話は切断されます。電話回線の通話は通常どおり切断されます。WebSocketクライアントにはステータス`timed_out`の`queue_status`イベントが送信され、その後コード4300で接続が閉じられます。

特定のエージェントに対して、発信者は厳密に到着順で接続されます。複数のエージェントがワークスペースの同時実行プールを共有している場合は、通常、より長く待機している発信者から先に接続されます。

### 発信者に聞こえる内容

* TwilioおよびSIPトランク番号への電話発信者には、通話中に保留音が流れます。
* ウィジェットおよびブラウザSDKのユーザーには、ブラウザで保留音が流れます。ウィジェット（バージョン0.17.0以降）では、待機メッセージも表示され、キューに入っている間はテキスト入力が無効になります。
* 直接WebSocket APIを使用するクライアントには、通常の`audio`イベントとして保留音が送信されるほか、独自のUIで待機状態を表示するための`queue_status`イベントも送信されます。[カスタムWebSocketクライアントでのキューイベントの処理](#handling-queue-events-in-a-custom-websocket-client)を参照してください。

### 請求と会話時間

キューで待機した時間は**請求対象外**であり、エージェントの**会話の最大時間**にもカウントされず、会話の報告時間にも含まれません。ダッシュボードの会話詳細には、発信者が接続されるまでの待機時間が表示されます。

## 対応チャネル

| チャネル                                   | 通話キューイング |
| -------------------------------------- | -------- |
| Twilio着信通話                             | 対応       |
| SIPトランク着信通話                            | 対応       |
| ウィジェットおよびクライアントSDK（WebSocketとWebRTC）   | 対応       |
| 直接WebSocket API                        | 対応       |
| 発信通話およびバッチ通話                           | 非対応      |
| テキスト専用エージェント                           | 非対応      |
| Genesys、AudioCodes、Exotel、WhatsApp、SMS | 非対応      |

> **Note**
>
> 1日の通話上限はキューに入りません。エージェントの1日の上限を超える通話は、翌日まで上限が回復しないため、すぐに拒否されます。

## 設定

通話キューイングは、エージェントの**セキュリティ**タブにある**上限**セクションで、エージェントごとに設定します。

| 設定               | 説明                                                                                                                | デフォルト     |
| ---------------- | ----------------------------------------------------------------------------------------------------------------- | --------- |
| **通話キューイングを有効化** | エージェントが同時実行数の上限に達した場合、発信者をキューで待機させます。                                                                             | オン        |
| **キューの最大待機時間**   | 通話が切断されるまでに発信者が待機できる時間（秒）。1～1,800秒（30分）。                                                                          | 180秒（3分）  |
| **カスタム保留音**      | キューで待機中の発信者にループ再生するMP3またはWAVファイル。最大40MB、長さは3分まで。ファイルをアップロードしていない場合、発信者にはデフォルトの保留音が流れます。ダッシュボードまたはAPIからアップロードできます。 | デフォルトの保留音 |

#### ダッシュボードから更新

#### 上限設定を開く

ダッシュボードでエージェントを開き、**セキュリティ**タブに移動して、**上限**までスクロールします。

#### 通話キューイングを有効にする

**通話キューイングを有効化**がオンになっていることを確認し、**キューの最大待機時間**を設定します。

#### 保留音をアップロードする（任意）

**カスタム保留音**で、MP3またはWAVファイルをアップロードします。公開前に、デフォルトの保留音とアップロードした音声クリップをプレビューできます。

#### 変更を公開する

**公開**をクリックして、新しい設定を適用します。

#### CLIから更新

#### エージェント設定を取得する

```bash
elevenlabs agents pull --agent "<agent-name>"
```

#### \`agent_configs/\<agent-name>.json\`を編集する

`platform_settings.queueing_config`を設定します：

```json
{
  "platform_settings": {
    "queueing_config": {
      "enabled": true,
      "wait_timeout_seconds": 300
    }
  }
}
```

#### 変更をプッシュする

```bash
elevenlabs agents push --agent "<agent-name>"
```

#### APIから更新

```python
from dotenv import load_dotenv
from elevenlabs import ElevenLabs
import os

load_dotenv()

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

elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    platform_settings={
        "queueing_config": {
            "enabled": True,
            "wait_timeout_seconds": 300,
        },
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import "dotenv/config";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  platformSettings: {
    queueingConfig: {
      enabled: true,
      waitTimeoutSeconds: 300,
    },
  },
});
```

新しいエージェントでは、`queueing_config.enabled`が`true`に設定された状態で作成されます。通話キューイングを無効にしたエージェントを作成するには、作成リクエストで`queueing_config.enabled`を`false`に設定します。

### APIで保留音を管理する

エージェントのカスタム保留音を設定するには、MP3またはWAVファイルをアップロードします。新しいファイルをアップロードすると、以前のファイルは置き換えられます。APIは`audio/mpeg`と`audio/wav`のコンテンツタイプを受け付けるため、例ではタイプを明示的に設定しています。

```python
from dotenv import load_dotenv
from elevenlabs import ElevenLabs
import os

load_dotenv()

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

elevenlabs.conversational_ai.agents.hold_audio.create(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
hold_audio_file=("hold-music.mp3", open("hold-music.mp3", "rb"), "audio/mpeg"),
)

```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import fs from "node:fs";
import "dotenv/config";

const elevenlabs = new ElevenLabsClient();

const holdAudioFile = new File([fs.readFileSync("hold-music.mp3")], "hold-music.mp3", {
  type: "audio/mpeg",
});

await elevenlabs.conversationalAi.agents.holdAudio.create("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  holdAudioFile,
});
```

カスタムクリップを削除すると、デフォルトの保留音に戻ります：

```python
elevenlabs.conversational_ai.agents.hold_audio.delete(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
)
```

```typescript
await elevenlabs.conversationalAi.agents.holdAudio.delete("agent_7101k5zvyjhmfg983brhmhkd98n6");
```

現在のクリップは、エージェントの`platform_settings.queueing_config.hold_audio`に読み取り専用で返されます。エージェントの作成または更新リクエストで`hold_audio`を送信しても、効果はありません。

## カスタムWebSocketクライアントでのキューイベントの処理

[WebSocket API](/docs/ja/eleven-agents/libraries/web-sockets)を介して接続されたクライアントは、キューに入っている間に`queue_status`イベントを受け取ります：

```json
{
  "type": "queue_status",
  "queue_status_event": {
    "status": "waiting"
  }
}
```

* `waiting`は、`conversation_initiation_metadata`の直後かつ保留音が流れる前に、一度だけ送信されます。
* `admitted`は、発信者が接続されたときに送信されます。その後、会話は通常どおり進行します。
* `timed_out`は、待機時間がキューの最大待機時間を超えたときに送信されます。その後、サーバーはコード4300で接続を閉じます。

すぐに接続された通話では、`queue_status`イベントは送信されません。このイベントはキューに入った発信者に必ず送信され、エージェントの`client_events`で有効にする必要はありません。

保留音は、エージェントのクライアントイベントに`audio`が含まれている場合、約1秒ごとの通常の`audio`イベントとして配信されます。保留音をエージェントの発話として扱うのではなく、`queue_status`を使用して待機状態を表示してください。

> **Info**
>
> `@elevenlabs/client`および`@elevenlabs/react` SDKでは、現在このイベント専用のコールバックは提供されていません。`queue_status`を含む生のサーバーイベントを確認するには、`onIncomingEvent`コールバックを使用してください。

## よくある質問

#### キューに入った通話は同時実行数の上限にカウントされますか？

いいえ。キューで待機している発信者は、エージェントに接続されるまで同時実行スロットを占有しません。

#### 発信者はキュー内の順番や推定待機時間を聞けますか？

現在はできません。キューで待機している発信者には保留音のみが流れます。キュー内の順番や待機時間の見積もりは案内されません。

#### 待機中に発信者が通話を切った場合はどうなりますか？

発信者はすぐにキューから離れ、その後ろにいる全員が1つずつ繰り上がります。会話時間の料金は発生しません。

#### 通話キューイングは発信通話でも機能しますか？

いいえ。発信通話とバッチ通話は、容量が利用可能な場合にのみ発信されるため、キューに入ることはありません。