智慧型住宅常見問題

一般

問:我們應在何處及以何種語言導入雲端到雲端訂單履行基礎架構?

答:只要支援新版 SSL (TLS) 和 OAuth 2.0,您就可以在任何平台上以所選語言導入基礎架構。建議您盡可能將部署位置設在其他基礎架構附近,以提高可靠性,並減少執行作業對實際使用者裝置的延遲時間。


問:裝置 ID 是否必須不重複?

答:ID 不得重複。如果您的服務中沒有專屬 ID,至少必須在每位使用者層級提供專屬 ID。假設使用者擁有多個住家,且兩個住家都與同一位使用者整合。要求開啟某棟房子的燈具時,不應開啟另一棟房子中同一個 ID 的燈具。


問:裝置名稱是否必須不重複?

答:名稱不必具備唯一性,但我們建議使用者在設定完成後改善不當的命名方式,以提供更佳的使用者體驗。

以下是命名指南:

  • 名稱應為使用者實際會說的詞彙。
  • 我們會辨識字串的子集,因此如果您有「acme color light」,我們也會回覆「acme light」。
  • 建議你為產品提供描述性名稱,以及一或多個使用者定義的名稱。
  • 使用者不需要為燈具指定房間名稱,因為我們已為房間命名;每個房間應有獨特的名稱,但可以使用複數指令來控制所有裝置 (例如,辦公室壁燈中的兩個燈泡分別是「北燈」和「東燈」,但可以直接以「燈」指令控制)。

問:裝置狀態的更新頻率為何?

答:系統會在使用者發起的查詢或執行動作時,擷取暫時狀態。如果使用者詢問「燈是否開著?」或想調亮燈光,我們就需要執行查詢,以瞭解目前的狀態。


問:是否可以直接使用裝置的目前狀態更新 Home Graph?

答:是,請使用 Report State API 呼叫。


帳戶連結和 OAuth

答:是,您必須進行帳戶連結,才能將使用者的裝置連結至供應商的雲端服務。


問:對於 OAuth,我們每隔 15.213 小時就會讓存取權杖失效,這樣可以嗎?

答:可以,但請以較短的到期時間進行測試,例如 10 到 20 分鐘。OAuth 用戶端應視需要更新權杖,使用較短的到期時間進行測試,即可證明這項功能運作正常。


意圖

問:SYNC 會在何時執行?

答:系統會在 OAuth 完成後立即執行同步作業,並在要求同步呼叫後執行。


問:為什麼 SYNC 無法運作?

答:這可能有幾個常見原因。

  • 你傳送的裝置類型有誤。

    • 舉例來說,我們預期收到 action.devices.types.LIGHT,但您傳送的是 action.devices.types.Light
  • 您傳送的裝置類型不支援。

    • 舉例來說,您傳送 action.devices.types.FLASHLIGHT - 這是我們不支援的內容。
  • 您傳送的欄位無效/不支援。

    • 例如,你有一個欄位不符合規格。
  • 你的 SYNC 回應有其他格式問題。

    • 檢查括號!
  • 您遇到帳戶連結問題。

    • 請確認您在 SYNC 要求的驗證標頭中收到有效的存取權權杖。
  • 您回應 SYNC 要求的時間過長。

    • 請確認您在 5 秒內回應 SYNC 要求。

問:「待處理」回應是否可以接受?

答:如果裝置可即時使用,我們強烈建議您傳送成功/失敗回應,而非傳送待處理回應。如果您認為需要「待處理」回應,請與我們聯絡。我們瞭解某些低耗電、非即時的裝置可能需要待處理回應和非同步執行模式。


測試與提交

問:我們可以設定開發雲端環境嗎?

答:可以,您可以測試未發布的雲端環境和設定。


問:我的動作無法顯示在 Google Home 應用程式的「居家控制系統」部分,發生什麼問題?

答:請確認您是這個專案的開發人員。


回報狀態

問:實作「回報狀態」有先決條件嗎?

答:專案必須使用 Smart Home API、支援 OAuth2,且必須具備可回報狀態的屬性。


問:我們需要多常回報裝置狀態?

答:Google 對轉換和終端狀態感興趣。不過,如果在短時間內有許多狀態變更 (例如使用者在一分鐘內開關冰箱三次或滑動調光器),我們只需要回報最終狀態。


問:在進行 Report State 呼叫時,是否需要傳送完整的裝置狀態?

答:系統不支援部分狀態更新,因此 Report State 呼叫應一律包含已更新的特定特徵的所有資料。如果兩個特徵會造成不一致性,則應一併回報。


問:Google 可以查詢我的裝置來取得狀態 (也就是輪詢裝置) 嗎?

答:這是我們不建議使用的備用機制。如果我們需要為這些使用者改回頻繁輪詢裝置,我們無法保證額外負載的情況。這項需求來自新的視覺介面。除了不明載入問題外,使用者體驗也會受到影響。我們認為 Report State 對平台至關重要。


問:目前有哪些特徵支援報表狀態?

答:系統支援所有已連結狀態的公開特徵。也應回報裝置的線上狀態是否有任何變更。

請注意,場景沒有狀態。但可能會導致裝置狀態發生變化。如果 Google Home Graph 中的任何裝置有變更狀態,就必須回報。


問:回報狀態是否需要傳送時間戳記?

答:我們不需要時間戳記;系統會以最後傳送的狀態覆寫先前的呼叫。


問:如果我已在查詢和/或執行作業中傳送狀態,是否需要另外回報狀態?

答: Home Graph 只會儲存透過 Report State 傳送的狀態。系統會將狀態做為對 EXECUTE 和 QUERY 意圖的回應傳回,但僅用於向使用者提供語音回應,不會儲存。因此,即使裝置的新狀態已傳回為對 EXECUTE 或 QUERY 意圖的回應,也應呼叫 Report State


問:如果未在指定期限內完全導入報表狀態,會有什麼後果?

答:這會導致使用者體驗變差,例如在Google Home app (GHA)和視覺介面中。這表示系統會傳送許多查詢意圖,以便輪詢狀態,我們無法保證這會對合作夥伴雲端造成額外負載。


問:如何測試報表狀態的導入方式?

答:使用Google 主畫面圖表檢視器,這項自助測試工具會顯示儲存在 Home Graph 中的裝置目前狀態。


問:我們可以使用隨機的 requestId 做為報表狀態嗎?

答:如果 Report State 是透過 EXECUTE 要求觸發,建議合作夥伴使用從 EXECUTE 要求收到的相同 requestId,否則您可以使用隨機 requestId。


問:如果使用者有多部裝置,其中一部裝置的狀態發生變化,我們是否必須回報所有裝置的最新狀態?

答:否。您只需回報特定裝置的狀態。


最佳做法

問:延遲時間的容許值為何?

答:理想值是低於 200 毫秒,2 到 5 秒之間也沒問題。如果延遲時間約為 5 秒,請與我們聯絡。


問:如何讓語音控制音箱在離線時正確回應?

答:傳回離線裝置的離線狀態。我們會將「目前無法使用」傳回為此錯誤的 TTS。詳情請參閱「錯誤和例外狀況」。