スマートホームに関するよくある質問

全般

Q: Cloud-to-Cloud フルフィルメント インフラストラクチャは、どこで、どの言語で実装すればよいですか?

A: 最新の SSL(TLS)と OAuth 2.0 をサポートしている限り、任意のプラットフォーム、任意の言語で実装できます。信頼性を向上させ、実際のユーザー デバイスで実行するまでのレイテンシを減らすために、残りのインフラストラクチャのできるだけ近くにデプロイすることをおすすめします。


Q: デバイス ID は一意である必要がありますか?

A: ID は一意である必要があります。サービス全体で一意の ID がない場合は、少なくともユーザーごとのレベルで一意である必要があります。複数の家を持つユーザーがいて、両方の家が同じユーザーに統合されているケースを考えてください。一方の家でライトを点灯しようとしても、別の家で同じ ID のライトを点灯にしてはいけません。


Q: デバイス名は一意である必要がありますか?

A: 名前は一意である必要はありませんが、将来的には、ユーザー エクスペリエンスを向上させるために、セットアップ後に名前の付け方の改善をおすすめする可能性があります。

以下は、名前の付け方に関する簡単なガイドです。

  • 実際に呼ばれている名前を使ってください。
  • 文字列の一部を認識するため、「acme color light」を持っていると、「acme light」にも応答します。
  • 製品のわかりやすい名前と、1 つ以上のユーザー定義の名前の両方をおすすめします。
  • ユーザーはライトに部屋名を付ける必要はありません。そのために部屋があるのです。部屋ごとに一意の名前を付ける必要がありますが、すべてを指定するのに複数形を使用できます(たとえば、オフィスの燭台にある 2 つの電球が「north light」と「east light」の場合、単に「lights」として指定できます)。

Q: デバイスの状態はどのくらいの頻度で更新されますか?

A: 一時的な状態は QUERY または EXECUTE のどちらかで取得されます。これらはユーザーが開始したアクションです。ユーザーが「ライトは点灯していますか?」と質問した場合、またはライトを明るくしたい場合は、現在の状態を把握するためにクエリを実行する必要があります。


Q: ホームグラフをデバイスの現在の状態で直接更新することは可能ですか?

A: 可能です。Report State API 呼び出しを使用してください。


アカウント リンクと OAuth

A: 必要です。ユーザーのデバイスをプロバイダのクラウド サービスに接続するには、アカウント リンクが必要です。


Q: OAuth の場合、15.213 時間ごとにアクセス トークンを期限切れにしますが、問題ないですか?

A: 問題ありません。ただし、たとえば 10 ~ 20 分などのかなり短い有効期限でテストしてください。Google の OAuth クライアントは必要に応じてトークンを更新するはずです。短い有効期限でテストすることにより、それが正しく動作しているが証明されます。


インテント

Q: SYNC はいつ発生しますか?

A: SYNC は、OAuth が完了した直後と、Request Sync 呼び出しが行われた後に発生します。


Q: SYNC が動作しないのはなぜですか?

A: 動作しない原因はいくつかあります。

  • 間違ったデバイスタイプを送信している。

    • たとえば、action.devices.types.LIGHT が必要なのに、action.devices.types.Light を送信しています。
  • サポートされていないデバイスタイプを送信している。

    • たとえば、action.devices.types.FLASHLIGHT を送信していますが、これは Google ではサポートしていません。
  • 無効またはサポートされていないフィールドを送信している。

    • たとえば、仕様にないフィールドがある場合。
  • SYNC レスポンスにその他のフォーマットに関する問題がある。

    • かっこを確認してください。
  • アカウント リンクで問題が発生している。

    • 受信した SYNC リクエストの Auth ヘッダーのアクセス トークンが有効であることを確認してください。
  • SYNC リクエストへの応答に時間がかかりすぎている。

    • SYNC リクエストに対して 5 秒以内に応答していることを確認してください。

Q: 「保留中」のレスポンスは問題ありませんか?

A: デバイスがリアルタイムで利用可能な場合、保留中ではなく成功/失敗のレスポンスとすることを強くおすすめします。「保留中」のレスポンスが必要と思われる場合はご連絡ください。Google は、低電力の非リアルタイム デバイスには、保留中のレスポンスと非同期実行モデルが必要になる場合があることを認識しています。


テストと送信

Q: 開発用クラウド環境を設定できますか?

A: はい。リリースされていないクラウド環境と構成をテストできます。


Q: Google Home アプリの [スマートホーム] セクションに自分のアクションが表示されません。何が起こっていますか?

A: このプロジェクトのデベロッパーであることを確認します。


Report State

Q: Report State を実装するための前提条件はありますか?

A: プロジェクトがスマートホーム API を使用し、OAuth2 をサポートし、報告される状態を持つ特性を持っている必要があります。


Q: どの程度の頻度でデバイスに Report State を実行する必要がありますか?

A: Google は遷移と終了状態に関心があります。ただし、短時間に多くの状態変化がある場合(たとえば、ユーザーが 1 分間に 3 回、冷蔵庫の開閉や調光器のスライドをする場合)最終状態の報告だけが必要です。


Q: Report State 呼び出しを行うときに完全なデバイス状態を送信する必要がありますか?

A: 部分的な状態更新はサポートされていないため、Report State 呼び出しには更新された特定の特性のために常にすべてのデータを含めてください。2 つの特性で矛盾が発生する場合、それらを一緒に報告してください。


Q: Google は、状態を取得するためにデバイスにクエリすること(デバイスのポーリング)はできますか?

A: これは推奨されない代替メカニズムです。代替手段として頻繁にデバイスをポーリングすることが必要な場合、どのような負荷が加わるか保証できません。その必要性は新しいビジュアル サーフェスから来るものです。未知の負荷の問題だけでなく、ユーザー エクスペリエンスの低下につながります。Report State はプラットフォームに不可欠だと考えています。


Q: 現在どのような特性が Report State をサポートしていますか?

A: 関連付けられた状態を持つすべての公開特性がサポートされています。デバイスのオンライン状態の変化も報告する必要があります。

シーンには状態がありませんが、デバイスの状態を変化させる可能性はあります。Google Home Graph 内のいずれかのデバイスの状態が変化した場合は、これを報告する必要があります。


Q: Report State にはタイムスタンプの送信が必要ですか?

A: タイムスタンプは不要です。最後に送信された状態が前の呼び出しをオーバーライドします。


Q: すでに QUERY または EXECUTE、あるいはその両方で状態を送信している場合、個別に Report State を実行する必要がありますか?

A: Home Graph には、Report State を介して送信された状態のみが保存されます。EXECUTE インテントおよび QUERY インテント対するレスポンスとして返される状態は、ユーザーへの音声応答にのみ使用され、保存されません。このため、デバイスの新しい状態が EXECUTE インテントまたは QUERY インテントに対するレスポンスとしてすでに返されている場合でも、Report State を呼び出す必要があります。


Q: 指定された期限内に Report State を完全に実装しなかった場合の影響は何ですか?

A: Google Home app (GHA) やビジュアル サーフェスなどでユーザー エクスペリエンスが低下します。これは、多くの QUERY インテントが状態を調査するために送信されることを意味します。これによりパートナー クラウドにどのような負荷が加わるかを保証できません。


Q: Report State の実装はどのようにテストできますか?

A: ホームグラフ ビューアを使用してください。これは、Home Graph に保存されている現在のデバイスの状態を表示するセルフサービスのテストツールです。


Q: Report State にランダムな requestId を使用できますか?

A: Report State が EXECUTE リクエストによってトリガーされた場合、パートナーには、EXECUTE リクエストから受け取ったものと同じ requestId を使用することをおすすめします。それ以外の場合は、ランダムな requestId を使用できます。


Q: ユーザーが複数のデバイスを持っていて、そのうちの 1 つの状態が変化した場合、すべてのデバイスの最新の状態を報告する必要がありますか?

A: 必要ありません。状態が変化したデバイスについて報告するだけで構いません。


ベスト プラクティス

Q: どの程度のレイテンシなら許容されますか?

A: 200 ミリ秒未満が理想的ですが、2 ~ 5 秒の間でも構いません。レイテンシが 5 秒前後で変動している場合は、お問い合わせください。


Q: 音声認識スピーカーをオフラインのときに正しく応答させるにはどうすればよいですか?

A: オフライン デバイスのオフライン状態を返します。Google は、このエラーの TTS として「現在使用できません」を返します。詳細については、エラーと例外をご覧ください。