將 Google 助理整合至你的專案 (其他語言)

請按照下方各部分的操作說明,將 Google 助理整合至您的專案。

gRPC 繫結

Google 助理服務是以高效能的開放原始碼 RPC 架構 gRPC 為基礎建構而成。這個架構非常適合雙向音訊串流。

Python

如果您使用的是 Python,請參閱這份指南

C++

查看 GitHub 上的 C++ 範例

Node.js

查看 GitHub 上的 Node.js 範例

Android Things

想使用嵌入式裝置嗎?查看 Android Things 的 Google 助理 SDK 範例

其他語言

授權並驗證你的 Google 帳戶,以便與 Google 助理搭配運作

下一步是授權裝置使用您的 Google 帳戶與 Google 助理交談。

使用 Assistant SDK 範圍取得 OAuth 權杖

Google 助理 SDK 會使用 OAuth 2.0 存取權杖授權您的裝置與 Google 助理連線。

設計原型時,您可以使用授權工具,從註冊裝置型號時產生的 client_secret_<client-id>.json 檔案輕鬆產生 OAuth2.0 憑證。

請按照下列步驟產生憑證:

  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 存取權杖,讓裝置能夠與 Google 助理 API 通訊。

瀏覽這些指南時,請使用以下指令:

請參閱「隱私權和安全性的最佳做法」,瞭解如何保護裝置。

使用 OAuth 權杖驗證 gRPC 連線

最後,請閱讀如何搭配 Google 使用權杖式驗證,驗證與 Google 助理 API 的 gRPC 連線,將所有影片整合在一起。

註冊裝置

透過手動註冊工具 (支援 Python) 註冊裝置型號和執行個體。

實作與 Google 助理的基本對話對話

  1. 實作 Google 助理 Service API 的雙向串流 gRPC 用戶端
  2. 等待使用者觸發新的要求 (例如,在按下按鈕後等待 GPIO 中斷)。
  3. 傳送已設定 config 欄位的 AssistRequest 訊息 (請參閱「AssistConfig」一節)。請確認 config 欄位包含以下內容:

    • audio_in_config 欄位:指定如何處理後續要求中提供的 audio_in 資料 (請參閱 AudioInConfig)。
    • audio_out_config 欄位,指定伺服器傳回 audio_out 訊息時要使用的格式 (請參閱 AudioOutConfig)。
    • device_config 欄位,用來向 Google 助理識別已註冊的裝置 (請參閱「DeviceConfig」)。
    • dialog_state_in 欄位,包含與要求相關聯的 language_code (請參閱 DialogStateIn)。
  4. 開始錄影。

  5. audio_in 欄位中傳送多封含有語音查詢音訊資料的 AssistRequest 訊息。

  6. 處理傳入的 AssistResponse 訊息。

  7. AssistResponse 訊息中擷取對話中繼資料。舉例來說,您可以從 dialog_state_out 取得 conversation_statevolume_percentage (請參閱 DialogStateOut)。

  8. 收到含有 END_OF_UTTERANCEevent_typeAssistResponse 時,停止錄製。

  9. 使用 audio_out 欄位提供的音訊資料,播放 Google 助理回答的音訊。

  10. 取得您稍早擷取的 conversation_state,然後複製到 AssistConfig 中的 DialogStateIn 訊息,用於下一個 AssistRequest

完成上述步驟後,您應該就能使用裝置向 Google 助理發出第一個要求。

使用裝置動作擴充對話對話方塊

擴充上方的基本對話對話方塊,觸發特定裝置的專屬硬體功能:

  1. 在收到的 AssistResponse 訊息中,擷取 device_action 欄位 (請參閱 DeviceAction)。
  2. 剖析 device_request_json 欄位的 JSON 酬載。如需支援的特徵清單,請參閱「裝置特徵」頁面。每個特徵結構定義頁面都會顯示含有裝置指令的範例 EXECUTE 要求,以及透過 JSON 酬載傳回的參數。

取得使用者要求的轉錄稿

如果裝置已連接螢幕,建議您使用該裝置來顯示使用者要求。如要取得這項資訊,請剖析 AssistResponse 訊息中的 speech_results 欄位。語音辨識完成後,這份清單會包含 stability 設為 1.0 的項目

取得 Google 助理回覆的文字和/或視覺化內容

如果你的裝置已連接螢幕,建議使用該裝置來顯示 Google 助理針對使用者要求的純文字回應。這段文字位於 DialogStateOut.supplemental_display_text 欄位中。

Google 助理可透過 HTML5 來支援特定查詢 (「山景城的天氣如何?」或「現在幾點?」),如要啟用這項功能,請在 AssistConfig 中設定 screen_out_config 欄位。ScreenOutConfig 訊息包含 screen_mode 欄位,應設為 PLAYING

AssistResponse 訊息接著會設定 screen_out 欄位。您可以從 data 欄位擷取 HTML5 資料 (如果有的話)。

透過文字輸入提交查詢

如果裝置附有文字介面 (例如鍵盤),請在 config 欄位中設定 text_query 欄位 (請參閱 AssistConfig)。請勿設定 audio_in_config 欄位。

疑難排解

如果遇到問題,請參閱疑難排解頁面。