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

# リアルタイム監視

リアルタイム監視では、WebSocket経由でエージェントの会話をライブで観察し、進行中の通話をリモート操作できます。この機能により、会話イベントをリアルタイムで可視化し、制御コマンドで介入できます。

> **Note**
>
> この機能はエンタープライズ限定です。

## 概要

監視セッションでは、文字起こし、エージェントの応答、修正を含む会話イベントをリアルタイムでストリーミングします。また、進行中のチャット会話で、通話の終了、電話番号への転送、有人対応への切り替えを行う制御コマンドも送信できます。

## WebSocketエンドポイント

監視エンドポイントを使用してライブ会話に接続します。

```
wss://api.elevenlabs.io/v1/convai/conversations/{conversation_id}/monitor
```

`{conversation_id}`を、監視する会話のIDに置き換えます。

## 認証

認証には次の要件があります。

* **APIキーの権限**：APIキーには`ElevenLabs Agents Write`スコープが必要です
* **ワークスペースアクセス**：エージェントのワークスペースに対する`EDITOR`アクセス権が必要です
* **ヘッダー形式**：`xi-api-key`ヘッダーでAPIキーを指定します

### 接続例

```javascript
const ws = new WebSocket('wss://api.elevenlabs.io/v1/convai/conversations/conv_123/monitor', {
  headers: {
    'xi-api-key': 'your_api_key_here',
  },
});
```

```python
import websockets
import asyncio

async def monitor_conversation():
    uri = "wss://api.elevenlabs.io/v1/convai/conversations/conv_123/monitor"
    headers = {
        "xi-api-key": "your_api_key_here"
    }

    async with websockets.connect(uri, extra_headers=headers) as websocket:
        # Connection established
        pass
```

## 設定

会話を監視する前に、エージェントの設定でこの機能を有効にしてください。

### エージェント設定に移動

ダッシュボードでエージェントの設定ページを開きます。

### 監視を有効化

詳細設定パネルで「Monitoring」オプションをオンにします。

![エージェント設定の監視トグル](/docs/_fern-img/1a4b5507a39ddf6a517772b8c01ede5f7d12429175fdf89e04c8ba910f646f8e.webp)

### イベントを選択

監視するイベントを選択します。利用可能なイベントの一覧は、[クライアントイベント](/docs/ja/eleven-agents/customization/events/client-events)をご覧ください。

> **Warning**
>
> 次のイベントは監視できません：VADスコア、ターン確率メトリクス、ping。

> **Info**
>
> 監視に接続するには、会話がアクティブである必要があります。会話の開始前に監視することはできません。

## 制御コマンド

WebSocket経由でJSONコマンドを送信し、会話を制御します。

#### 通話を終了

アクティブな会話を直ちに終了します。

```javascript
// End the active conversation
ws.send(JSON.stringify({
  command_type: "end_call"
}));
```

```python
import json

# End the active conversation
await websocket.send(json.dumps({
    "command_type": "end_call"
}))
```

#### 電話番号へ転送

指定した電話番号に通話を転送します。

```javascript
// Transfer to a phone number
ws.send(JSON.stringify({
  command_type: "transfer_to_number",
  parameters: {
    phone_number: "+1234567890"
  }
}));
```

```python
import json

# Transfer to a phone number
await websocket.send(json.dumps({
    "command_type": "transfer_to_number",
    "parameters": {
        "phone_number": "+1234567890"
    }
}))
```

> **Note**
>
> `transfer_to_number`システムツールを、あらかじめエージェントに設定しておく必要があります。

#### リアルタイムのコンテキスト更新

コンテキストや指示を進行中の会話に挿入し、エージェントが新しい情報を応答に使用できるようにします。

```javascript
// Send a contextual update to the agent
ws.send(JSON.stringify({
  command_type: "contextual_update",
  parameters: {
    contextual_update: "<your update text>"
  }
}));
```

```python
import json

# Send a contextual update to the agent
await websocket.send(json.dumps({
    "command_type": "contextual_update",
    "parameters": {
        "contextual_update": "<your update text>"
    }
}))
```

#### 有人対応を有効化

チャット会話でAIエージェントから人間のオペレーターによる対応モードへ切り替えます。

```javascript
// Enable human takeover
ws.send(JSON.stringify({
  command_type: "enable_human_takeover"
}));
```

```python
import json

# Enable human takeover
await websocket.send(json.dumps({
    "command_type": "enable_human_takeover"
}))
```

#### 人間としてメッセージを送信

チャット会話で、人間のオペレーターとしてユーザーにメッセージを送信します。

```javascript
// Send a message as a human operator
ws.send(JSON.stringify({
  command_type: "send_human_message",
  parameters: {
    text: "How can I help you?"
  }
}));
```

```python
import json

# Send a message as a human operator
await websocket.send(json.dumps({
    "command_type": "send_human_message",
    "parameters": {
        "text": "How can I help you?"
    }
}))
```

#### 有人対応を無効化

人間のオペレーターからAIエージェントに制御を戻します。

```javascript
// Disable human takeover and return to AI
ws.send(JSON.stringify({
  command_type: "disable_human_takeover"
}));
```

```python
import json

# Disable human takeover and return to AI
await websocket.send(json.dumps({
    "command_type": "disable_human_takeover"
}))
```

## ユースケース

リアルタイム監視により、さまざまな運用シナリオに対応できます。

#### 品質保証

エージェントの会話をリアルタイムで監視し、品質基準を確保してトレーニングの機会を特定します。

#### 有人エスカレーション

人間の介入が必要な会話を検出し、AIエージェントからシームレスに対応を引き継ぎます。

#### 分析ダッシュボード

会話メトリクスとパフォーマンス指標を集計するリアルタイム監視ダッシュボードを構築します。

#### コールセンター監督

複数のエージェント会話を同時に監督し、必要に応じて介入します。

#### 自動介入

会話内容を分析し、特定の条件に基づいてアクションを実行する自動システムを実装します。

#### トレーニングとコーチング

ライブ会話をトレーニング教材として活用し、エージェントのパフォーマンスを向上させるリアルタイムフィードバックを提供します。

## 制限事項

#### 非同期イベント配信

監視イベントは会話に対して非同期に送信されるため、コア会話イベントと同じ順序で届かない場合があります。イベントを処理する際は、イベント順序に基づいて正確な会話タイミングを再構築しないでください。

#### オーディオデータは利用不可

監視エンドポイントはテキストイベントとメタデータのみをストリーミングします。監視イベントには生のオーディオデータは含まれません。

#### 履歴イベントの上限

アクティブな会話に接続する際にキャッシュされ利用できるのは、直近約100件のイベントのみです。それ以前のイベントは取得できません。

#### イベントフィルタリングの制限

カスタムイベント選択が有効な場合、VADスコア、ターン確率メトリクス、pingイベントは監視できません。

#### 接続タイミング

会話の開始後に接続する必要があります。会話開始前に監視エンドポイントを使用することはできません。

#### 必要な権限

会話を監視するには、APIキーに`ElevenLabs Agents Write`スコープがあり、ワークスペースへの`EDITOR`アクセス権が必要です。

## 関連リソース

#### [通話後Webhooks](/docs/ja/eleven-agents/workflows/post-call-webhooks)

通話完了後に会話データと分析を受け取ります。

#### [エージェント分析](/docs/ja/eleven-agents/customization/agent-analysis)

会話の成功評価とデータ収集を設定します。

#### [クライアントイベント](/docs/ja/eleven-agents/customization/events/client-events)

会話型アプリケーションで受信するイベントについて理解します。

#### [WebSocket API](/docs/ja/eleven-agents/libraries/web-sockets)

リアルタイム会話向けのWebSocket APIについて学びます。