アシスタントをプロジェクトに統合する(その他の言語)

以下の各セクションの手順に沿って、Google アシスタントを統合してください 追加します。

gRPC バインディング

Google アシスタント サービスは、高可用性の gRPC 上に構築されています。 オープンソースの RPC フレームワークです。このフレームワークは サポートしています。

Python

Python を使用する場合は、まずこのガイドをご覧ください。

C++

C++ サンプルを確認する ご覧ください。

Node.js

Node.js サンプルを確認する ご覧ください。

Android Things

組み込みデバイスに関心をお持ちの場合は、Assistant SDK を確認する sample: Android Things

その他の言語

  • googleapis リポジトリのクローンを作成する Google Assistant Service API のプロトコル バッファ インターフェース定義を取得する。
  • gRPC のドキュメントに従って gRPC を生成する バインディングを柔軟に設定できます。
  • 以降のセクションの手順に従います。

アシスタントで使用する Google アカウントを認可および認証する

次のステップでは、Google アシスタントとの会話をデバイスに許可します 利用できます。

Assistant SDK スコープで OAuth トークンを取得する

Assistant SDK は OAuth 2.0 アクセス トークンを使用して、デバイスが アシスタントと接続する

プロトタイピングの際は、認可ツールを使用して簡単に OAuth2.0 生成された client_secret_<client-id>.json ファイル内の認証情報を デバイスモデルの登録をご覧ください。

認証情報を生成するには、次の手順に従います。

  1. Python 仮想環境を使用する を使用して、認可ツールとその依存関係をシステムの Python パッケージから分離します。

    sudo apt-get update
    sudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found.
    python3 -m venv env
    env/bin/python -m pip install --upgrade pip setuptools wheel
    source env/bin/activate
    
  2. 認可ツールをインストールします。

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. ツールを実行します。(SSH セッションではなく)デバイスのターミナルからこれを実行する場合は、--headless フラグを削除します。

    google-oauthlib-tool --client-secrets /path/to/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
    

プロビジョニングの一部として認可を統合する準備ができたら メカニズムについては、OAuth 2.0 を使用した Google API へのアクセスに関するガイドをご覧ください。 で、OAuth アクセス トークンを取得、保持、使用して、 Assistant API と通信します。

これらのガイドに従うときは、次のものを使用してください。

プライバシーとセキュリティに関するベスト プラクティスを確認する をご覧ください。

OAuth トークンを使用して gRPC 接続を認証する

最後に、トークンベースのトークンを使用する Google での認証 Assistant API への gRPC 接続の認証を行います。

デバイスを登録する

デバイスのモデルとインスタンスを手動で登録する または登録ツール( 使用できます。

アシスタントとの基本的な会話を実装する

  1. 双方向ストリーミング gRPC クライアントを実装する Google Assistant Service API 用の認証情報です。
  2. ユーザーが新しいリクエストをトリガーするのを待つ(例: GPIO 割り込みを待つ)。 できます)。
  3. AssistRequest を送信します。 メッセージに config フィールドが設定されています(AssistConfig を参照)。 config フィールドに次のものが含まれていることを確認します。

    • audio_in_config フィールド。 後続のリクエストで提供される audio_in データ (AudioInConfig を参照)。
    • audio_out_config フィールド。必要な形式を指定します。 audio_out メッセージを返すときに使用するサーバーを定義します(AudioOutConfig を参照)。
    • device_config フィールド。 アシスタントに登録する必要があります(DeviceConfig をご覧ください)。
    • language_code を含む dialog_state_in フィールド (DialogStateIn を参照)。
  4. 録音を開始します。

  5. 複数の送信 AssistRequest を送信 音声データを含むメッセージを含むメッセージを audio_in フィールドに入力します。

  6. 受信した AssistResponse を処理する ブロックすることもできます。

  7. AssistResponse から会話のメタデータを抽出する 表示されます。たとえば、dialog_state_out から conversation_state を取得します。 および volume_percentageDialogStateOut を参照)。

  8. AssistResponseを受信したら録画を停止します event_type /END_OF_UTTERANCE

  9. audio_out からの音声データを使用して、アシスタントからの回答の音声を再生する 表示されます。

  10. 先ほど抽出した conversation_state をコピーしてコピーします。 DialogStateInに 次の AssistRequestAssistConfig のメッセージ。

これで、Google デバイスを介してアシスタントにアクセスできます。

デバイス アクションによって会話を拡張する

上記の基本的な会話ダイアログを拡張して、固有のハードウェアをトリガーする 次のような機能があります。

  1. 着信した AssistResponse メッセージがある場合は、device_action フィールドを抽出します( DeviceAction)。
  2. device_request_json フィールドの JSON ペイロードを解析します。詳しくは、 次のデバイスの [Device Traits](デバイス トレイト)ページ サポートされているトレイトのリスト。各トレイト スキーマのページに、実行サンプルの 返されたデバイス コマンドとパラメータを使用して、 JSON ペイロード。

ユーザー リクエストの音声文字変換結果を取得する

デバイスにディスプレイを接続している場合は、ディスプレイを使用して 表示されます。この文字起こしを取得するには、speech_results フィールドを解析します (AssistResponse) ブロックすることもできます。音声認識が完了すると、このリストには 1 つの item が含まれます。 stability を 1.0 に設定しています。

アシスタントのレスポンスのテキストまたは視覚的レンダリングを取得する

デバイスにディスプレイを接続している場合は、ディスプレイを使用して ユーザーのリクエストに対してアシスタントの書式なしテキストのレスポンスを表示する。このテキストの場所 (DialogStateOut.supplemental_display_text) 表示されます。

アシスタントは、特定のクエリに対して HTML5 による視覚的な応答をサポートしています( マウンテンビューの天気は?」、「今何時?」など)。これを有効にするには、 AssistConfigscreen_out_config フィールド。 ScreenOutConfig メッセージにフィールド screen_mode があり、これを PLAYING に設定する必要があります。

AssistResponse メッセージにフィールド screen_out が設定されます。HTML5 データ(存在する場合)を data フィールド。

テキスト入力によってクエリを送信する

デバイスにテキスト インターフェース(キーボードなど)を接続している場合は、 config フィールドに text_query フィールドを設定します(AssistConfig を参照)。 audio_in_config フィールドは設定しないでください。

トラブルシューティング

トラブルシューティングをご覧ください。 確認してください