請按照下方各部分的操作說明,將 Google 助理整合至您的專案。
gRPC 繫結
Google 助理服務是以高效能的開放原始碼 RPC 架構 gRPC 為基礎建構而成。這個架構非常適合雙向音訊串流。
Python
如果您使用的是 Python,請參閱這份指南。
C++
查看 GitHub 上的 C++ 範例。
Node.js
查看 GitHub 上的 Node.js 範例。
Android Things
想使用嵌入式裝置嗎?查看 Android Things 的 Google 助理 SDK 範例。
其他語言
- 複製 googleapis 存放區,以取得 Google Assistant Service API 的通訊協定緩衝區介面定義。
- 按照 gRPC 說明文件為您選擇的語言產生 gRPC 繫結
- 按照以下各節的步驟操作。
授權並驗證你的 Google 帳戶,以便與 Google 助理搭配運作
下一步是授權裝置使用您的 Google 帳戶與 Google 助理交談。
使用 Assistant SDK 範圍取得 OAuth 權杖
Google 助理 SDK 會使用 OAuth 2.0 存取權杖授權您的裝置與 Google 助理連線。
設計原型時,您可以使用授權工具,從註冊裝置型號時產生的 client_secret_<client-id>.json
檔案輕鬆產生 OAuth2.0 憑證。
請按照下列步驟產生憑證:
使用 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
安裝授權工具:
python -m pip install --upgrade google-auth-oauthlib[tool]
執行工具。如果您使用裝置的終端機 (而非 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 範圍:https://www.googleapis.com/auth/assistant-sdk-prototype
支援的 OAuth 流程:
請參閱「隱私權和安全性的最佳做法」,瞭解如何保護裝置。
使用 OAuth 權杖驗證 gRPC 連線
最後,請閱讀如何搭配 Google 使用權杖式驗證,驗證與 Google 助理 API 的 gRPC 連線,將所有影片整合在一起。
註冊裝置
透過手動或註冊工具 (支援 Python) 註冊裝置型號和執行個體。
實作與 Google 助理的基本對話對話
- 實作 Google 助理 Service API 的雙向串流 gRPC 用戶端。
- 等待使用者觸發新的要求 (例如,在按下按鈕後等待 GPIO 中斷)。
傳送已設定
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
)。
開始錄影。
在
audio_in
欄位中傳送多封含有語音查詢音訊資料的AssistRequest
訊息。處理傳入的
AssistResponse
訊息。從
AssistResponse
訊息中擷取對話中繼資料。舉例來說,您可以從dialog_state_out
取得conversation_state
和volume_percentage
(請參閱DialogStateOut
)。收到含有
END_OF_UTTERANCE
的event_type
的AssistResponse
時,停止錄製。使用
audio_out
欄位提供的音訊資料,播放 Google 助理回答的音訊。取得您稍早擷取的
conversation_state
,然後複製到AssistConfig
中的DialogStateIn
訊息,用於下一個AssistRequest
。
完成上述步驟後,您應該就能使用裝置向 Google 助理發出第一個要求。
使用裝置動作擴充對話對話方塊
擴充上方的基本對話對話方塊,觸發特定裝置的專屬硬體功能:
- 在收到的
AssistResponse
訊息中,擷取device_action
欄位 (請參閱DeviceAction
)。 - 剖析
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
欄位。
疑難排解
如果遇到問題,請參閱疑難排解頁面。