10 月 21 日の Google スマートホーム デベロッパー サミットに、ぜひオンラインでご参加ください。こちらから登録すると、Google スマートホームの新機能や最新情報を確認できます。

スマートホーム インテント

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

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

サポートされているスマートホーム インテントは次のとおりです。

SYNC

action.devices.SYNC は、ユーザーが接続していて使用可能であるスマートホーム デバイスのリストをリクエストする場合に使うインテントです。

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

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

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

図 2

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

QUERY

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

ユーザーから「OK Google, キッチンで点灯しているライトはどれ?」というような質問を受けたとき、Google アシスタントはその質問に答えるために action.devices.QUERY インテントをフルフィルメントに送信します。

図 3

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

図 4

EXECUTE

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

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

図 5

DISCONNECT

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