OneSayプラットフォーム
サンプル
プレビュー版:機能とAPIは変更される場合があります。
サンプルでは、OneSayの公開JavaScript SDK(@onesay/sdk)を使います。SDKはまだパッケージレジストリに公開されていません。サンプルはプロジェクトやルームを用意しません。アプリケーションがすでに持っているリソース、認証情報、同意の判断を使います。
サービスを選ぶ#
| サービス | サンプル | 示す内容 |
|---|---|---|
| タスク音声 | JavaScriptクイックスタート | 自分で用意したPCM音声の送信、ACKとリプレイ、タスクの完了、アーティファクトと使用量の読み戻し。ID、既存のリソース、人間のユーザーによる同意の判断は、アプリケーションが用意します。 |
| RTCの音声、データ、RPC | 下記のJavaScript RTCブラウザーサンプル | 接続、パブリッシュ、サブスクライブ、受信、終了、クローズを、それぞれ明示的なボタンで行います。 |
| RTC Agent | 同じRTCサンプル | 入力パブリケーションを選択し、Agent実行を作成、読み取り、停止します。別の聞き手がAgentの音声を再生するには、聞き手自身の認可とユーザー操作が必要です。 |
タスク音声とRTCは別々のサービスです。RTCに接続したりマイクをパブリッシュしたりしても、タスクもAgentも開始しません。パイプラインAgentの文字起こし結果は、タスクのディクテーションサービスではありません。サンプルはOneSayの公開オブジェクトだけを使います。SDKは、ネイティブのルーム、トラック、トークンのAPIを公開しません。
デバイスについてはESP32クイックスタートを参照してください。
RTCサンプルを実行する#
RTCサンプルは、プレーンなブラウザーページ(index.html、app.mjs、sample.mjs、style.css)と小さな静的サーバーserve.mjsで構成されます。これらのファイルを@onesay/sdkがインストールされたディレクトリに置き、node serve.mjsを実行します。サーバーがhttp://127.0.0.1:<port>/を表示したら、そのアドレスをブラウザーで開きます。サーバーを止めるにはCtrl+Cを押します。サーバーが提供するのはページ、そのモジュール、スタイルシートだけです。認証情報を見ることはなく、APIリクエストを転送せず、権限も与えません。ページはSDKのstaging環境を使用します。
認可済みのルーム、AppSession、ソース、パブリケーションのIDと、アプリケーション自身のサインインで得た、人間のユーザーまたはAppSessionの短期トークンが必要です。トークンをパスワードフィールドに貼り付け、トークンをメモリ内でのみ使用を選択します。ページはトークンをメモリ内にのみ保持し、フィールドをすぐに消去します。Control APIは、CORSでページのオリジンを許可している必要があります。Platform APIキー、サービスキー、プロバイダーキーをブラウザーページに入れないでください。
ライフサイクルを扱う#
- 使用した各リソースID、冪等キー、ポリシーバージョンを保持してください。レスポンスが失われた場合は、同じキーで同じリクエストを送るか、元のリソースを読み取ります。
- リクエストが受け付けられても、記録されるのは意図です。サブスクリプション、パケットポリシー、Agentの停止、取り消しが受け付けられても、それが有効になったとは限りません。
- データの受信側は、パブリケーションを選択してリーダーを開始する必要があります。サンプルでは、
nextDataFrameが1フレームを読み取った後、そのリーダーを閉じます。 - ローカルの待機をキャンセルしても、サーバーがすでにコミットしたオペレーションはロールバックされません。
- 終わったらRTCセッションを閉じ、作成したAgent実行をすべて停止してください。セッションを閉じてもAgentは停止しません。
- 結果が不確かな場合は、元のリソースを読み取り、アプリケーションの同意フローを使ってください。キーの変更、新しいポリシーバージョンの追跡、代わりの作業の作成を自動で行わないでください。
Agentの音声を聞くには、client.rtc.agents.get(roomId, agentExecutionId)で実行を読み取ります。playbackがnullでなければ、Agentの出力パブリケーションを示します。nullは不明を意味し、無音ではありません。公開IDは、アプリケーションを通じて聞き手と共有します。聞き手は自身のIDとAppSessionで接続し、そのパブリケーションをサブスクライブして、ユーザー操作からsession.audio.enablePlaybackを呼び出します。
問題を報告する#
オペレーション、返されたエラーコード、リソースIDを、アクセスが制限されたレポートにまとめて記録してください。Bearerトークン、接続情報、非公開の例外テキスト、顧客のメディアは含めないでください。
元のMarkdownを表示
# サンプル サンプルでは、OneSayの公開JavaScript SDK(`@onesay/sdk`)を使います。SDKはまだパッケージレジストリに公開されていません。サンプルはプロジェクトやルームを用意しません。アプリケーションがすでに持っているリソース、認証情報、同意の判断を使います。 ## サービスを選ぶ | サービス | サンプル | 示す内容 | | --- | --- | --- | | タスク音声 | [JavaScriptクイックスタート](../guides/JAVASCRIPT_QUICKSTART.md) | 自分で用意したPCM音声の送信、ACKとリプレイ、タスクの完了、アーティファクトと使用量の読み戻し。ID、既存のリソース、人間のユーザーによる同意の判断は、アプリケーションが用意します。 | | RTCの音声、データ、RPC | 下記のJavaScript RTCブラウザーサンプル | 接続、パブリッシュ、サブスクライブ、受信、終了、クローズを、それぞれ明示的なボタンで行います。 | | RTC Agent | 同じRTCサンプル | 入力パブリケーションを選択し、Agent実行を作成、読み取り、停止します。別の聞き手がAgentの音声を再生するには、聞き手自身の認可とユーザー操作が必要です。 | タスク音声とRTCは別々のサービスです。RTCに接続したりマイクをパブリッシュしたりしても、タスクもAgentも開始しません。パイプラインAgentの文字起こし結果は、タスクのディクテーションサービスではありません。サンプルはOneSayの公開オブジェクトだけを使います。SDKは、ネイティブのルーム、トラック、トークンのAPIを公開しません。 デバイスについては[ESP32クイックスタート](../guides/ESP32_QUICKSTART.md)を参照してください。 ## RTCサンプルを実行する RTCサンプルは、プレーンなブラウザーページ(`index.html`、`app.mjs`、`sample.mjs`、`style.css`)と小さな静的サーバー`serve.mjs`で構成されます。これらのファイルを`@onesay/sdk`がインストールされたディレクトリに置き、`node serve.mjs`を実行します。サーバーが`http://127.0.0.1:<port>/`を表示したら、そのアドレスをブラウザーで開きます。サーバーを止めるにはCtrl+Cを押します。サーバーが提供するのはページ、そのモジュール、スタイルシートだけです。認証情報を見ることはなく、APIリクエストを転送せず、権限も与えません。ページはSDKの`staging`環境を使用します。 認可済みのルーム、AppSession、ソース、パブリケーションのIDと、アプリケーション自身のサインインで得た、人間のユーザーまたはAppSessionの短期トークンが必要です。トークンをパスワードフィールドに貼り付け、**トークンをメモリ内でのみ使用**を選択します。ページはトークンをメモリ内にのみ保持し、フィールドをすぐに消去します。Control APIは、CORSでページのオリジンを許可している必要があります。Platform APIキー、サービスキー、プロバイダーキーをブラウザーページに入れないでください。 ## ライフサイクルを扱う - 使用した各リソースID、冪等キー、ポリシーバージョンを保持してください。レスポンスが失われた場合は、同じキーで同じリクエストを送るか、元のリソースを読み取ります。 - リクエストが受け付けられても、記録されるのは意図です。サブスクリプション、パケットポリシー、Agentの停止、取り消しが受け付けられても、それが有効になったとは限りません。 - データの受信側は、パブリケーションを選択してリーダーを開始する必要があります。サンプルでは、`nextDataFrame`が1フレームを読み取った後、そのリーダーを閉じます。 - ローカルの待機をキャンセルしても、サーバーがすでにコミットしたオペレーションはロールバックされません。 - 終わったらRTCセッションを閉じ、作成したAgent実行をすべて停止してください。セッションを閉じてもAgentは停止しません。 - 結果が不確かな場合は、元のリソースを読み取り、アプリケーションの同意フローを使ってください。キーの変更、新しいポリシーバージョンの追跡、代わりの作業の作成を自動で行わないでください。 Agentの音声を聞くには、`client.rtc.agents.get(roomId, agentExecutionId)`で実行を読み取ります。`playback`がnullでなければ、Agentの出力パブリケーションを示します。nullは不明を意味し、無音ではありません。公開IDは、アプリケーションを通じて聞き手と共有します。聞き手は自身のIDとAppSessionで接続し、そのパブリケーションをサブスクライブして、ユーザー操作から`session.audio.enablePlayback`を呼び出します。 ## 問題を報告する オペレーション、返されたエラーコード、リソースIDを、アクセスが制限されたレポートにまとめて記録してください。Bearerトークン、接続情報、非公開の例外テキスト、顧客のメディアは含めないでください。