コンソール

リアルタイム対話の作成

WSS/v1/realtime

WebSocketで継続的な双方向のリアルタイムセッションを確立し、音声、カメラまたは画面の映像を連続して入力して、テキストと音声のレスポンスをストリーミングで受信します。

接続と認証

HTTP GETでWebSocketにアップグレードします。接続先はwss://api.mosi.cn/v1/realtimeで、modelクエリパラメータでモデルを指定する必要があります。APIキーはAuthorizationリクエストヘッダーにのみ指定できます。

フィールド型必須説明
model: query string必須

モデルIDです。moss-live-1.0で固定され、WebSocket URLのmodelクエリパラメータで渡します。

user: query string任意

呼び出し側が管理する安定したエンドユーザーIDで、URLエンコードが必要です。memory_scope=userを使用する場合は必須で、再接続時は同じuserを使用します。例:wss://api.mosi.cn/v1/realtime?model=moss-live-1.0&user=customer_001。

Authorization: HTTP header必須

Bearer <API Key>。WebSocketハンドシェイクのAuthorizationリクエストヘッダーに指定します。

セッションの流れ

段階クライアントサーバー側の応答と判定
接続の確立WebSocketハンドシェイクを完了します接続が開いた後にセッションに参加します
設定attach_sessionを送信し、次にsession.updateを送信しますsession_attached、session.updatedを順に待ち、data.errorが空文字列であることを確認します
音声と動画の送信マイクを有効にします。映像を送る場合はmedia.modeとvideo.stateを有効にします同じ接続で音声とJPEG映像を受信します
回答テキストを表示し、音声を再生して、再生確認を送信しますinput.transcript.done、output.transcript.done、response.endedを受信します
継続または終了入力を続けるか、WebSocketを閉じますこのターンが完了すれば継続できます。接続を閉じるとセッションが終了します

クライアントイベント

フィールド型説明
attach_session: event

セッションに参加します。session_attachedを受信した時点から、オンライン時間に応じた課金が始まります。

session.update: event

ペルソナと業務ルールを設定します。session.updatedを受信したらdata.errorを確認してください。空でない場合、設定は反映されません。

mic_state: event

マイク入力をオンまたはオフにします。

media.mode: event

動画または画面共有の前にtagged-v1を有効にします。

video.state: event

カメラまたは画面の映像を制御します。映像をオフにしてもセッションは終了しません。

playback.chunk.completed: event

各音声チャンクの再生が実際に完了した後に送信します。フィールドはメッセージのトップレベルに置き、dataで囲みません。実際に再生が完了した音声のみを確認し、回答テキストの終了を待ってから確認しないでください。

playback.completed: event

response.audio.doneを受信し、このターンの音声がすべて再生し終わった後に送信します。

video.stream_focus: event

主に注目する映像ソースを設定します。

playback.stopped: event

response.audio.stopを受信した後、対応する再生を停止して返送します。

サーバーイベント

フィールド型説明
session_attached: event

セッションに参加しました。受信してからペルソナと業務ルールを設定します。

session.updated: event

設定の結果。data.errorが空文字列の場合に、メディアとマイクを有効にします。

input.transcript.updated: event

ユーザーの認識テキストの更新。data.textは現時点の全文のため、表示を置き換えてください。1件ずつ追記しないでください。

input.transcript.done: event

ユーザーの認識テキストの完了。

output.transcript.updated: event

モデルの回答テキストの更新。data.textは現時点の全文のため、表示を置き換えてください。1件ずつ追記しないでください。

output.transcript.done: event

モデルの回答テキストの完了。

response.interrupted: event

回答が割り込まれました。run_id、turn_idに基づいて、対応する回答を割り込み済みとしてマークします。

response.audio.context: event

音声コンテキストを保存し、後続のバイナリ音声と順番に対応付けます。

response.audio.done: event

このターンの音声の送信が完了しました。実際の再生がすべて完了した後にplayback.completedを送信します。

response.ended: event

このターンの状態通知。セッションの終了を意味するものではありません。

error: event

エラーイベント。原因を記録し、接続とメディアのリソースを解放します。

response.audio.stop: event

対応する音声の再生を停止し、playback.stoppedを送信します。

プロトコルの制限

項目現在のプロトコル値と説明
音声上り16 kHz、下り48 kHz、モノラルのPCM S16LE。WAVヘッダーは付けません。発話の終了後も無音を送信し続けます。
メディアのカプセル化tagged-v1:音声は0x00、カメラのJPEGは0x01、画面のJPEGは0x02。映像をオフにした後も音声のプレフィックスは残ります。
映像JPEGは1枚につき1件のバイナリメッセージで送信します。Base64は使用せず、MP4ファイル全体やH.264ストリームは受け付けません。
転送音声と映像は同じWebSocketを共用します。
映像の処理過負荷時は最新の映像を保持し、処理待ちの古いフレームを破棄することがあるため、フレーム単位の解析は保証されません。1 FPS、JPEG quality 0.8、カメラの長辺640 px、画面の長辺1024 pxはクライアントのデフォルト値であり、ハードリミットではありません。

エラーコード

接続確立時の認証、権限、レート制限、一般的なHTTPエラーについては、エラーコードを参照してください。以下では、MOSS-LIVE API固有のプロトコルエラーのみを示します。

エラーコード発生条件対処方法
memory_scope_requires_useruser記憶範囲でエンドユーザーの識別情報がありません安定したuserを渡すか、session範囲を使用してください。
memory_scope_immutable再接続時に作成時のオプションを変更しました作成時のオプションで再接続してください。オプションを変更するには新しいセッションを作成してください。
invalid_memory_scopeパラメータの値が不正です列挙値を確認してください。