リファレンス
SDKの機能と互換性
プレビュー版:機能とAPIは変更される場合があります。
PDFはブラウザーの印刷ダイアログで作成します。ホスト型のエクスポートサービスではありません。
JavaScript SDKとESP32 SDKを並べて比較します。各SDKの対応状況はそれぞれ個別に記載しており、一方の対応がもう一方の対応を意味することはありません。すべてのオペレーションはサーバーが判断するため、クライアントのケイパビリティは権限ではありません。
対応マトリックス#
| ケイパビリティ | JavaScript | ESP32 |
|---|---|---|
| タスク音声(WSS、ACK、リプレイ、再開) | Supported (browser, Node) | Supported |
| RTCオーディオ | Publish, subscribe, mute, playback (browser) | RTC audio owner |
| パケット | Send and receive | Send only |
| ストリーム | Send and receive | Receive only |
| RPC | Call and handle | Callee only (answers 1–4 app.* methods, replies to the original caller only); no caller |
| DataTrack | Supported (livekit-client 2.22.3) | ESP32では未対応 |
| Agent | Explicit Agent executions and read-only Agent state | Explicit Agent Control (create, get, stop) |
| 状態、デバイス、エラー、解放 | Session state, quality, microphone selection, OneSay errors, close | Binding and media status, OneSay error codes, close |
| 選択モードのメディア暗号化 | Conditional: where the browser can run the packaged worker | Unsupported: any selected value is refused before any request |
対応状況:「対応」は利用可能、「一部対応」は一方向または一つのロールのみ、「条件付き」はクライアントの環境次第です。「未対応」は明示的なエラーで拒否し、別のトランスポートで代替することはありません。SDKごとの詳細:JavaScript SDK、ESP32 SDK。
未対応と非公開#
- JavaScriptで完全には対応していないもの:選択モードのメディア暗号化(条件付き)。
- JavaScriptで公開しないもの:native room, track and participant objects、native token or connection material、native SDK types、an escape hatch to the native SDK。
- ESP32で完全には対応していないもの:パケット(一部対応)、ストリーム(一部対応)、RPC(一部対応)、DataTrack(未対応)、選択モードのメディア暗号化(未対応)。
- ESP32で公開しないもの:native room or track handles、native token or connection material、the upstream ESP32 runtime API。
RTCのライフサイクル#
- 接続情報はControl APIが発行し、有効期間は最長60秒です。SDKは接続情報を保存せず、基盤のルームやトークンではなくOneSayのセッションを返します。
- 失効は
revokingとして要求され、有効になった時点でrevokedになります。閉じた接続が再び開くことはありません。 - JavaScriptのセッションの状態:
connected,reconnecting,closed。再接続すると受信ハンドラーはクリアされ、SDKはサブスクリプションを元のバージョンとキーでのみ復元します。 - メディア暗号化のモード:
none,e2ee(既定はnone)。選択したモードを使えないクライアントは明示的なエラーで拒否し、ダウングレードはしません。
タスクのリカバリ#
- JavaScript:再接続は最大5回で、上限付きの指数バックオフとジッターを使います。認証または権限のエラーの後は再試行せず、再開が拒否されると
failで終了します。 - ESP32:試行は最大5回で、ジッターを使い、試行ごとに使い捨てのチケットを使います。認証エラー、失効した認証情報、拒否された再開の後は再試行しません。
- 共通:連続したACKで音声を解放し、未確認の音声だけをリプレイします。オーバーフローは明示的な
client_buffer_overflowで、黙って破棄することはありません。
制限とプライバシー#
- 音声:16000 Hz、モノラル、
pcm_s16le。JavaScriptの1メッセージは最大4096サンプルで、ESP32は既定で最大3000 ms(96000バイト)をリプレイします。 - タスク音声で送る音声はアプリケーションが渡します。どちらのSDKも、そのためにマイクを開くことはありません。
- ESP32の診断情報に
wifi_ssid,raw_mac_address,raw_ip,raw_audio,transcript,credential,realtime_ticketが含まれることはありません。 - RTCの接続情報は機密情報で、
no-storeで返されます。SDKはこれを保存しません。
元のMarkdownを表示
# SDKのケイパビリティと互換性 JavaScript SDKとESP32 SDKを並べて比較します。各SDKの対応状況はそれぞれ個別に記載しており、一方の対応がもう一方の対応を意味することはありません。すべてのオペレーションはサーバーが判断するため、クライアントのケイパビリティは権限ではありません。 ## 対応マトリックス | ケイパビリティ | JavaScript | ESP32 | |---|---|---| | タスク音声(WSS、ACK、リプレイ、再開) | Supported (browser, Node) | Supported | | RTCオーディオ | Publish, subscribe, mute, playback (browser) | RTC audio owner | | パケット | Send and receive | Send only | | ストリーム | Send and receive | Receive only | | RPC | Call and handle | Callee only (answers 1–4 `app.*` methods, replies to the original caller only); no caller | | DataTrack | Supported (`livekit-client` 2.22.3) | ESP32では未対応 | | Agent | Explicit Agent executions and read-only Agent state | Explicit Agent Control (create, get, stop) | | 状態、デバイス、エラー、解放 | Session state, quality, microphone selection, OneSay errors, close | Binding and media status, OneSay error codes, close | | 選択モードのメディア暗号化 | Conditional: where the browser can run the packaged worker | Unsupported: any selected value is refused before any request | 対応状況:「対応」は利用可能、「一部対応」は一方向または一つのロールのみ、「条件付き」はクライアントの環境次第です。「未対応」は明示的なエラーで拒否し、別のトランスポートで代替することはありません。SDKごとの詳細:[JavaScript SDK](javascript-sdk-draft.md)、[ESP32 SDK](esp32-sdk.md)。 ## 未対応と非公開 - JavaScriptで完全には対応していないもの:選択モードのメディア暗号化(条件付き)。 - JavaScriptで公開しないもの:native room, track and participant objects、native token or connection material、native SDK types、an escape hatch to the native SDK。 - ESP32で完全には対応していないもの:パケット(一部対応)、ストリーム(一部対応)、RPC(一部対応)、DataTrack(未対応)、選択モードのメディア暗号化(未対応)。 - ESP32で公開しないもの:native room or track handles、native token or connection material、the upstream ESP32 runtime API。 ## RTCのライフサイクル - 接続情報はControl APIが発行し、有効期間は最長60秒です。SDKは接続情報を保存せず、基盤のルームやトークンではなくOneSayのセッションを返します。 - 失効は`revoking`として要求され、有効になった時点で`revoked`になります。閉じた接続が再び開くことはありません。 - JavaScriptのセッションの状態:`connected`, `reconnecting`, `closed`。再接続すると受信ハンドラーはクリアされ、SDKはサブスクリプションを元のバージョンとキーでのみ復元します。 - メディア暗号化のモード:`none`, `e2ee`(既定は`none`)。選択したモードを使えないクライアントは明示的なエラーで拒否し、ダウングレードはしません。 ## タスクのリカバリ - JavaScript:再接続は最大5回で、上限付きの指数バックオフとジッターを使います。認証または権限のエラーの後は再試行せず、再開が拒否されると`fail`で終了します。 - ESP32:試行は最大5回で、ジッターを使い、試行ごとに使い捨てのチケットを使います。認証エラー、失効した認証情報、拒否された再開の後は再試行しません。 - 共通:連続したACKで音声を解放し、未確認の音声だけをリプレイします。オーバーフローは明示的な`client_buffer_overflow`で、黙って破棄することはありません。 ## 制限とプライバシー - 音声:16000 Hz、モノラル、`pcm_s16le`。JavaScriptの1メッセージは最大4096サンプルで、ESP32は既定で最大3000 ms(96000バイト)をリプレイします。 - タスク音声で送る音声はアプリケーションが渡します。どちらのSDKも、そのためにマイクを開くことはありません。 - ESP32の診断情報に`wifi_ssid`, `raw_mac_address`, `raw_ip`, `raw_audio`, `transcript`, `credential`, `realtime_ticket`が含まれることはありません。 - RTCの接続情報は機密情報で、`no-store`で返されます。SDKはこれを保存しません。