# 認証ウェブフック成功時の払い出し

## 概要

Sora では認証ウェブフック成功時に様々な値を外部の認証サーバーから払い出すことができます。

Sora は払い出された値を反映した状態でクライアントへの接続要求 `"type": "offer"` を送ります。

## 範囲表記

`2..10` と書いてある場合 2 以上、10 以下の値を指定できることを表しています。

## audio の払い出し

クライアントが指定してきた音声のコーデックやビットレートなどのパラメーターに対して、
認証サーバー側で新たに値を払い出すことで、上書きを行えます。

クライアントが指定してきた値を上書きできるため、
サーバー側でそれぞれのクライアントに対して、音声のコーデックやビットレートをコントロールできます。

### 指定項目一覧

- audio- `true` または `false` が指定できます

> **注意**
>
> audio_codec_type や audio_bit_rate 等の audio 関連のパラメーターを指定する場合は、あわせて `audio` に `true` を指定する必要があります

- audio_codec_type- "OPUS"
  - codec_type を指定しないこともできます
- audio_bit_rate- 6..510
  - 単位は kbps です
  - **デフォルトで最適なビットレートが選択されるようになっているため指定する必要はありません**
- audio_opus_params- [オーディオの Opus 設定指定](WEBSOCKET_SIGNALING.html#c82100) をオブジェクトとして指定できます- [オーディオの Opus 設定指定](WEBSOCKET_SIGNALING.html#c82100) の `opus_params` を `audio_opus_params` に変更して指定してください

### 払い出し例

この機能を使用する場合は、認証成功時のレスポンス JSON に `audio` や `audio_codec_type` や `audio_bit_rate` を指定してください。
ここで使用できるのはシグナリングの `"type": "connect"` 時に指定できる `audio` の値です。

```javascript
{
  "allowed": true,
  "audio": true,
  "audio_codec_type": "OPUS",
  "audio_bit_rate": 64
}
```


## video の払い出し

クライアントが指定してきた映像のコーデックやビットレートなどのパラメーターに対して、
認証サーバー側で新たに値を払い出すことで、上書きを行えます。

クライアントが指定してきた値を上書きできるため、
サーバー側でそれぞれのクライアントに対して、映像のコーデックやビットレートを指定できます。

### 指定項目一覧

- "video"- true または false が指定できます

> **注意**
>
> video_codec_type や video_bit_rate 等の video 関連のパラメーターを指定する場合は、あわせて `video` に `true` を指定する必要があります

- "video_codec_type"- この項目を指定する場合は `"video": true` をあわせて指定してください
  - 文字列で指定できます
  - "VP8"
  - "VP9"
  - "AV1"
  - "H264"
  - "H265"
  - codec_type を指定しないこともできます
- "video_bit_rate"- 1..30000- サポートされている値は 1..15000 です
  - 単位は kbps です
  - video_bit_rate を指定しないこともできます
- video_vp9_params- [ビデオの VP9 設定指定](WEBSOCKET_SIGNALING.html#b7556a) をオブジェクトとして指定できます- [ビデオの VP9 設定指定](WEBSOCKET_SIGNALING.html#b7556a) の `vp9_params` を `video_vp9_params` に変更して指定してください
- video_av1_params- [ビデオの AV1 設定指定](WEBSOCKET_SIGNALING.html#48f92d) をオブジェクトとして指定できます- [ビデオの AV1 設定指定](WEBSOCKET_SIGNALING.html#48f92d) の `av1_params` を `video_av1_params` に変更して指定してください
- video_h264_params- [ビデオの H.264 設定指定](WEBSOCKET_SIGNALING.html#ffc4cb) をオブジェクトとして指定できます- [ビデオの H.264 設定指定](WEBSOCKET_SIGNALING.html#ffc4cb) の `h264_params` を `video_h264_params` に変更して指定してください
- video_h265_params- [ビデオの H.265 設定指定](WEBSOCKET_SIGNALING.html#bfe45b) をオブジェクトとして指定できます- [ビデオの H.265 設定指定](WEBSOCKET_SIGNALING.html#bfe45b) の `h265_params` を `video_h265_params` に変更して指定してください

### 払い出し例

この機能を使用する場合は、認証成功時のレスポンス JSON に `video` や `video_codec_type` や `video_bit_rate` を指定してください。
ここで使用できるのはシグナリングの `"type": "connect"` 時に指定できる `video` の値です。

```javascript
{
  "allowed": true,
  "video": true,
  "video_codec_type": "VP9",
  "video_bit_rate": 1000
}
```


## client_id の払い出し

Sora は認証成功時の戻り値に `client_id` を認証サーバーから返すことができます。

シグナリング接続時にも、 認証成功時の戻り値にも `client_id` を指定しない場合は `connection_id` と同じ値が `client_id` に割りあてられます。

```javascript
{
  "allowed": true,
  "client_id": "spam"
}
```

- client_id- 1 から 255 の長さの文字列


## bundle_id の払い出し

Sora は認証成功時の戻り値に `bundle_id` を認証サーバーから返すことができます。

`bundle_id` を指定した場合、マルチストリーム利用時に `bundle_id` の値が同じ接続からの音声や映像、メッセージング、シグナリング通知を受信しなくなります。

シグナリング接続時にも、認証成功時の戻り値にも `bundle_id` を指定しない場合は `connection_id` と同じ値が `bundle_id` に割り当てられます。

```javascript
{
  "allowed": true,
  "bundle_id": "spam"
}
```

- bundle_id- 1 から 255 バイトの文字列

## simulcast の払い出し

Sora は認証成功時のタイミングで接続単位での `simulcast` の値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "simulcast": true
}
```


### simulcast_request_rid  の払い出し

*バージョン 2025.2.0 で追加。*

Sora は認証成功時のタイミングで接続単位での `simulcast_request_rid` の値を認証サーバーから払い出すことができます。この値を指定するときは必ず `simulacast` も `true` で払い出してください。

この値は `sora.conf` の [default_simulcast_request_rid](SORA_CONF.html#9891c8) の値を上書きします。

```javascript
{
  "allowed": true,
  "simulcast": true,
  "simulcast_request_rid": "r1"
}
```

### simulcast_rid の払い出し

> **注意**
>
> この払い出し項目は 2027 年 12 月リリース予定の Sora にて廃止予定です。
> [simulcast_request_rid  の払い出し](AUTH_WEBHOOK_RETURN.html#9939f8) を利用してください。

Sora は認証成功時のタイミングで接続単位での `simulcast_rid` の値を認証サーバーから払い出すことができます。この値を指定するときは必ず `simulacast` も `true` で払い出してください。

この値は `sora.conf` の [default_simulcast_rid](SORA_CONF.html#d95788) の値を上書きします。

```javascript
{
  "allowed": true,
  "simulcast": true,
  "simulcast_rid": "r1"
}
```


### simulcast_auto_rids の払い出し

*バージョン 2025.2.0 で追加。*

Sora は、認証成功時のタイミングで接続単位での `simulcast_auto_rids` の値を認証サーバーから払い出すことができます。この値は `sora.conf` の [default_simulcast_auto_rids](SORA_CONF.html#97a674) の値を上書きします。この値を指定するときは必ず `simulacast` も `true` で払い出してください。

```javascript
{
  "allowed": true,
  "simulcast": true,
  "simulcast_auto_rids": ["r0", "r1"]
}
```


## simulcast_rpc_rids の払い出し

Sora は、認証成功時のタイミングで接続単位での `simulcast_rpc_rids` の値を認証サーバーから払い出すことができます。この値を指定するときは必ず `simulacast` も `true` で払い出してください。

[RPC 機能](RPC.html) の [2025.2.0/RequestSimulcastRid](RPC.html#07fda8) RPC で指定できる rid のリストです。

```javascript
{
  "allowed": true,
  "simulcast": true,
  "simulcast_rpc_rids": ["none", "r0", "r1"]
}
```


## simulcast_encodings の払い出し

Sora は、認証成功時のタイミングで接続単位での `simulcast_encodings` の値を認証サーバーから払い出すことができます。この値を指定するときは必ず `simulacast` も `true` で払い出してください。

```javascript
{
  "allowed": true,
  "simulcast": true,
  "simulcast_encodings": [
    {"rid": "r0", "active": true, "scaleResolutionDownBy": 2.0, "maxFramerate": 1.0},
    {"rid": "r1", "active": true, "scaleResolutionDownBy": 2.0, "maxFramerate": 10.0},
    {"rid": "r2", "active": true, "scaleResolutionDownBy": 1.0, "maxFramerate": 30.0}
  ]
}
```

詳細については [サイマルキャスト](SIMULCAST.html) の [映像のエンコーディングパラメーターのカスタマイズ](SIMULCAST.html#6c680e) をご確認ください。


## simulcast_codecs の払い出し

Sora は、認証成功時のタイミングで接続単位での `simulcast_codecs` の値を認証サーバーから払い出すことができます。この値を指定するときは必ず `simulacast` も `true` で払い出してください。

```javascript
{
  "allowed": true,
  "simulcast": true,
  "simulcast_multicodec": true,
  "simulcast_codecs": [
    {"rid": "r0", "codec_type": "AV1", "codec_params": {"profile": 0}},
    {"rid": "r1", "codec_type": "AV1", "codec_params": {"profile": 0}},
    {"rid": "r2", "codec_type": "VP9", "codec_params": {"profile_id": 0}}
  ]
}
```

詳細については [サイマルキャストマルチコーデック](SIMULCAST_MULTICODEC.html) をご確認ください。


## spotlight_encodings の払い出し

Sora は、認証成功時のタイミングで接続単位での `spotlight_encodings` の値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "spotlight": true,
  "spotlight_encodings": [
    {"rid": "r0", "active": true, "scaleResolutionDownBy": 4.0, "maxFramerate": 1.0},
    {"rid": "r1", "active": true, "scaleResolutionDownBy": 1.0, "maxFramerate": 10.0},
    {"rid": "r2", "active": false}
  ]
}
```

詳細については [スポットライト機能](SPOTLIGHT.html) の [スポットライト利用時の映像のエンコーディングパラメーターのカスタマイズ](SPOTLIGHT.html#bd05eb) をご確認ください。

## spotlight の払い出し

Sora は、認証成功時のタイミングで接続単位での `spotlight` の値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "spotlight": true
}
```

### spotlight_number の払い出し

> **警告**
>
> この払い出しは非推奨です。
> セッション単位での払い出し [spotlight_number](SESSION_WEBHOOK.html#c66032) を利用してください。

Sora は、認証成功時のタイミングで接続単位での `spotlight_number` の値を認証サーバーから払い出すことができます。

`spotlight_number` はセッションに参加しているすべてのクライアントが同一の値を指定する必要があります。

```javascript
{
  "allowed": true,
  "spotlight": true,
  "spotlight_number": 3
}
```


## data_channel_signaling の払い出し

Sora は、認証成功時のタイミングで接続単位での `data_channel_signaling` の値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "data_channel_signaling": true
}
```

この値は `"type": "connect"` の `data_channel_signaling` や `sora.conf` の [default_data_channel_signaling](SORA_CONF.html#adceef) の値を上書きします。

### 認証成功時にクライアントが受け取る JSON

```javascript
{
  "type": "offer",
  "sdp": "<SDP>",
  "data_channel_signaling": true,
  "ignore_disconnect_websocket": false
}
```

## ignore_disconnect_websocket の払い出し

Sora は、認証成功時のタイミングで接続単位での `ignore_disconnect_websocket` の値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "ignore_disconnect_websocket": true
}
```

この値は `"type": "connect"` の `ignore_disconnect_websocket` や `sora.conf` の [default_ignore_disconnect_websocket](SORA_CONF.html#58fe04) の値を上書きします。

ただし `data_channel_signaling` が `true` の時のみ、この値は有効になります。

### 認証成功時にクライアントが受け取る JSON

data_channel_signaling が有効な場合、 `"type": "switched"` が送られる際に `ignore_disconnect_websocket` も送られます。

```javascript
{
  "type": "switched",
  "ignore_disconnect_websocket": "<Boolean>",
}
```


## rpc_methods の払い出し

Sora は、認証成功時のタイミングでそのコネクションが利用できる RPC 機能のメソッド名を `rpc_methods` で認証サーバーから払い出すことができます。

この機能を利用するには、コネクションの `data_channel_signaling` が `true` になっている必要があります。

RPC 機能については [RPC 機能](RPC.html) をご確認ください。

```javascript
{
  "allowed": true,
  "rpc_methods": [
    "2025.2.0/RequestSimulcastRid",
    "2025.2.0/PutSignalingNotifyMetadataItem"
  ]
}
```

## data_channels の払い出し

Sora は、認証成功時のタイミングで接続単位での `data_channels` の値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "data_channels": [
    {
      "label": "#spam",
      "max_packet_life_time": 5000,
      "ordered": true,
      "protocol": "efg",
      "compress": false,
      "direction": "sendonly"
    },
    {
      "label": "#egg",
      "max_retransmits": 0,
      "ordered": false,
      "protocol": "abc",
      "compress": false,
      "direction": "recvonly"
    }
  ]
}
```

`data_channels` の詳細仕様は [data_channels 仕様](MESSAGING.html#ad1989) をご確認ください。


## metadata の払い出し

Sora は、認証成功時のタイミングで `metadata` という値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "metadata": {"spam": "egg"}
}
```

認証サーバーが認証成功時に `metadata` を含めた場合、クライアントへ送る `"type": "offer"` に `metadata` をそのまま送ります。

この機能を使うことで、認証成功のタイミングでユーザーごとに任意の値を送ることができます。

### 認証成功時にクライアントが受け取る JSON

認証成功の場合は Offer 送信時の JSON に `metadata` が含められます。

```javascript
{
  "type": "offer",
  "sdp": "<SDP>",
  "metadata": {"spam": "egg"}
}
```


## event_metadata の払い出し

> **重要**
>
> event_metadata はクライアントには送られません

Sora は、認証成功時のタイミングで `event_metadata` という値を認証サーバーから払い出すことができます。

認証サーバーが認証成功時に `event_metadata` を含めた場合、
イベントウェブフックリクエスト送信時に `event_metadata` という項目が追加されます。

```javascript
{
  "allowed": true,
  "event_metadata": {"pk": 1}
}
```

`event_metadata` はクライアントに知られることのない値です。
Sora イベントウェブフックリクエスト送信先のサーバーのみが知り得る値となります。

### 使用例

この `event_metadata` の値は、クライアントに知られることはありません。そのためユーザー ID を直接入れておくという仕組みも使用できます。

こうすることで通知の際、サーバー側がユーザーの判定をしやすくなります。


## ICE コネクションステート機能のタイムアウト値の払い出し

Sora は、認証成功時のタイミングで `ice_connection_state_disconnected_timeout_ms` と `ice_connection_state_failed_timeout_ms` を認証サーバーから払い出すことができます。


### ice_connection_state_disconnected_timeout_ms の払い出し

ice_connection_state_disconnected_timeout_ms の値は `sora.conf` の [default_ice_connection_state_disconnected_timeout](SORA_CONF.html#420a1e) の値を上書きします。

```javascript
{
  "allowed": true,
  "ice_connection_state_disconnected_timeout_ms": 10000,
}
```


### ice_connection_state_failed_timeout_ms の払い出し

ice_connection_state_failed_timeout_ms の値は `sora.conf` の [default_ice_connection_state_failed_timeout](SORA_CONF.html#d6f965) の値を上書きします。

```javascript
{
  "allowed": true,
  "ice_connection_state_failed_timeout_ms": 20000,
}
```

## シグナリング経由での通知機能の払い出し

Sora は、認証成功時のタイミングで `signaling_notify` という値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "signaling_notify": true
}
```

`signaling_notify` の値を返すことで、クライアントごとにシグナリング通知を受け取るかどうかを指定できるようになります。

シグナリング経由での通知機能の詳細は [シグナリング通知機能](SIGNALING_NOTIFY.html) をご確認ください

## シグナリング経由での通知機能を利用したメタデータの払い出し

Sora は、認証成功時のタイミングで `signaling_notify_metadata` という値を認証サーバーから払い出すことができます。

ここに値を指定することで、参加時や離脱時に他の参加者に情報を通知できます。

```javascript
{
  "allowed": true,
  "signaling_notify_metadata": {
      "username": "spam"
  }
}
```

詳細は [シグナリング通知メタデータ](SIGNALING_NOTIFY_METADATA.html) をご確認ください。

## シグナリング通知で ICE コネクションステートの変更したことを通知するかどうかの払い出し

> **重要**
>
> この機能は [signaling_notify_ice_connection_state](SORA_CONF.html#e65192) の値が `false` の場合でも利用できます。

Sora は、認証成功時のタイミングで `signaling_notify_ice_connection_state` という値を認証サーバーから払い出すことができます。

`signaling_notify_ice_connection_state` を `true` で払い出すことで、Sora は ICE コネクションステートが変更した際に、
同一チャネルに接続している自分を含むクライアント全員へ通知するようになります。

この値のデフォルト値は `sora.conf` の [signaling_notify_ice_connection_state](SORA_CONF.html#e65192) の値です。

```javascript
{
  "allowed": true,
  "signaling_notify_ice_connection_state": true
}
```

## シグナリング通知メタデータ拡張機能の初期値払い出し

Sora は、認証成功時のタイミングで `signaling_notify_metadata_ext` という値を認証サーバーから払い出すことができます。

払い出しを利用する場合はシグナリング通知メタデータ拡張が有効である必要があります。

払い出した値がシグナリング通知メタデータ拡張の初期値として使用されます。

```javascript
{
  "allowed": true,
  "signaling_notify_metadata_ext": {
    "mute": true
  }
}
```


## 録画機能の払い出し

Sora は、認証成功時のタイミングで `recording` という値を認証サーバーから払い出すことができます。

ここに `true` を設定することで、録画を有効にできます。

```javascript
{
  "allowed": true,
  "recording": true
}
```

録画関連での指定項目詳細はセッションウェブフックでの払い出し項目をご確認ください。

- [recording_expire_time](SESSION_WEBHOOK.html#11485b)
- [recording_split_only](SESSION_WEBHOOK.html#2fa13e)
- [recording_split_duration](SESSION_WEBHOOK.html#902f0e)
- [recording_format](SESSION_WEBHOOK.html#f7a46c)
- [recording_metadata](SESSION_WEBHOOK.html#980578)

note:: この機能はあくまでセッション開始ではなくある特定の接続が来たタイミングで録画を開始したい場合などに利用する機能です。録画 API を叩かずに録画を開始したい場合に利用してください。


## 録画ブロック機能の払い出し

Sora は、認証成功時のタイミングで `recording_block` という値を認証サーバーから払い出すことができます。

ここに `true` を設定することで、録画有効時にその接続の録画をブロックできます。
録画がブロックされた接続の録画ファイルは出力されません。

未指定の場合は `recording_block` は `false` として扱われます。

```javascript
{
  "allowed": true,
  "recording_block": true
}
```


## cluster_affinity の払い出し

クラスターリレー機能利用時に `cluster_affinity` を指定することで、コネクション単位で同一ノードへの集約を制御できます。
この値は `sora.conf` の [default_cluster_affinity](SORA_CONF.html#95466d) の値を上書きします。

`cluster_affinity` を `true` に指定した場合、そのセッションでは同一ノードへの集約を試みます。

```javascript
{
  "allowed": true,
  "cluster_affinity": true
}
```

`cluster_affinity` を `false` に指定した場合、そのセッションでは同一ノードへの集約を行わず、
接続したノードでの WebRTC 確立を試みます。

```javascript
{
  "allowed": true,
  "cluster_affinity": false
}
```


## cluster_affinity_node_name_list の払い出し

クラスターリレー機能利用時に `cluster_affinity_node_name_list` を指定することで、 接続単位で割り当て可能なノードを指定したリストに固定できます。

この機能を利用するには `cluster_affinity` を `true` で明示する必要があります。

```javascript
{
  "allowed": true,
  "cluster_affinity": true,
  "cluster_affinity_node_name_list": ["sora1@192.0.2.10", "sora2@192.0.2.11"]
}
```

以下のケースは認証失敗として扱われ、クライアントには SERVICE-UNAVAILABLE エラーが返されます。

- `invalid_affinity_node_name_list`: `cluster_affinity_node_name_list` の指定内容が不正
- `no_acceptable_node`: 指定したノードのうち接続先として利用できるノードが 1 つもない

以下のケースは `sora.jsonl` に警告ログを出力した上で `cluster_affinity_node_name_list` を無視し、 接続は継続されます。

- `cluster_affinity` が `true` で明示されていない場合
- [最大ノード数ライセンス](LICENSE.html#aee259) が取得されていない環境で `cluster_affinity: true` を払い出した場合

詳細は [アフィニティ機能の接続先ノード範囲指定機能](CLUSTER.html#c6991a) をご確認ください。


## forwarding_filters の払い出し

Sora は、認証成功時のタイミングで `forwarding_filters` を認証サーバーから払い出すことができます。

転送フィルタールールの詳細については [転送フィルター機能](FORWARDING_FILTER.html) をご確認ください。

```javascript
{
  "allowed": true,
  "forwarding_filters": [
    {
      "action": "allow",
      "name": "audio-only",
      "priority": 128,
      "rules": [
        [
          {
            "field": "kind",
            "operator": "is_in",
            "values": [
              "audio"
            ]
          }
        ]
      ]
    }
  ]
}
```


## connection_lifetime の払い出し

Sora は、認証成功時のタイミングで `connection_lifetime` を認証サーバーから払い出すことができます。

例えば 3600 を指定すると 1 時間 (3600 秒) 後に接続が切断されます。

```javascript
{
  "allowed": true,
  "connection_lifetime": 3600
}
```

- **秒** で指定してください
- [default_connection_lifetime](SORA_CONF.html#7ec6a4) の値を上書きします
- 最大 2,592,000 秒 (30 日) まで指定できます
- コネクション生成後に変更することはできません
- `connection_lifetime` が未指定の場合は **無制限** です
- `connection.destroyed` の `reason` に `lifetime_expired` が入ります
- コネクションのライフタイムが終了すると、コネクションが破棄され切断します
- コネクションのライフタイムが終了すると、コネクションウェブフック `connection.destroyed` が送信されます
- コネクションのライフタイムよりセッションのライフタイムが優先されます


## ignore_max_connections の払い出し

Sora は、認証成功時のタイミングで `ignore_max_connections` を認証サーバーから払い出すことができます。

セッション作成時の `max_connections` にてセッション単位の最大同時接続数を制限できますが、 `ignore_max_connections` を `true` に指定するとこの制限を無視して接続できます。

```javascript
{
  "allowed": true,
  "ignore_max_connections": true
}
```


## playout_delay_min_delay と playout_delay_max_delay の払い出し

Sora は、認証成功時のタイミングで `playout_delay_min_delay` と `playout_delay_max_delay` を認証サーバーから払い出すことができます。
プレイアウト遅延機能をコネクションに指定する場合は、 `playout_delay_min_delay` と `playout_delay_max_delay` の両方を指定する必要があります。

```javascript
{
  "allowed": true,
  "playout_delay_min_delay": 0,
  "playout_delay_max_delay": 100
}
```

この値は `sora.conf` の [default_playout_delay_min_delay](SORA_CONF.html#194218) と [default_playout_delay_max_delay](SORA_CONF.html#c1b0ab) の値を上書きします。

0～40950 の範囲で指定します。単位はミリ秒です。

この機能を利用することで、コネクションごとにプレイアウト遅延を指定できます。

詳細は [プレイアウト遅延機能](PLAYOUT_DELAY.html) をご確認ください。

## ipv4_address と ipv6_address の払い出し

Sora は、認証成功時のタイミングで `ipv4_address` または `ipv6_address` を認証サーバーから払い出すことができます。
`ipv4_address` と `ipv6_address` は片方だけでも、両方返しても問題ありません。

```javascript
{
  "allowed": true,
  "ipv4_address": "192.0.2.10",
  "ipv6_address": "2001:0DB8::10"
}
```

この値は SDP の offer 時の a=candidate と TURN-UDP と TURN-TCP の URL の払い出しに使用されます。

`sora.conf` の [ipv4_address](SORA_CONF.html#04becc) と [ipv6_address](SORA_CONF.html#30f40f) のがこの戻り値で上書きされます。
指定する IP アドレスを間違えると繋がらなくなるため、使用には注意してください。

この機能を使用することでコネクションごとに経路を指定できます。

## turn_fqdn 払い出し

Sora は、認証成功時のタイミングで接続単位での `turn_fqdn` の値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "turn_fqdn": "sora-turn.example.com"
}
```

この値は `sora.conf` の [turn_fqdn](SORA_CONF.html#6513e4) の値を上書きします。

指定する FQDN を間違えると繋がらなくなるため、使用には注意してください。

## turn_tls_fqdn の 払い出し

Sora は、認証成功時のタイミングで接続単位での `turn_tls_fqdn` の値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "turn_tls_fqdn": "sora-turn.example.com"
}
```

この値は `sora.conf` の [turn_tls_fqdn](SORA_CONF.html#3bfd30) の値を上書きします。

指定する FQDN を間違えると繋がらなくなるため、使用には注意してください。


## rtc_stats の払い出し

Sora は、認証成功時のタイミングで接続単位での `rtc_stats` の値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "rtc_stats": true
}
```

この値は `sora.conf` の [default_rtc_stats](SORA_CONF.html#558c2b) の値を上書きします。


## audio_streaming_language_code の払い出し

Sora は、認証成功時のタイミングで音声ストリーミングのランゲージコードの値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "audio_streaming_language_code": "ja-JP"
}
```

この値は接続時の `audio_streaming_language_code` と `sora.conf` の [default_audio_streaming_language_code](SORA_CONF.html#856531) の値を上書きします。

## turn_tcp_only / turn_tls_only の払い出し

> **重要**
>
> この設定は検証時のみ利用してください。

Sora は、認証成功時のタイミングで接続単位での `turn_tcp_only` または `turn_tls_only` の値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "turn_tcp_only": true
}
```

```javascript
{
  "allowed": true,
  "turn_tls_only": true
}
```

この値は `sora.conf` の [turn_tcp_only](SORA_CONF.html#479c51) や [turn_tls_only](SORA_CONF.html#58d702) の値を上書きします。

## rtp_packet_loss_simulator_incoming / rtp_packet_loss_simulator_outgoing の払い出し

> **重要**
>
> この設定は検証時のみ利用してください。

**範囲**: 0..100

Sora は、認証成功時のタイミングで接続単位での RTP パケットロスシミュレーターの値を認証サーバーから払い出すことができます。

```javascript
{
  "allowed": true,
  "rtp_packet_loss_simulator_outgoing": 5
}
```

```javascript
{
  "allowed": true,
  "rtp_packet_loss_simulator_incoming": 5
}
```

この値は `sora.conf` の [rtp_packet_loss_simulator_incoming](SORA_CONF.html#5c9058) や [rtp_packet_loss_simulator_outgoing](SORA_CONF.html#1206b6) の値を上書きします。

## シーケンス図

```mermaid
sequenceDiagram
    participant C as クライアント
    participant S as Sora
    participant A as アプリケーションサーバー
    C->>+S: "type": "connect"
    S->>+A: 認証ウェブフック
    note right of A: ここで払い出しする
    A-->>-S: 200 OK<br>"allowed": true
    S-)-C: "type": "offer"
    C-)S: "type": "answer"
    note over C,S: ICE 確立
    note over C,S: DTLS 確立
    note over C,S: WebRTC 確立
```
