インテント

スマートホーム インテントは、実行する 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 トークンを受け取ります。この時点で、Assistant は action.devices.SYNC インテントをフルフィルメントに送信し、クラウド インフラストラクチャからユーザーのデバイスと機能の初期リストを取得します。

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

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

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

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

QUERY

action.devices.QUERY インテントは、smart home デバイスの現在の状態をクエリするために使用されます。

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

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

最適なユーザー エクスペリエンスを実現するには、Report State を実装して、ユーザーのデバイスの現在の状態を Google Home Graph に直接報告する必要があります。たとえば、ユーザーが物理的なライトスイッチでスマートライトをオンにしたかどうかを Assistant が把握できます。

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 インテントを受信した後は、このユーザーのデバイスの状態を報告しないでください。