インテント

スマートホーム インテントは、 どのような Cloud-to-cloud 連携を実行するかを表す単純なメッセージング オブジェクトです。ライトをつける、 オーディオをスピーカーにキャストするなどです。

すべての smart home インテントは action.devices 名前空間に含まれており、アクションの開発時にインテントに対するフルフィルメントを提供する必要があります。 Google Assistantがインテントをフルフィルメントに送信するたびに、ユーザーの サードパーティ OAuth 2 アクセス トークンが Authorization ヘッダーで渡されます。

サポートされている smart home インテントは次のとおりです。

SYNC

action.devices.SYNC インテントは、ユーザーが接続して使用できる smart home デバイスのリストをリクエストするために使用されます。

ユーザーが Google Home app (GHA) でデバイスをセットアップする際、クラウドインフラストラクチャに対しそれらのデバイスの認証も 行われます。その後、 Assistant は OAuth2 トークンを受け取ります。この時点で、 Assistantaction.devices.SYNC インテントを フルフィルメントに送信してユーザーのデバイスと機能の初期リストを クラウド インフラストラクチャから取得します。

この図は、Google インフラストラクチャとパートナー インフラストラクチャ間のデータのやり取りを示しています。Google インフラストラクチャから、アシスタント クライアント アプリで使用できるパートナーのリストがパートナー インフラストラクチャに渡されて、OAuth 認証が行われます。パートナー側の OAuth 認証は、パートナー セットアップ WebView、OAuth WebView、オプションの設定と期間、パートナー クラウド サービスです。認証が完了すると、パートナー インフラストラクチャからアシスタント クライアント アプリに OAuth 認証情報が返されます。パートナー クラウド サービスから、使用可能なデバイスと機能がアシスタント サービスに送信され、その情報がホームグラフに保存されます。
図 1: Google とパートナーのインフラストラクチャ間のやり取り

ユーザーのアカウントのリンクをいったん解除して再びリンクすることを避けるため、request sync を Assistantに送信できます。これにより、action.devices.SYNC インテントがフルフィルメントに送信され、デバイスと機能のリストが同期されます。詳細については、 Request Syncの実装をご覧ください。

SYNC インテントのフロー図
図 2: SYNC インテント

ローカルホーム プラットフォームは、ローカル フルフィルメントのセットアップ中に、 スマートホーム アクションのクラウド フルフィルメントからのSYNCsmart home レスポンスをチェックします。ローカル フルフィルメントをサポートするよう SYNC レスポンスを変更する方法については、 クラウド フルフィルメントで SYNC レスポンスを更新するをご覧ください。

QUERY

action.devices.QUERY インテントは、smart home デバイスの現在の状態 を照会する場合に使うインテントです。

ユーザーがデバイスのステータスをクエリする場合、「 OK Google, キッチンで点灯しているライトはどれ?」 というような質問に答えるには、Assistantaction.devices.QUERY インテントをフルフィルメントに送信します。

QUERY インテントのフロー図
図 3: QUERY インテント

最適なユーザー エクスペリエンスを実現するには、 Report Stateを実装して、事前に ユーザーのデバイスの現在の状態を Google Home Graphに直接送信しておく必要があります。そうすれば、たとえばユーザーが Assistant物理的な照明スイッチでスマートライトをつけた場合に Google アシスタントがそれを知ることができます。

Report State を使用してデバイスの状態を報告する
図 4: デバイスの状態を報告する

EXECUTE

action.devices.EXECUTE インテントは、smart home デバイスで実行するコマンド を提供する場合に使うインテントです。

ユーザーが Assistant を通じてデバイスにコマンドを送ると、実行するアクションと対象のデバイスを指示する action.devices.EXECUTE インテントが フルフィルメントに送信されます。ユーザーは、「OK Google, リビングのライトをつけて」 などのコマンドでデバイスに対するアクションを実行できます。

EXECUTE インテントのフロー図
図 5: EXECUTE インテント

DISCONNECT

action.devices.DISCONNECT インテントは、ユーザーが Assistant からアプリアカウントのリンクを解除したことを伝えるインテントです。action.devices.DISCONNECT インテントを受け取った後で、このユーザーのデバイスのステータスを返さないでください。