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

全般

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

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: OAuth に Google ログインを使用できますか?

A: 現在、ユーザーは 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: ドラフト プロジェクトはどのくらいの頻度で更新する必要がありますか?

A: ドラフト プロジェクトは 3 日ごとに更新する必要があります。3 日後に、テスト エージェントが mobile-HomeControl 設定からなくなります。その場合は、Actions Console でプロジェクトの [TEST DRAFT](ドラフトをテスト)ボタンをクリックしてください。


Q: 一度に複数のデバイスでテストできますか?

A: Actions on Google では、一度に 1 つの「試用」AP しかサポートされていません。最初に「ap1」で [TEST DRAFT] を使用してデバイスを同期し、次に(ap1 のリンクを解除せずに)直接「ap2」で [TEST DRAFT] を実行すると、「ap1」が mobile-HomeControl-settings からなくなります。これを修正するには、再度「ap1」で [TEST DRAFT] を実行してください。設定で「ap1」のリンクを解除できます。

この 1 つのアクション パッケージは、ユーザーのすべてのアシスタント デバイスで利用できるようになります。たとえば、音声認識スピーカーと Android の両方で新しいハードウェアの統合をテストできます。


Q: 名前や発音が原因で、提出したアクション プロジェクトが不承認になりました。何を変更する必要がありますか?

A: Google は、名前の発音を確認して、発音名が将来別のアクションによって使用されないようにし、表示名と一致するようにします(将来の名前登録に影響する不一致を防ぐため)。

引き続き同じ名前を使用するには、スピーチチームが Google アシスタントに表示名を追加するようサポートにリクエストしてください。


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

A: 問題は以下のいずれかが考えられます。

  • Actions Console でプロジェクトの [TEST DRAFT] ボタンをクリックしませんでした。
  • Test-on-Device で一度に実行できるアクションは 1 つだけです。
  • Actions Console で、アクション プロジェクトの [Simulator](シミュレータ)タブにアクセスし、アクティブ / 非アクティブの切り替えを [Inactive](非アクティブ)にしてから [Active](アクティブ)にします。
  • 共有されているアクションの場合は、すべての共有の手順に従っていることを確認してください。
  • Test-on-Device は 3 日後に期限切れになります。Actions Console でプロジェクトの [TEST DRAFT] ボタンをクリックします。

Q: シミュレータで「<my agent name> と話したい」と入力するとエラーが発生するのはなぜですか?

A: スマートホーム アクションは呼び出し名を使用しません。シミュレータでテストするには、Google Home アプリがインストールされている Android または iOS スマートフォンでアカウント リンクを実行する必要があります。アカウント リンクを実行する前に、アカウントに関連付けられているデバイスも必要です。


Q: シミュレータを使用しようとするとエラーが発生するのはなぜですか?

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

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


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

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


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

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


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

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


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

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


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

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


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

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


ベスト プラクティス

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

A: 200 ミリ秒未満が理想的ですが、2〜5 秒の間でも構いません。5 秒前後の場合はご相談ください。


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

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