(57)【要約】  スマートネットワーク接続デバイスの効率的制御および/またはリンク化。いくつかの実装形態は、複数の当事者からの複数のスマートデバイスの制御を可能にするアクティブなアプリケーション内で、(1)対話されると、サードパーティ(3P)のスマートデバイスの対応する制御を引き起こす対話型グラフィカルインターフェース要素と、(2)選択されると、3Pアプリケーションを、スマートデバイスについての付加情報を提示する状態で開かせるディープリンクの実行を引き起こす選択可能な要素の両方をレンダリングすることを対象とする。いくつかの実装形態は、追加または代替として、3Pアプリケーションがクライアントデバイスにインストールされているが、スマートデバイストポロジーには3Pの3Pスマートデバイス用のどのエントリも欠如していると判断したことに応答して、3Pの1つまたは複数の特定のスマートデバイスをスマートデバイストポロジーに効率的に追加することを対象とする。
2021518941.tif 000002
【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサによって実装される方法であって、
クライアントデバイスにおいて実行するアクティブなアプリケーションに向けられたユーザインターフェース入力を受信するステップであって、前記ユーザインターフェース入力は、クライアントデバイスのユーザインターフェース入力デバイスを介して与えられる、ステップと、
前記ユーザインターフェース入力が、さらなるユーザインターフェース入力を介して対話されると、特定のサードパーティ(3P)の1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす少なくとも1つの対話型グラフィカルインターフェース要素を、前記アクティブなアプリケーションを介してレンダリングするための要求であると判断するステップであって、
前記アクティブなアプリケーションは、前記特定の3Pの前記1つまたは複数の特定のスマートデバイスを含む、複数のサードパーティ(3P)の複数のスマートデバイスの制御を可能にする、ステップと、
前記ユーザインターフェース入力は、さらなるユーザインターフェース入力を介して対話されると、前記特定の3Pの前記1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす前記少なくとも1つの対話型グラフィカルインターフェース要素をレンダリングするための前記要求であると判断したことに応答して、
1つまたは複数のネットワークを介して、要求を送信するステップであって、前記要求は、
前記特定の3Pについての特定の3Pアドレスにアドレス指定され、
前記1つまたは複数の特定のスマートデバイスの識別子を含む、ステップと、
前記要求を送信したことに応答して、前記特定の3Pから3Pアプリケーションへのディープリンクを受信するステップであって、
前記3Pアプリケーションは、前記クライアントデバイスにインストールされているとともに、前記3Pによって制御され、
前記受信されたディープリンクは、前記1つまたは複数の特定のスマートデバイスの前記識別子を含む前記要求に基づいて、前記クライアントデバイスに、前記1つまたは複数の特定のスマートデバイスについての付加情報を提示する状態で前記3Pアプリケーションを開かせるように構成される、ステップと、
前記ユーザインターフェース入力に応答して、前記アクティブなアプリケーションに、前記少なくとも1つの対話型グラフィカルインターフェース要素と選択可能な3P要素とを同時にレンダリングさせるステップであって、
記少なくとも1つの対話型グラフィカルインターフェース要素は、さらなるユーザインターフェース入力を介して対話されると、前記特定の3Pの前記1つまたは複数の特定のスマートデバイスの対応する制御を引き起こし、
前記選択可能な3P要素は、選択されると、前記クライアントデバイスに、前記1つまたは複数の特定のスマートデバイスについての付加情報を提示する前記状態で前記3Pアプリケーションを開かせるための前記ディープリンクの実行を引き起こす、ステップと
を含む方法。
【請求項２】
前記1つまたは複数の特定のスマートデバイスについての前記付加情報は、対話されると、前記1つまたは複数の特定のスマートデバイスの1つまたは複数のプロパティの制御を引き起こす少なくとも1つの追加グラフィカル要素を含み、前記1つまたは複数の特定のスマートデバイスの前記1つまたは複数のプロパティの前記制御は、前記アプリケーションを介してレンダリングされた前記少なくとも1つの対話型グラフィカルインターフェース要素との対話を介しては可能にされない、請求項1に記載の方法。
【請求項３】
前記1つまたは複数の特定のスマートデバイスの前記識別子は、前記1つまたは複数の特定のスマートデバイスの一意の識別子であり、前記一意の識別子は、前記アプリケーションと前記3Pとの間の対話において使用され、前記一意の識別子は、前記3Pに固有である、前記1つまたは複数の特定のスマートデバイスの固有識別子に前記3Pによってローカルにマップされる、請求項1から2のいずれか一項に記載の方法。
【請求項４】
前記クライアントデバイスにおいて実行する前記アクティブなアプリケーションに向けられた前記ユーザインターフェース入力を受信するのに先立って、
前記3Pアプリケーションが前記クライアントデバイスにインストールされていると判断するステップをさらに含み、
前記要求を送信することは、前記3Pアプリケーションが前記クライアントデバイスにインストールされていると判断したことを条件とする、請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記3Pアプリケーションが前記クライアントデバイスにインストールされていると判断するステップは、
前記3Pアプリケーションが前記クライアントデバイスにインストールされていると判断するために、前記クライアントデバイスのオペレーティングシステムのアプリケーションプログラミングインターフェース(API)とインターフェースするステップを含む、請求項4に記載の方法。
【請求項６】
前記1つまたは複数のスマートデバイスはカメラを含み、前記1つまたは複数の特定のスマートデバイスについての前記付加情報は、少なくとも、
前記カメラにより最近キャプチャされたビデオクリップを含む、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記要求を送信したことに応答して、および前記特定の3Pから、前記選択可能な3P要素の指示を受信するステップと、
前記3P用の複数の候補3P要素から、レンダリングするための前記選択可能な3P要素を選択するステップであって、前記選択可能な3P要素を選択するステップは、前記要求を送信したことに応答して、前記選択可能な3P要素の前記指示が受信されたことに基づく、ステップとをさらに含む、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記アクティブなアプリケーションに、前記少なくとも1つの対話型グラフィカルインターフェース要素と前記選択可能な3P要素を同時にレンダリングさせることに続いて、
前記アクティブなアプリケーションに向けられた追加ユーザインターフェース入力を受信するステップと、
前記追加ユーザインターフェース入力が、前記アクティブなアプリケーションを介して、さらなるユーザインターフェース入力を介して対話されると、前記特定の3Pの前記1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす前記少なくとも1つの対話型グラフィカルインターフェース要素をレンダリングするための要求であると判断するステップと、
前記ユーザインターフェース入力は、さらなるユーザインターフェース入力を介して対話されると、前記特定の3Pの前記1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす前記少なくとも1つの対話型グラフィカルインターフェース要素をレンダリングするための前記要求であると判断したことに応答して、
1つまたは複数のネットワークを介して、前記要求の別のインスタンスを送信するステップであって、前記インスタンスは、
前記特定の3P用の前記特定の3Pアドレスにアドレス指定され、
前記1つまたは複数の特定のスマートデバイスの前記識別子を含む、ステップと、
前記要求を送信したことに応答して、および前記特定の3Pから、
前記クライアントデバイスにインストールされている前記3Pアプリケーションへの異なるディープリンクであって、前記受信された異なるディープリンクは、前記ディープリンクとは異なり、前記1つまたは複数の特定のスマートデバイスの前記識別子を含む前記要求に基づいて、前記クライアントデバイスに、前記3Pアプリケーションを、前記1つまたは複数の特定のスマートデバイスについての異なる情報を提示する異なる状態で開かせるように構成される、異なるディープリンクを受信するステップと、
前記追加ユーザインターフェース入力に応答して、前記アクティブなアプリケーションに、
さらなるユーザインターフェース入力を介して対話されると、前記特定の3Pの前記1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす前記少なくとも1つの対話型グラフィカルインターフェース要素と、
前記選択可能な3P要素、または選択されると、前記3Pアプリケーションを、前記1つもしくは複数の特定のスマートデバイスについての前記異なる情報を提示する前記異なる状態で開くための、前記クライアントデバイスへの前記異なるディープリンクの実行を引き起こす追加の選択可能3P要素を同時にレンダリングさせるステップとをさらに含む、請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記アクティブなアプリケーションに、前記少なくとも1つの対話型グラフィカルインターフェース要素と選択可能な前記3P要素を同時にレンダリングさせることに続いて、
前記アクティブなアプリケーションに向けられた追加ユーザインターフェース入力を受信するステップと、
前記追加ユーザインターフェース入力が、前記アクティブなアプリケーションを介して、さらなるユーザインターフェース入力を介して対話されると、前記特定の3Pの前記1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす前記少なくとも1つの対話型グラフィカルインターフェース要素をレンダリングするための要求であると判断するステップと、
前記ユーザインターフェース入力は、さらなるユーザインターフェース入力を介して対話されると、前記特定の3Pの前記1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす前記少なくとも1つの対話型グラフィカルインターフェース要素をレンダリングするための前記要求であると判断したことに応答して、
1つまたは複数のネットワークを介して、前記要求の別のインスタンスを送信するステップであって、前記インスタンスは、
前記特定の3P用の前記特定の3Pアドレスにアドレス指定され、
前記1つまたは複数の特定のスマートデバイスの前記識別子を含む、ステップと、
前記要求を送信したことに応答して、および前記特定の3Pから、
前記クライアントデバイスにインストールされている前記3Pアプリケーションへの異なるディープリンクであって、前記受信された異なるディープリンクは、前記ディープリンクとは異なり、前記1つまたは複数の特定のスマートデバイスの前記識別子を含む前記要求に基づいて、前記クライアントデバイスに、前記3Pアプリケーションを、前記ディープリンクと同じ状態で開かせるように構成される、異なるディープリンクを受信するステップと、
前記追加ユーザインターフェース入力に応答して、前記アクティブなアプリケーションに、
さらなるユーザインターフェース入力を介して対話されると、前記特定の3Pの前記1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす前記少なくとも1つの対話型グラフィカルインターフェース要素と、
前記選択可能な3P要素、または、選択されると、前記クライアントデバイスに、前記3Pアプリケーションを、前記1つもしくは複数の特定のスマートデバイスについての同じ情報を提示する同じ状態で開かせるための、前記異なるディープリンクの実行を引き起こす追加の選択可能3P要素と
を同時にレンダリングさせるステップと
をさらに含む、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
前記アクティブなアプリケーションに向けられたさらなる追加ユーザインターフェース入力を受信するステップと、
前記さらなるユーザインターフェース入力は、前記アクティブなアプリケーションを介して、さらなるユーザインターフェース入力を介して対話されると、前記特定の3Pとは別個のさらなる3Pの1つまたは複数のさらなるスマートデバイスの対応する制御を引き起こす前記少なくとも1つのさらなる対話型グラフィカルインターフェース要素をレンダリングするための要求であると判断するステップと、
前記クライアントデバイスには、前記さらなる3Pによって制御されるさらなる3Pアプリケーションが欠如していると判断するステップと、
前記さらなるユーザインターフェース入力は、前記少なくとも1つのさらなる対話型グラフィカルインターフェース要素をレンダリングするための前記要求であると、および前記クライアントデバイスには前記さらなる3Pアプリケーションが欠如していると判断したことに応答して、
前記アクティブなアプリケーションに、
さらなるユーザインターフェース入力を介して対話されると、前記さらなる3Pの前記1つまたは複数のさらなるスマートデバイスの対応する制御を引き起こす前記少なくとも1つのさらなる対話型グラフィカルインターフェース要素と、
選択されると、前記クライアントデバイスに、前記さらなる3Pアプリケーションのインストールのためのオプションを提示させるさらなる選択可能3P要素を同時にレンダリングさせるステップとをさらに含む、請求項1から9のいずれか一項に記載の方法。
【請求項１１】
1つまたは複数のプロセッサによって実装される方法であって、
サードパーティ(3P)アプリケーションが、ユーザアカウントに関連付けられたクライアントデバイスにインストールされていると判断するステップであって、前記3Pアプリケーションは、前記3Pの1つまたは複数の3Pスマートデバイスの制御を可能にする、ステップと、
前記ユーザアカウントに関連付けられるとともに、自動化アシスタントによって、前記自動化アシスタントとの対話を介してスマートデバイスを制御する際に使用されるスマートデバイストポロジーには、前記3Pの前記1つまたは複数の3Pスマートデバイスのうちのどれについてのどのエントリも欠如していると判断するステップと、
前記3Pアプリケーションが前記クライアントデバイスにインストールされていると、および前記スマートデバイストポロジーには、前記1つまたは複数の3Pスマートデバイスのうちのどれについてのどのエントリも欠如していると判断したことに応答して、
前記クライアントデバイスまたは前記ユーザアカウントに関連付けられた追加クライアントデバイスにおいて出力をレンダリングさせるステップであって、前記出力は、前記スマートデバイストポロジーに前記3Pを追加するための提案を含む、ステップと、
前記出力のレンダリングに応答して肯定的ユーザインターフェース入力を受信するステップと、
前記肯定的ユーザインターフェース入力を受信したことに応答して、
前記スマートデバイストポロジーに、前記1つまたは複数の3Pスマートデバイスのうちの少なくともいくつかの、特定のデバイスを自動的に追加する際に、前記3Pのアプリケーションプログラミングインターフェース(API)とインターフェースするのに、前記ユーザアカウントを使うステップ、
前記スマートデバイストポロジーに前記特定のスマートデバイスを自動的に追加する際に、前記クライアントデバイスにインストールされた前記サードパーティアプリケーションとインターフェースするステップ、または
前記3Pに特化された3Pアカウントにサインインすることを可能にするとともに、前記3Pアカウントにサインインするのに使用されると、前記スマートデバイストポロジーに前記特定のデバイスを自動的に追加する際に、前記3Pの前記API、もしくは追加APIとのインターフェースを引き起こすサインインインターフェースを提示するステップと
を含む方法。
【請求項１２】
前記肯定的ユーザインターフェース入力を受信したことに応答して、前記方法は、前記スマートデバイストポロジーに、前記1つまたは複数の3Pスマートデバイスのうちの少なくともいくつかの、特定のデバイスを自動的に追加する際に、前記3Pの前記APIとインターフェースするのに、前記ユーザアカウントを使うステップを含む、請求項11に記載の方法。
【請求項１３】
前記肯定的ユーザインターフェース入力の前記受信に続いて、および前記スマートデバイストポロジーに前記特定のデバイスを前記自動的に追加することが完了する前に、追加プロンプトがユーザに対して提示されない、請求項12に記載の方法。
【請求項１４】
前記肯定的ユーザインターフェース入力を受信したことに応答して、前記方法は、前記3Pに特化されるとともに、前記3Pアカウントにサインインするのに使用されると、前記スマートデバイストポロジーに前記特定のデバイスを自動的に追加する際に、前記3Pの前記API、または前記追加APIとのインターフェースを引き起こす前記3Pアカウントにサインインすることを可能にする前記サインインインターフェースを提示するステップを含む、請求項11に記載の方法。
【請求項１５】
前記サインインインターフェースを提示するステップは、前記3Pの前記アプリケーションプログラミングインターフェース(API)とインターフェースするのに前記ユーザアカウントを使うための失敗した試みに応答して起こる、請求項14に記載の方法。
【請求項１６】
前記出力は、ホーム制御アプリケーションによってレンダリングされるグラフィカル出力を含む、請求項11に記載の方法。
【請求項１７】
前記出力は、自動化アシスタントアプリケーションによってレンダリングされる可聴出力を含む、請求項11に記載の方法。
【請求項１８】
前記肯定的ユーザインターフェース入力を受信したことに応答して、前記方法は、前記スマートデバイストポロジーに前記特定のスマートデバイスを自動的に追加する際に、前記クライアントデバイスにインストールされた前記サードパーティアプリケーションとインターフェースするステップを含む、請求項11に記載の方法。
【請求項１９】
前記スマートデバイストポロジーに前記特定のスマートデバイスを自動的に追加する際に、前記サードパーティアプリケーションとインターフェースするステップは、
前記サードパーティアプリケーション用のあらかじめ与えられた署名を使って、前記サードパーティアプリケーションを認証するステップと、
前記サードパーティアプリケーションを認証したことに応答して、前記サードパーティアプリケーションをリンク化機能とともに実行させるインテントを与えるステップと、
前記インテントを与えたことに応答して、前記サードパーティアプリケーションからアクセストークンを受信するステップとを含む、請求項18に記載の方法。
【請求項２０】
前記サードパーティアプリケーションが前記リンク化機能とともに実行されると、前記サードパーティアプリケーションは、
前記検証されたアプリケーションのあらかじめ与えられた署名を使って、前記インテントが、検証されたアプリケーションによって与えられたことを認証し、
前記検証されたアプリケーションによって前記インテントが与えられたことを認証したことに応答して前記アクセストークンを戻す、請求項19に記載の方法。
【請求項２１】
前記スマートデバイストポロジーに前記特定のスマートデバイスを自動的に追加する際に、前記サードパーティアプリケーションとインターフェースするステップは、
ネットワークを介して、前記サードパーティアプリケーションのリモートシステムとインターフェースし、前記特定のスマートデバイスに関連した付加情報を取得するのに前記アクセストークンを使用するステップと、
前記付加情報の少なくとも一部を前記スマートデバイストポロジーに追加するステップとを含む、請求項19または請求項20に記載の方法。
【請求項２２】
クライアントデバイスの1つまたは複数のプロセッサによって実装される方法であって、
サードパーティ(3P)アプリケーションが前記クライアントデバイスにインストールされていると判断するステップであって、前記3Pアプリケーションは、前記3Pの1つまたは複数の3Pスマートデバイスの制御を可能にする、ステップと、
前記クライアントデバイスに関連付けられるとともに、自動化アシスタントによって、前記自動化アシスタントとの対話を介してスマートデバイスを制御する際に使用されるスマートデバイストポロジーには、前記3Pの前記1つまたは複数の3Pスマートデバイスのうちのどれについてのどのエントリも欠如していると判断するステップと、
前記サードパーティアプリケーション用のあらかじめ与えられた署名を使って、前記サードパーティアプリケーションを認証するステップと、
前記サードパーティアプリケーションを認証したことに応答して、ならびに前記3Pアプリケーションが前記クライアントデバイスにインストールされていると、および前記スマートデバイストポロジーには、前記1つまたは複数の3Pスマートデバイスのうちのどれについてのどのエントリも欠如していると判断したことに応答して、
前記スマートデバイストポロジーに特定の前記スマートデバイスを自動的に追加する際に、前記クライアントデバイスにインストールされた前記サードパーティアプリケーションとインターフェースするステップと
を含む方法。
【請求項２３】
前記スマートデバイストポロジーに前記特定のスマートデバイスを自動的に追加する際に、前記サードパーティアプリケーションとインターフェースするステップは、
前記サードパーティアプリケーションをリンク化機能とともに実行させるインテントを与えるステップと、
前記インテントを与えたことに応答して、前記サードパーティアプリケーションからアクセストークンを受信するステップとを含む、請求項22に記載の方法。
【請求項２４】
前記方法は、前記クライアントデバイスの特定のアプリケーションによって実施され、前記サードパーティアプリケーションが前記リンク化機能とともに実行されると、前記サードパーティアプリケーションは、
前記特定のアプリケーションが前記インテントを与えたことに基づいて前記特定のアプリケーションを認証し、
前記特定のアプリケーションを認証したことに応答して前記アクセストークンを戻す、請求項23に記載の方法。
【請求項２５】
前記スマートデバイストポロジーに前記特定のスマートデバイスを自動的に追加する際に、前記サードパーティアプリケーションとインターフェースするステップは、
ネットワークを介して、前記サードパーティアプリケーションのリモートシステムとインターフェースし、前記特定のスマートデバイスに関連した付加情報を取得するのに前記アクセストークンを使用するステップと、
前記付加情報の少なくとも一部を前記スマートデバイストポロジーに追加するステップとを含む、請求項23または請求項24に記載の方法。
【請求項２６】
命令を記憶するメモリと、1つまたは複数のプロセッサに、請求項1から25のいずれか一項に記載の前記方法を実施させるための前記命令を実行するように動作可能な前記プロセッサとを備えるデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スマートデバイスの効率的制御および／またはリンク化に関する。
【背景技術】
【０００２】
ユーザが、ユーザに関連付けられた(たとえば、ユーザのアカウントに関連付けられた)複数のスマートデバイスの各々を制御することを可能にするアプリケーションおよびインターフェースが提案されている。たとえば、いくつかの自動化アシスタントインターフェースが、ユーザが、様々なスマートデバイスを制御するための、口頭、タイプ入力された、タッチ、および/または他の入力を与えることを可能にする。また、たとえば、いくつかのホーム制御アプリケーションは、ユーザが、様々なスマートデバイスを制御するために、グラフィカル要素と対話すること、および/または口頭入力を与えることを可能にする。たとえば、いくつかの自動化アシスタントは、ユーザが、自動化アシスタントの様々な側面を構成すること、自動化アシスタントにリンクされた様々なスマートデバイスを制御することなどを可能にするコンパニオンホーム制御アプリケーションを含む。
【０００３】
多くの状況では、アシスタントインターフェースおよび/またはホーム制御アプリケーションを介して制御されるスマートデバイスのうちの1つまたは複数は、対応するサードパーティ(3P)によって製造される。サードパーティまたは3Pは、本明細書で使用する限り、参照される自動化アシスタントインターフェースおよび/またはホーム制御アプリケーションを制御する当事者とは別個の当事者を指す。ファーストパーティまたは1Pは、本明細書で使用する限り、参照される自動化アシスタントおよび/またはホーム制御アプリケーションを制御する当事者を指す。3Pはしばしば、3Pの1つまたは複数の3Pスマートデバイスの制御および管理に専用の(任意選択で、3Pによって製造されていないどのスマートデバイスの制御も可能にしない)3Pアプリケーションを提供する。たとえば、スマートライトを製造する特定の3Pが、3Pのスマートライトの制御および管理に専用の3Pアプリケーションを提供し得る。さらに、1Pは、スマートデバイスを製造し、1Pのスマートデバイスのうちの1つまたは複数の、制御および管理に専用の(任意選択で、1Pによって製造されていないどのスマートデバイスの制御も可能にしない)別個の1Pアプリケーションを提供し得る。
【０００４】
自動化アシスタントインターフェースおよび/またはホーム制御アプリケーションから複数のスマートデバイスを制御することは、様々な計算効率をもたらす。たとえば、クライアントデバイス上で実行するホーム制御アプリケーションは、すべてホーム制御アプリケーション内からの、3つの異なる3Pからの3つの異なるスマートデバイスの制御を可能にし得る。これは、たとえば、3つの異なるスマートデバイスの制御を可能にするために、3つの異なる3Pからの、3つの別々の3Pアプリケーション(かなりのメモリおよび/またはプロセッサリソースを使用し得る)を起動し、実行するよりも計算効率が良い場合がある。さらに、少なくとも、3つの異なる3Pアプリを起動し、3つの異なるスマートデバイスを制御するために3つの異なる3Pアプリの各々の中をナビゲートするのに必要とされるはずのユーザインターフェース入力と比較して、3つの異なるスマートデバイスを制御するために、ホーム制御アプリケーション内で、より少ない量のユーザインターフェース入力が使用され得る。
【０００５】
自動化アシスタントインターフェースおよびホーム制御アプリケーションによって与えられた計算効率にかかわらず、ユーザの1つまたは複数のスマートデバイスが、自動化アシスタントおよび/またはホーム制御アプリケーションにリンクされず、したがって、自動化アシスタントおよび/またはホーム制御アプリケーションを介して制御可能でないことが、しばしばある。したがって、それらのリンクされないスマートデバイスの制御において、より効率的でない手段が使用される。
【０００６】
追加または代替として、自動化アシスタントインターフェースおよび/またはホーム制御アプリケーションは、ユーザが、1Pスマートデバイスおよび/または3Pスマートデバイス(複数の異種類の3Pからのスマートデバイスを含む)を制御することを可能にするが、多くの事例では、与えられる制御は、スマートデバイスの制御および管理に専用である別々の1Pおよび/または3Pアプリケーションにより与えられる制御と比較して制限され得る。たとえば、3Pスマートサーモスタット用に、ホーム制御アプリケーションは、サーモスタットの設定点をユーザが調節することを可能にするグラフィカルインターフェース要素を提示し得る。ただし、3Pサーモスタットの他の特徴は、ホーム制御アプリケーションにより調節可能でない場合があるが、3Pサーモスタットおよび任意選択で、主に3Pの他のスマートデバイスの制御に専用である3Pアプリケーションにより調節可能であり得る。たとえば、サーモスタットのモード(たとえば、冷/暖/冷暖)、ファン制御(たとえば、ファンを4時間、6時間、もしくは8時間稼働する)、サーモスタットのスケジュール、および/または3Pサーモスタットの他の特徴は、3Pアプリケーションを介しては制御可能であるが、ホーム制御アプリケーションを介しては制御可能でない場合がある。ユーザが、3Pアプリケーションによって与えられる制御を望む状況では、ユーザは、3Pアプリケーションを位置特定し、起動しなければならず、しばしば、3Pサーモスタット用のインターフェースおよび/または所望の制御のためのインターフェースを識別するために、3Pアプリケーションをナビゲートしなければならない。
【発明の概要】
【課題を解決するための手段】
【０００７】
本明細書で開示される実装形態は、スマートホームアラーム、スマートドアロック、スマートカメラ、スマートライト、スマートサーモスタット、スマート重量計、スマートベッド、スマート洗浄システム、スマートガレージドアオープナー、スマートプラグ、スマート器具、スマートベビーモニター、スマート火災警報器、スマート湿度検出器などのようなスマートネットワーク接続デバイス(本明細書では、スマートデバイスまたはモノのインターネット(IoT)デバイスとも呼ばれる)の効率的制御および/またはリンク化を対象とする。
【０００８】
本明細書で開示されるいくつかの実装形態は、複数の当事者からの複数のスマートデバイスの制御を可能にするアクティブなアプリケーション(たとえば、上述したホーム制御アプリケーション)内で、(1)対話されると、3Pのスマートデバイスの対応する制御を引き起こす対話型グラフィカルインターフェース要素と、(2)選択されると、3Pアプリケーションを、スマートデバイスについての付加情報を提示する状態で開かせるディープリンクの実行を引き起こす選択可能な要素の両方をレンダリングすることを対象とする。3Pアプリケーションは主に(またはもっぱら)、3Pのスマートデバイスの制御に専用であってよい。
【０００９】
アプリケーションがその状態で開いたときに提示されるスマートデバイスについての付加情報は、アクティブなアプリケーションによって提示される、対話型グラフィカルインターフェース要素および/または任意の他の情報に対する追加である。たとえば、付加情報は、対話されると、スマートデバイスの1つまたは複数のプロパティの制御を引き起こす少なくとも1つの追加グラフィカル要素を含んでよく、1つまたは複数のプロパティの制御は、アプリケーションを介してレンダリングされた少なくとも1つの対話型グラフィカルインターフェース要素との対話を介しては可能にされない。これらおよび他のやり方では、選択可能な要素の選択により、3Pアプリケーションが、3Pのスマートデバイスのさらなる制御を可能にする状態で開く。これは、より計算効率が良く、代わりにユーザが3Pアプリケーション用のアイコンを配置し、3Pアプリケーションを起動するためにアイコンを選択し、次いで、スマートデバイスのさらなる制御を可能にする状態へナビゲートするために3Pアプリケーション内で1つまたは複数のユーザ入力を実施するのと比較して、削減された量のユーザ入力を必要とする。
【００１０】
それらの実装形態のうちのいくつかでは、ディープリンクは、3Pについての特定のアドレス(たとえば、1Pまたは3Pのアプリケーションプログラミングインターフェース(API)用のアドレス)にアドレス指定されるとともに、スマートデバイスの識別子を含む要求に応答して3Pによって生成される。たとえば、3Pが、識別子によって示されるスマートデバイスについての付加情報を提示する状態で3Pアプリケーションを開かせるようにディープリンクを生成し得る。アクティブなアプリケーションの1Pによって記憶されたディープリンクに依拠するのではなく、3Pにディープリンクを生成させることによって、3Pは、3Pアプリケーションの現在のスキーマに準拠するようにディープリンクを生成することができ、したがって、現在のスキーマにもはや準拠しない古くなった(または「壊れた」)記憶されたリンクの使用を防止する。さらに、1Pのメモリおよび/または記憶リソースは、大量のディープリンクを記憶しなくてよく、代わりに、3Pによって動的に提供されたディープリンクに依拠することによって節約され得る。またさらに、3Pは任意選択で、3Pにとってアクセス可能であるが、アクティブなアプリケーションの1Pにとってはアクセス不可能であり得るスマートデバイスに関連した最近のイベントを鑑みてディープリンクを生成することができる。これは、最近のイベントにあつらえられた状態で3Pアプリケーションが開かれることを可能にすることができ、したがって、削減された待ち時間で関連付加情報を提供する。1つの非限定的例として、3Pスマートデバイスは、3Pスマートカメラを含むことができ、所与のときに生成されたディープリンクは、3Pアプリケーションに、3Pカメラを介して起きた最近の活動検出のビデオクリップを提供させる3Pアプリケーションの状態にリンクし得る。そのようなディープリンクは、最近の活動検出が、要求に先立って閾時間量以内に起きたと3Pが判断したことに基づいて生成され得る。たとえば、3Pは、そのようなディープリンクを、最近の活動検出が要求から5分未満で起きた場合に生成し得る。最近の活動検出が起きない場合、3Pは、3Pアプリケーションが、現在の活動フィードを示す状態で開くようにし、アクティブなアプリケーションにより調節可能でないスマートカメラ特徴(たとえば、ズー
ム、パン、および/またはチルト)の調節を可能にするディープリンクなどの代替ディープリンクを生成し得る。
【００１１】
3Pについての特定のアドレスにアドレス指定された要求に応答して、3Pによってディープリンクが生成される様々な実装形態では、要求は、3Pのスマートデバイスの制御を可能にするグラフィカルインターフェース要素をレンダリングするための要求であると判断されたユーザインターフェース入力に応答して、アクティブなアプリケーションによって生成される。たとえば、アクティブなアプリケーションは最初に、3Pの特定のスマートデバイス、ならびに(3Pおよび追加3Pの)他のスマートデバイスを含む、制御され得る複数の異種類スマートデバイス用のアイコンを提示すればよい。3Pの特定のスマートデバイス用のアイコンの選択に応答して、アクティブなアプリケーションは、特定のスマートデバイスを識別する要求を生成し、要求を特定の3Pアドレスへ送信し得る。別の例として、アクティブなアプリケーションは、3Pのスマートデバイスの制御を可能にするグラフィカルインターフェース要素をレンダリングするための要求である発話を受信し、それに応答して、要求を生成し、特定の3Pアドレスへ送信し得る。たとえば、発話は、「カウチライトをオンにする」であってよく、スマートデバイスの制御を可能にするグラフィカルインターフェース要素をレンダリングするための要求であると判断され得る。たとえば、発話は、「カウチライト」を「オン」にさせ、「カウチライト」の減光レベルおよび/または他のプロパティの制御を可能にするグラフィカルインターフェース要素をレンダリングさせるコマンドを送信するための要求であると判断され得る。発話が、グラフィカルインターフェース要素をレンダリングするための要求であると判断したことに応答して、要求が生成および/または送信され得る。これらおよび他のやり方では、3Pへの要求は、3Pのスマートデバイスの制御を可能にするグラフィカルインターフェース要素をレンダリングするための要求である入力に応答して生成および/または送信されるだけである。したがって、様々な実装形態では、要求を生成する際に使用される計算リソースおよび/または要求を送信する際に使用されるネットワーク帯域幅は、特定の条件が満足されるときに(たとえば、入力が、スマートデバイスの制御を可能にするグラフィカルインターフェース要素をレンダリングするための要求であると判断されたときにのみ)使用されるだけである。その上、これらおよび/または他の実装形態のうちのいくつかでは、3Pアプリケーションが、アクティブなアプリケーションを実行するクライアントデバイスにインストールされていると判断したことにさらに応答して、要求が生成および/または送信される。これらおよび他のやり方では、要求を生成し、かつ/または3Pへ送信することは、3Pアプリケーションがインストールされていないと判断されたときは迂回されてよい。それらの状況のうちのいくつかでは、3Pアプリケーションのインストールをいずれかが可能にする、ウェブページまたは「プレイストア」アプリケーション状態にリンクするデフォルトディープリンクなど、3P用のデフォルトディープリンクが代わりに使用されてよい。
【００１２】
本明細書で開示されるいくつかの実装形態は、追加または代替として、3Pアプリケーションが、ユーザアカウントに関連付けられたクライアントデバイスにインストールされていると判断することを対象とし、3Pアプリケーションは、3Pの3Pスマートデバイスの制御を可能にする。それらの実装形態は、スマートデバイストポロジーが、3Pの3Pスマートデバイスのうちのいずれかについてのいずれかのエントリを含むかどうかをさらに判断する。スマートデバイストポロジーは、ユーザアカウントに関連付けられ、自動化アシスタントによって、自動化アシスタントとの対話により、スマートデバイスを制御する際に使用される。スマートデバイストポロジーは、たとえば、スマートデバイス、自動化アシスタントデバイス、各々の製造元、各々のロケーション(たとえば、「リビングルーム」、「キッチン」)、各々のセマンティック識別子(たとえば、「カウチライト」、「リビングルームアシスタントデバイス」)、ならびに/またはスマートデバイスおよび/もしくは自動化アシスタントデバイスの他の特徴を定義し得る。
【００１３】
3Pアプリケーションがクライアントデバイスにインストールされているが、スマートデバイストポロジーには3Pスマートデバイスについてのどのエントリも欠如していると判断したことに応答して、出力が、ユーザアカウントに関連付けられたクライアントデバイスまたは追加クライアントデバイスにおいてレンダリングされてよく、出力は、スマートデバイストポロジーに3Pを追加するための提案を含む。出力のレンダリングに応答して肯定的ユーザインターフェース入力を受信したことに応答して、3Pの1つまたは複数の特定のスマートデバイスが、スマートデバイストポロジーに効率的に追加され得る。たとえば、ユーザアカウントは、スマートデバイストポロジーに、1つまたは複数の3Pスマートデバイスのうちの少なくともいくつかの、特定のデバイスを自動的に追加する際に、3Pのアプリケーションプログラミングインターフェース(API)とインターフェースするのに使用され得る。また、たとえば、3Pに特化された3Pアカウントにサインインすることを可能にするとともに、3Pアカウントにサインインするのに使用されると、スマートデバイストポロジーに特定のデバイスを自動的に追加する際に、3PのAPI、または追加APIとのインターフェースを引き起こすサインインインターフェースが提示され得る。さらに別の例として、本明細書においてより詳しく記載するように、クライアントデバイスにインストールされたサードパーティアプリケーションとインターフェースすることにより、特定のスマートデバイスがスマートデバイストポロジーに追加されてよい。これらおよび他のやり方では、特定のスマートデバイスは、たとえば、ホーム制御アプリケーションを通して、3Pデバイスが追加され得るスクリーンへナビゲートし、使用可能3Pの長いリストの中から3Pを識別し(たとえば、リストをスクロールし)、次いで、3Pに特化された3Pアカウントにサインインすることを可能にするサインインインターフェースを提示させるために、識別された3Pを、リストの中から選択するよりも効率的なやり方でデバイストポロジーに追加される。
【００１４】
さらに、スマートデバイストポロジーに3Pスマートデバイスを追加することを事前に提案したことに応答して、スマートデバイストポロジーに3Pスマートデバイスが追加されると、それらの3Pスマートデバイスの制御が、自動化アシスタントインターフェースおよび/またはホーム制御アプリケーションを通して可能にされる。そのような制御により、様々な計算効率が提供される。たとえば、クライアントデバイス上で実行するホーム制御アプリケーションが、3Pスマートデバイス、ならびに他の3Pからのスマートデバイスの制御を、すべて単一のアプリケーションから可能にし得る。これは、たとえば、異なるスマートデバイスの制御を可能にするために、複数の別々の3Pアプリケーション(かなりのメモリおよび/またはプロセッサリソースを使用し得る)を起動し、実行するよりも計算効率が良い場合がある。
【００１５】
本明細書で開示されるいくつかの実装形態は、3Pアプリケーションがクライアントデバイスにインストールされていると、および関連付けられたスマートデバイストポロジーには、3Pの3Pスマートデバイスのうちのどれについてのどのエントリも欠如していると判断したことに応答して、スマートデバイストポロジーに3Pのスマートデバイスを自動的に追加する際に、サードパーティアプリケーションと直接インターフェースすることを対象とする。それらの実装形態のうちのいくつかでは、クライアントデバイスの特定のアプリケーション(たとえば、自動化アシスタントアプリケーションまたはホーム制御アプリケーション)が、3Pアプリケーションを認証し得る。3Pアプリケーションが認証された場合、特定のアプリケーションは、リンク化機能をもつサードパーティアプリケーションを実行するというインテントを与え得る。たとえば、インテントは、オペレーティングシステムクライアントデバイスに、インテントを呼び出すことによってサードパーティアプリケーションを実行させるために、クライアントデバイスのオペレーティングシステムに与えられてよい。インテントは、サードパーティアプリケーションのリンク化機能に固有であってよく、この機能は、サードパーティアプリケーションによって実行されると、サードパーティアプリケーションに、1つまたは複数の条件が満足される場合に少なくとも1つのアクセストークン(たとえば、長期および/または短期アクセストークン)を戻させる。1つまたは複数の条件は、たとえば、以下でより詳しく説明するように、インテントを与えるアプリケーションの検証を含み得る。少なくとも1つのアクセストークンは、インテントを与えたことに応答して、サードパーティアプリケーションから受信され得る。さらに、少なくとも1つのアクセストークンは、3Pスマートデバイスに関連した付加情報を取得するのに使用することができ、取得された付加情報の少なくとも一部が、スマートデバイストポロジーに追加されてよい。アクセストークンは、自動化アシスタントによる3Pスマートデバイスの制御を(たとえば、そのデバイスを、自動化アシスタントからの要求の中に含めることによって、および/または更新された短期アクセストークンを取得する際に)可能にすることもできる。スマートデバイストポロジーに3Pのスマートデバイスを追加することにより、単一のアプリケーションからの、それらのスマートデバイスの制御を可能にすることができ、これは、上述したようにリソース効率的であり得る。その上、スマートデバイスを追加する際の、自動化アシスタントアプリケーションまたはホーム制御アプリケーションと3Pアプリケーションとの間の、クライアントデバイスにおけるローカル対話は、スマートデバイスを追加する際に最小限のネットワークリソースを使用し得る。
【００１６】
上記は、本明細書で開示されるいくつかの実装形態の概要として与えられている。これらおよび他の実装形態のさらなる記述が、以下で与えられる。
【００１７】
さらに、いくつかの実装形態は、1つまたは複数のコンピューティングデバイスの、1つまたは複数のプロセッサ(たとえば、中央処理ユニット(CPU))、グラフィックス処理ユニット(GPU、および/またはテンソル処理ユニット(TPU)を含み、1つまたは複数のプロセッサは、関連付けられたメモリに記憶された命令を実行するように動作可能であり、命令は、本明細書に記載する方法のうちのいずれかの実施を引き起こすように構成される。いくつかの実装形態は、本明細書に記載する方法のうちのいずれかを実施するように1つまたは複数のプロセッサによって実行可能なコンピュータ命令を記憶する1つまたは複数の非一時的コンピュータ可読記憶媒体も含む。
【００１８】
本明細書でより詳細に記載する、上記概念と追加概念のすべての組合せは、本明細書で開示する主題の一部であることを企図されることを諒解されたい。たとえば、本開示の最後に著される、特許請求する主題のすべての組合せが、本明細書で開示する主題の一部であることを企図される。
【図面の簡単な説明】
【００１９】
【図１】本明細書で開示する実装形態が実装され得る例示的な環境のブロック図である。
【図２】ホーム制御アプリケーションの例示的インターフェースを示す図である。
【図３】サードパーティの1つまたは複数のスマートデバイスの制御に主に専用であるサードパーティアプリケーションの例示的インターフェースを示す図である。
【図４】図2のホーム制御アプリケーションの例示的インターフェースを示す図であり、例示的インターフェースは、生成されたディープリンクに関連付けられた選択可能グラフィカル要素を含む。
【図５】様々なスマートデバイスを制御するためのグラフィカルインターフェース要素を含み、サードパーティのスマートデバイスをスマートデバイストポロジーに追加するための提案を含む例示的インターフェースを示す図である。
【図６】本明細書で開示する様々な実装形態による例示的方法を示すフローチャートである。
【図７Ａ】本明細書で開示する様々な実装形態による別の例示的方法を示すフローチャートである。
【図７Ｂ】本明細書で開示する様々な実装形態によるさらに別の例示的方法を示すフローチャートである。
【図８】コンピューティングデバイスの例示的アーキテクチャを示す図である。
【発明を実施するための形態】
【００２０】
本明細書に記載するいくつかの実装形態は、選択されると、3Pアプリケーションへのディープリンクの実行を引き起こす選択可能グラフィカル要素をもつ、アクティブなアプリケーションのグラフィカルインターフェースをレンダリングさせることを対象とする。ディープリンクは、ユーザがアクティブなアプリケーションを介して現在対話している3Pスマートデバイスを示す、アクティブなアプリケーションからの要求に応答して生成され得る。ディープリンクは、3Pによって「オンザフライで」生成することができ、ディープリンクは、ユーザが、アクティブなアプリケーションから3Pアプリケーションに直接アクセスすること、およびアクティブなアプリケーションを介して現在対話されている3Pスマートデバイスに特化されている3Pアプリケーションの状態にアクセスすることを可能にする。
【００２１】
いくつかの実装形態では、クライアントデバイス上で実行するアクティブなアプリケーションに向けられたユーザインターフェース入力が受信される。入力は、1つまたは複数の3Pスマートデバイスを制御するための、ユーザがアクセスしている特定の機能性に関連し得る。たとえば、入力は、3Pスマートデバイスを制御することに関連した1つまたは複数のグラフィカルインターフェース要素をレンダリングするための要求であってよい。また、たとえば、入力は、ユーザが、1つもしくは複数の3Pスマートライトの明るさを制御できるように、および/または1つもしくは複数の3Pスマートライトをオン/オフできるようにするグラフィカルインターフェースをレンダリングするための要求であってよい。要求に応答してレンダリングされる1つまたは複数のグラフィカルインターフェース要素は、3Pスマートライトの明るさを調節するための1つもしくは複数のスライダおよび/または3Pスマートライトをオンもしくはオフにするための1つもしくは複数のトグルボタンを含み得る。
【００２２】
3Pスマートデバイスに関する入力に応答して、要求が生成され、アクティブなアプリケーションによって、3Pスマートデバイスに対応する3Pシステムへ送信される。3Pシステムは、3Pによって製造されたスマートライトを制御するように特に設計されている3Pアプリケーションに関連付けられ、3Pアプリケーションは、アクティブなアプリケーション(たとえば、ホーム制御アプリケーション)が実行中である同じクライアントデバイス上にインストールされてよい。
【００２３】
いくつかの事例では、3Pアプリケーションは、アクティブなアプリケーションを介して使用可能でない、3Pスマートデバイス用の追加機能性を含む。スマートライトの例を続けると、3Pアプリケーションは、3Pスマートライトを、特定の時刻に自動的にオンになるように、スマートライトの色温度を変えるように、および/またはアクティブなアプリケーションを介して使用可能である機能性とは別に、スマートライトの他の機能性を制御するようにプログラムするための機能性を含み得る。したがって、追加機能性に関連した入力を与えるために、ユーザは、3Pアプリケーションにアクセスすることを求められる場合がある。
【００２４】
3Pシステムへの要求は、たとえば、アクティブなアプリケーションを介してユーザが制御している特定のスマートデバイスの識別子、ユーザがアクセスしている特定のインターフェース、特定のインターフェースを介して使用可能な機能性、および/またはアクティブなアプリケーションとのユーザの現在の対話に関する付加情報を含み得る。
【００２５】
3Pシステムは、サードパーティアプリケーションを介して使用可能である、対象となっているスマートデバイスの関連インターフェースおよび/または機能性を判断することができる。たとえば、ユーザは、「リビングルームライト」と名づけられたスマートライトの制御をできるようにするインターフェースにアクセスしている場合がある。要求はスマートライトについての識別子を含むことができ、そうすることによって、3Pはそのスマートデバイス用の関連インターフェースを識別することができる。
【００２６】
要求に応答して、3Pシステムは、3Pアプリケーションへのディープリンクであるディープリンクを送信すればよい。アクティブなアプリケーションは、ユーザが、対象のスマートデバイスを制御できるようにする対話型グラフィカルインターフェース要素をレンダリングすることができる。さらに、アクティブなアプリケーションは、対話型グラフィカルインターフェース要素と同時に、提供されたディープリンク(たとえば、選択可能なアイコンおよび/またはボタン)に対応する選択可能グラフィカル要素をレンダリングすることができる。したがって、アクティブなアプリケーションを介して、ユーザに対話型グラフィカルインターフェース要素が提示されると、選択可能グラフィカル要素も提示されてよく、選択されると、スマートデバイスに特化された状態での3Pアプリケーションのオープンを引き起こし得る。
【００２７】
本明細書に記載するいくつかの実装形態は、追加または代替として、1つまたは複数の3Pスマートデバイスを、自動化アシスタントおよび/またはホーム制御アプリケーションを介した制御のために構成することを対象とする。それらの実装形態のうちのいくつかは、3Pアプリケーションが、ユーザアカウントに関連付けられたクライアントデバイスにインストールされていると判断し、3Pアプリケーションは、3Pの3Pスマートデバイスの制御を可能にする。それらの実装形態は、スマートデバイストポロジーが、3Pの3Pスマートデバイスのうちのいずれかについてのいずれかのエントリを含むかどうかをさらに判断する。スマートデバイストポロジーは、ユーザアカウントに関連付けられ、自動化アシスタントによって、自動化アシスタントとの対話により、スマートデバイスを制御する際に使用される。3Pアプリケーションがクライアントデバイスにインストールされているが、スマートデバイストポロジーには3Pスマートデバイスについてのどのエントリも欠如していると判断したことに応答して、出力が、ユーザアカウントに関連付けられたクライアントデバイスまたは追加クライアントデバイスにおいてレンダリングされてよく、出力は、スマートデバイストポロジーに3Pを追加するための提案を含む。出力のレンダリングに応答して肯定的ユーザインターフェース入力を受信したことに応答して、3Pの1つまたは複数の特定のスマートデバイスが、スマートデバイストポロジーに効率的に追加され得る。
【００２８】
次に図1を参照すると、本明細書で開示する技法が実装され得る例示的環境が示されている。例示的環境は、クライアントデバイス105、スマートデバイス145Aおよび145B、リモートホーム制御サーバ120、ならびにサードパーティ(3P)リモートサーバ1101-Nを含む。本明細書に記載するように、3Pリモートサーバ1101-Nの各々は、複数の3Pのうちの、異なる対応する3Pに関連付けられ得る。たとえば、3P1リモートサーバ1101は、1つまたは複数の対応するスマートライトを製造する第1の3Pに関連付けられてよく、3P2リモートサーバ1102は、1つまたは複数の対応するスマートライトを製造する第2の3Pに関連付けられてよく、3PNリモートサーバ110Nは、1つまたは複数の対応するスマートカメラ、スマートサーモスタット、およびスマートアラームシステムを製造する第3の3Pに関連付けられてよい。リモートホーム制御サーバ120および3Pリモートサーバ1101-Nは各々、単一の構成要素として図1に示されているが、いずれの、1つまたは複数のモジュールおよび/または側面も、全体または一部が、複数のデバイスによって実装されてよいことが理解されよう。たとえば、いくつかの実装形態では、リモートサーバによって実装されるものとして記述される1つまたは複数の側面は、1つまたは複数のクライアントデバイスからの要求、ならびに追加デバイスからの要求を扱う高性能リモートサーバデバイスのクラスタによって実装されてよい。また、クライアントデバイス105の構成要素として記述される1つまたは複数の構成要素が、1つまたは複数のネットワークを介してクライアントデバイス105とインターフェースする1つまたは複数のリモート構成要素によって実装されてよい。
【００２９】
クライアントデバイス105は、モバイルフォンコンピューティングデバイス、タブレットコンピューティングデバイス、主にアシスタント機能性に専用のスタンドアロンデバイス、および/またはコンピューティングデバイス(たとえば、コンピューティングデバイスを有する、ユーザの時計、コンピューティングデバイスを有する、ユーザの眼鏡、仮想もしくは拡張現実コンピューティングデバイス)を含む、ユーザの装着可能装置であってよい。追加および/または代替クライアントデバイスが提供されてよい。さらに、クライアントデバイス105の1つまたは複数の構成要素が、別々のデバイス上で実装されてよい。たとえば、グラフィカルディスプレイ107は、クライアントデバイス105と通信する1つまたは複数の代替コンピューティングデバイス上で実装されてよい。クライアントデバイス105、リモートホーム制御サーバ120、サードパーティ(3P)リモートサーバ1101-N、ならびに/またはスマートデバイス145Aおよび145Bは、1つまたは複数の通信ネットワークを介して通信することができる。通信ネットワークは、たとえば、ローカルエリアネットワーク(LAN)および/またはワイドエリアネットワーク(WAN)(たとえば、インターネット)を含み得る。スマートデバイス145Aは、3P1リモートサーバ1101に関連付けられた第1の3Pによって製造され、3P1リモートサーバ1101から送信されるコマンドにより制御することができ(任意選択で、対応するコマンドが、ホーム制御アプリケーション115、サードパーティアプリケーション125のうちの対応する1つ、および/もしくは自動化アシスタントアプリケーションを介して通信されたことに応答して)、かつ/またはクライアントデバイス105によって直接制御することができる。スマートデバイス145Bは、3P2リモートサーバ1102に関連付けられた第2の3Pによって製造され、3P2リモートサーバ1102から送信されるコマンドにより制御することができ(任意選択で、対応するコマンドが、ホーム制御アプリケーション115、サードパーティアプリケーション125のうちの対応する1つ、および/もしくは自動化アシスタントアプリケーションを介して通信されたことに応答して)、かつ/またはクライアントデバイス105によって直接制御することができる。
【００３０】
クライアントデバイス105は、クライアントデバイス105のユーザへのコンテンツをレンダリングすることができるとともに、任意選択で、ディスプレイ107を介してタッチ入力が受信されることを可能にするようにタッチ感応式であるディスプレイ107を含む。たとえば、ユーザが、ユーザの1つまたは複数のスマートデバイスを制御するためにホーム制御アプリケーション115と対話するのに、ディスプレイ107を使用することができる。ユーザは、ディスプレイ107を介して1つまたは複数のインターフェースを閲覧することができ、インターフェースは、レンダリングエンジン117または他のレンダリングエンジンによってレンダリングされる。インターフェースは、ユーザが、ディスプレイ107を介して入力を与え、かつ/または出力を閲覧できるようにする。ユーザは、キーボード、マウスおよび/もしくはディスプレイ107のエリアを選択することができる他の入力デバイスなど、1つもしくは複数の入力デバイス、音声制御、タッチスクリーン制御、ならびに/またはユーザが入力を提出し、レンダリングされるべきコンテンツを選択できるようにする他の入力方法を介して、ディスプレイ107と対話することができる。ディスプレイ107を介して受信された入力は、ホーム制御アプリケーション115および/またはサードパーティアプリケーション125など、クライアントデバイス105上で実行する1つまたは複数のアプリケーションに与えられてよい。
【００３１】
ホーム制御アプリケーション115は、クライアントデバイス105において実行されるとともにアクティブになると、ユーザによって、スマートデバイス145Aおよび145Bなど、ユーザの1つまたは複数のスマートデバイスを制御するのに使用され得る。ホーム制御アプリケーション115は任意選択で、本明細書に記載する機能の一部または全部を実施する際に、リモートホーム制御サーバ120とインターフェースすることができる。スマートデバイスは、セントラルサーバ、クラウドコンピューティングシステム、および/または1つもしくは様々な有用スマートホームサービスのうちのいずれかを提供するための、複数の追加スマートデバイスと通信するように構成されたインテリジェント、多重検知、ネットワーク接続デバイスであってよい。たとえば、スマートデバイスは、空調システム、照明デバイス、ホームシアターおよび娯楽システム、セキュリティシステム、自動ドア施錠システム、サーモスタットデバイス、ホームオートメーションシステム、サウンドスピーカー、カメラデバイス、ルームランナー、重量計、スマートベッド、洗浄システム、ガレージドアオープナー、器具、ベビーモニター、火災警報器、ならびに/または他の適切なデバイスもしくはシステムであってもよく、そうでなければそれらに関連付けられてもよい。
【００３２】
クライアントデバイス105上にインストールされたサードパーティアプリケーション125のうちの1つは任意選択で、スマートデバイス145Aを製造した第1の3Pによって提供されてよく、スマートデバイス145Aを制御するのに使用され得る。そのようなサードパーティアプリケーションは任意選択で、第1の3Pのスマートデバイスの制御を可能にし得るが、他の3P(たとえば、任意の他の3P)のスマートデバイスの制御は可能にすることができない。さらに、クライアントデバイス105上にインストールされたサードパーティアプリケーション125のうちの別の1つは任意選択で、スマートデバイス145Bを製造した第2の3Pによって提供されてよく、スマートデバイス145Bを制御するのに使用され得る。そのようなサードパーティアプリケーションは任意選択で、第2の3Pのスマートデバイスの制御を可能にし得るが、他の3P(たとえば、任意の他の3P)のスマートデバイスの制御は可能にすることができない。たとえば、サードパーティアプリケーション125のうちの1つが、ユーザがスマートデバイス145Aを制御できるようにする1つまたは複数のグラフィカル要素を提供するグラフィカルユーザインターフェースを、ディスプレイ107によりレンダリングし得る。
【００３３】
ホーム制御アプリケーション115は、クライアントデバイス105上にもインストールされ、スマートデバイス145Aおよび145Bを含む、複数の3Pからのスマートデバイス、ならびに可能性としては、ホーム制御アプリケーション115用に構成された(たとえば、ホーム制御アプリケーション115によって使用されるスマートデバイストポロジー中で割り当てられた)他の(図に示さない)スマートデバイスの制御を可能にする。ホーム制御アプリケーション115はレンダリングエンジン117を含み、これは、ユーザがスマートデバイス145Aおよび/またはスマートデバイス145Bを制御できるようにする1つまたは複数のグラフィカル要素を含むインターフェースをレンダリングすることができる。ディスプレイ107および/または他の入力デバイスを介して与えられたユーザの入力はホーム制御アプリケーション115に与えられてよく、アプリケーション115は、入力を処理し、1つもしくは複数の追加グラフィカルインターフェースをレンダリングし、かつ/またはアクティブなインターフェースを更新するための命令をレンダリングエンジン117に与えることができる。
【００３４】
ホーム制御アプリケーション115は、サードパーティアプリケーション125のうちの1つまたは複数と同じ制御の一部または全部を含み得る。たとえば、スマートデバイス145Aは、インストールされたサードパーティアプリケーション125のうちの1つも提供する第1の3Pによって製造されたスマート照明ユニットであってよい。第1の3Pのサードパーティアプリケーションは、スマート照明ユニット145Aの制御をできるようにする。さらに、ホーム制御アプリケーション115は、たとえば、ホーム制御アプリケーション115によって(レンダリングエンジン117を介して)レンダリングされる1つまたは複数のグラフィカルインターフェース要素を通して、および対応する制御コマンドを、照明ユニット145Aに直接、または3Pのアプリケーションプログラムインターフェース(「API」)に(たとえば、3P1リモートサーバ1101を介して)通信することにより、スマート照明ユニット145Aの制御を可能にすることができ、APIは次いで、対応する制御コマンドを生成し、照明ユニット145Aに与える。追加または代替として、スマートデバイス145Bは、インストールされたサードパーティアプリケーション125のうちの別の1つも提供する第2の3Pによって製造された別のデバイスであってよい。スマートデバイス145Bは、ホーム制御アプリケーション115を介しても制御可能である。
【００３５】
いくつかの事例では、ホーム制御アプリケーション115は、それぞれのサードパーティアプリケーション125を介して制御され得る機能性と比較して、スマートデバイス145Aおよび/またはスマートデバイス145Bの機能性のサブセットのみを、ユーザが制御できるようにする。たとえば、図2を参照すると、ホーム制御アプリケーション215の例示的インターフェース200が示されている。インターフェース200は、対話型グラフィカル要素であるとともに、ユーザが、トグルボタン205に向けられた入力により、照明ユニットをオンまたはオフできるようにする「オン/オフ」トグルボタン205を含む。さらに、インターフェース200は、別の対話型グラフィカル要素であるとともに、ユーザが、スライダ要素210に向けられた入力により、同じ照明ユニットの明るさを調節できるようにするスライダ要素210を含む。対照的に、図3を参照すると、サードパーティアプリケーション125のうちの1つの、例示的インターフェース300が示されている。インターフェース300は、ユーザが同じ照明ユニットをオンおよびオフにできるようにするトグルボタン305を含む。さらに、インターフェース300は、照明ユニットの明るさを調節するためのスライダ310を含む。ただし、インターフェース300は、照明ユニットの色温度を調節するためのスライダ315、ならびに選択されると、ユーザが、照明ユニットの複数の構成されたシーンのうちの1つを選択することを可能にするシーンボタン320をさらに含む。この機能性は、インターフェース200と一緒には含まれない。したがって、サードパーティアプリケーション125は、照明ユニットを制御するための、ホーム制御アプリケーション115が含むよりも多くのオプションを含む。
【００３６】
いくつかの実装形態では、ユーザは、3Pアプリケーション125のうちの1つの、インターフェースに含まれるが、ホーム制御アプリケーション115など、アクティブなアプリケーションには含まれない、スマートデバイス向けの機能性にアクセスすることに関心をもつ場合がある。たとえば、ユーザは、照明ユニットの色を調節することに関心をもつが、ホーム制御アプリケーション115のインターフェースを開くと、色制御のためのグラフィカル要素がないことに気づく場合がある。さらに、いくつかの事例では、ユーザは、サードパーティアプリケーション125のうちの対応する1つよりも少ない機能性を含む、ホーム制御アプリケーション115の制御インターフェースにアクセスする場合があるが、スマートデバイス向けに追加機能性が使用可能であることに気づかない場合がある。これらの事例では、照明ユニットの色を調節するために、ユーザは、アクティブなホーム制御アプリケーション115から離れるようにナビゲートし、サードパーティアプリケーション125のうちの対応する1つについてのアイコンを位置特定し、そのサードパーティアプリケーション125を起動させるためにアイコンをタップし、次いで、照明ユニットの色の調節を可能にする、その3Pアプリケーション125の状態に達するまで、その3Pアプリケーション125内をナビゲートすることを求められることになる。
【００３７】
いくつかの実装形態では、3Pアプリケーションを位置特定し、3Pアプリケーションを起動し、3Pアプリケーションの所望の状態まで3Pアプリケーション内をナビゲートするために複数の入力を実施することをユーザに求めるのではなく、選択可能なインターフェース要素が代わりに、ホーム制御アプリケーション115内に提示されてよく、インターフェース要素は、選択されると、対応する3Pアプリケーションを所望の状態で起動させるディープリンクを実行する。様々な実装形態では、ディープリンクは、3Pの対応するサーバ(たとえば、3Pリモートサーバ1101-Nのうちの1つ)において動的に生成される。このようにして、ディープリンクは、スマートデバイスがホーム制御アプリケーション115を介して閲覧され、かつ/またはそうでなければ対話されることを鑑みて生成されてよい。さらに、ディープリンクは、3Pアプリケーションおよび/または3Pバックエンドインターフェースによって、3Pアプリケーションを所望の状態で開かせるのに使用されるスキーマへの更新など、対応する3Pアプリケーションおよび/または対応する3Pバックエンドインターフェースに対して行われたいかなる更新を鑑みて生成されてもよい。
【００３８】
たとえば、再度図1を参照すると、スマートデバイス145Aは、3Pアプリケーション125のうちの1つによって制御することができ、ユーザは、スマートデバイス145Aのみの制御に向けられたホーム制御アプリケーション115のインターフェースにアクセスしている場合がある。ホーム制御アプリケーション115のインターフェースにおいて、スマートデバイス145Aに固有でない(たとえば、そのサードパーティアプリケーション125の「ホーム」インターフェースに向けられた)、3Pアプリケーション125のうちの1つの、インターフェースへのリンクのみを提供するのではなく、本明細書で開示される実装形態は、追加または代替として、スマートデバイス145Aに固有のディープリンクを提供することができる。たとえば、ディープリンクは、実行されると、3Pアプリケーションのうちの対応する1つを、ホーム制御アプリケーション115を介しては与えられない制御を含む、スマートデバイス145Aに固有の制御を含む状態で開かせる。
【００３９】
いくつかの実装形態では、ホーム制御アプリケーション115の要求エンジン119が、特定のスマートデバイスへの参照を含み得る要求を生成し得る。要求エンジン119は、特定のスマートデバイスの制御を可能にする1つまたは複数の対話型グラフィカルインターフェース要素のレンダリングについての要求を含む、受信された入力(ホーム制御アプリケーション115を介して受信された)に応答して要求を生成し得る。要求は、特定のスマートデバイスへの参照を含んでよく、その3Pリモートサーバが、特定のスマートデバイスの製造元でもある3Pに関連付けられていることに基づいて、3Pリモートサーバ1101-Nのうちの対応する1つにアドレス指定され得る。要求エンジン119は、3Pリモートサーバと直接、またはリモートホーム制御サーバ120を介して通信することができる。要求エンジン119、またはリモートホーム制御サーバ120は、ホーム制御アプリケーション115と、3Pリモートサーバ1101-Nのうちの1つまたは複数との間の通信に使用されるAPIなどのAPIを使用して、3Pリモートサーバへ要求を送信することができる。
【００４０】
いくつかの実装形態では、ホーム制御アプリケーション115は、クライアントデバイス105が、ホーム制御アプリケーションを介して対話されている特定のスマートデバイス用の対応する3Pアプリケーションを含まないと判断する場合がある。たとえば、スマートデバイス145Aに関連付けられた3Pアプリケーションが、クライアントデバイス105上にインストールされていない場合がある。それらの事例のうちのいくつかでは、ホーム制御アプリケーション115は、(3Pアプリケーションがインストールされていないので)クライアントデバイス105において実行可能でない3Pアプリケーション用のどの生成されたディープリンクも鑑みて、ネットワークトラフィックを最小限にするように、要求を生成するのを迂回し得る。さらに、それらの事例のうちのいくつかでは、3Pアプリケーションがダウンロードされることを可能にするアプリケーションストアの状態などまで、3Pの特定のウェブページへのリンクなど、3P用のデフォルトリンクが代わりに使用されてよい。
【００４１】
要求に含まれる情報に基づいて、3Pリモートサーバ1101-Nのうちの対応する1つが、要求に関連付けられた同じスマートデバイスに関連付けられた、その3Pアプリケーションの特定の状態に向けられたディープリンクを生成する。たとえば、要求は、ホーム制御アプリケーション115を介して対話型グラフィカル要素がレンダリングされているスマートデバイスについての識別子を含み得る。要求は、3Pリモートサーバ1101-Nのうちの1つへ送信されてよく、要求は、スマートデバイスについての識別子に基づいて、ホーム制御アプリケーション115に提供するためのディープリンクを生成することができ、実行されると、クライアントデバイス105に、サードパーティアプリケーションのうちの対応する1つを、同じ識別されたスマートデバイスに特化された状態で開かせる。
【００４２】
いくつかの実装形態では、要求の中に含まれる、スマートデバイスの識別子は、対応する3Pリモートサーバおよび/または対応する3Pアプリケーションによって使用される固有識別子とは異なり得る。識別子は、ホーム制御アプリケーション115と3Pリモートサーバとの間の通信において使用される鍵であってよく、3Pリモートサーバによって、対応する固有識別子にマップされ得る。たとえば、ホーム制御アプリケーション115は、「12345」という、スマートデバイスについての識別子を有し得る。ただし、サードパーティは、「67890」という、同じデバイスについての固有識別子を有する場合があり、「12345」識別子と、「67890」という固有識別子との間のローカルマッピングを維持することができる。
【００４３】
一例として、ユーザは、ホーム制御アプリケーション115を介して、図2に示すインターフェースをホーム制御アプリケーション115によってレンダリングさせるための入力を与えることができる。インターフェースは、特定のスマートデバイスの制御を可能にする。入力に応答して、要求エンジン119は、特定のスマートデバイスを識別する要求を生成し、要求を、3Pリモートサーバ1101-Nのうちの対応する1つの、アドレスへ送信し得る。要求を受信したことに応答して、その3Pリモートサーバは、図3に示すインターフェースへのディープリンクを生成し、ディープリンクをレンダリングエンジン117に提供すればよい。レンダリングエンジン117は次いで、図2に示す、アクセスされるインターフェースに含まれ得るグラフィカル要素を生成するのに、ディープリンクを使用し得る。たとえば、図4を参照すると、図2に示すインターフェースに含まれる要素205および210と同じである要素405および410を含むが、ボタン415も含むインターフェース400が挙げられている。ボタン415はディープリンクに関連付けられてよく、ボタン415が選択されると、ユーザは次いで、図3のインターフェースに誘導され得る。たとえば、ボタン415の選択により、3Pアプリケーション125のうちの対応する1つが開かれ、3Pアプリケーションのうちの対応する1つを、図3のインターフェースとともに開かせることができる。したがって、ユーザは、図4のインターフェースを介して(すなわち、インターフェース300に含まれる色制御315および/またはシーンボタン320を介して)使用可能でないユーザ追加機能性を認めるインターフェース300に誘導され得る。
【００４４】
いくつかの実装形態では、提供されたディープリンクは、図4に提示されるべきである特定の選択可能グラフィカル要素を示す付加情報を組み込むか、またはそれと一緒に送信され得る。たとえば、ディープリンクが直接的に、スマートライトの色制御のみを可能にする状態へのものである場合、付加情報は、色制御を示す色相環または他の印を有する特定の選択可能グラフィカル要素を示し得る。また、たとえば、ディープリンクが直接的に、スマートライトのスケジュールの構成を可能にする状態へのものである場合、付加情報は、スケジュール制御を示すカレンダまたは他の印を含む特定の選択可能グラフィカル要素を示し得る。これらおよび他のやり方では、3Pには、どのようなディープリンクが提供されるか(および、その結果、3Pアプリケーションが開かれる状態)に対する制御、ならびにどのようなグラフィカル要素が、ディープリンクの機能性を示すのに使用されるかに対する制御が与えられ得る。
【００４５】
別の例として、ユーザは、カメラスマートデバイスを対象としたホーム制御アプリケーション115のインターフェースにアクセスし得る。ホーム制御アプリケーション115を通してのみ、ユーザは、カメラスマートデバイスからのライブビデオフィードを閲覧することができる。ただし、カメラスマートデバイスによってキャプチャされた、1つまたは複数の過去のイベントからのビデオ映像をユーザが閲覧できるようにするための機能性、ユーザがカメラをズーム/パン/チルトすることを可能にするための機能性などのような追加機能性が、カメラスマートデバイス用の3Pアプリケーションを介して提供され得る。そのような例では、3Pリモートサーバ1101-Nのうちの対応する1つが、ディープリンクを生成することができ、ディープリンクは、実行されると、3Pアプリケーション125のうちの対応する1つを、過去のイベントからの映像を見せる状態で、および/またはズーム/パン/チルトの調節を可能にする状態で開く。3Pリモートサーバは任意選択で、1つまたは複数の基準が満足されると判断したことに応答して、過去のイベントからの映像を見せる状態で3Pアプリケーションを開かせるディープリンクを生成すると判断してよい。たとえば、そのようなディープリンクは、過去のイベントが起き、かつ/または最後のX分以内に起きたことを示す情報など、3Pに固有の情報を使用して、3Pリモートサーバによって生成されてよい。
【００４６】
いくつかの実装形態では、ホーム制御アプリケーション115または自動化アシスタントアプリケーションは、ホーム制御アプリケーション115を介して、および/または自動化アシスタントアプリケーションを介して制御されるべき、どの対応するデバイスもユーザがまだ構成していない1つまたは複数のサードパーティを識別することができる。自動化アシスタントアプリケーションは任意選択で、ホーム制御アプリケーション115に関連付けられるが、それとは別個であってよい。たとえば、自動化アシスタントアプリケーションおよびホーム制御アプリケーション115は両方とも、同じ1Pによって制御され得る。たとえば、サードパーティアプリケーションが、クライアントデバイス105上にインストールされ得るが、ユーザは、3Pアプリケーション125に関連付けられた、ユーザのスマートデバイスとの通信への、ホーム制御アプリケーション115および/または自動化アシスタントアプリケーションを統合するための1つまたは複数のステップを通っていない。ユーザは、スマートデバイスをセットアップするためのプロトコルを意識していない場合があり、かつ/またはスマートデバイスがホーム制御アプリケーションによってまだ制御可能でないことを了解していない場合があるので、ユーザは、3Pからのスマートデバイスが、構成される準備ができているという、1つまたは複数の通知によって助けられ得る。
【００４７】
いくつかの実装形態では、ホーム制御アプリケーション115は、特定の3Pからのスマートデバイスがデバイストポロジーに含まれないことを識別するのに、デバイストポロジー表現を使用し得る。デバイストポロジー表現は、様々な適切な技法を使って組み立てることができ、1つまたは複数の構造内での1つまたは複数のスマートデバイスのトポロジーおよび編成を表すことが可能な、どの適切なフォーマットおよび/または構造であってもよい。デバイストポロジー表現は、ユーザに関連付けられた1つまたは複数の構造(たとえば、ユーザのユーザアカウント)を定義および/または編成し得る。たとえば、ユーザに関連付けられた構造は、ユーザに関連付けられた、家庭、会社、車両、職場、および/またはどの他の適切な構造であってもよい。ユーザは、各構造を1つまたは複数の部屋(たとえば寝室、リビングルーム、キッチン)の中に編成すればよく、1つまたは複数の部屋に1つまたは複数のスマートデバイスを割り当てることができる。たとえば、ユーザは、特定の構造の第1の部屋に1つまたは複数のスマートライトを、および構造の第2の部屋に1つまたは複数のドア施錠システムを割り当ててよい。ユーザは次いで、第2の構造内の1つまたは複数の部屋に、1つまたは複数の異なるスマートデバイスを割り当ててよい。
【００４８】
ユーザは、デバイストポロジー表現内のスマートデバイスに1つまたは複数の識別子を割り当ててよい。識別子は、ユーザによって選ばれ、デバイストポロジー表現内のそれぞれのスマートデバイスに関連付けられ得る。識別子は、ユーザによってスマートデバイス用に選択されたニックネームおよび/またはエイリアス(たとえばカウチランプ、玄関ドアロック、寝室スピーカーなど)を含み得る。このようにして、識別子は、ユーザが、スマートデバイスを制御するための音声発話を与えるときに使う見込みがあるそれぞれのスマートデバイスの名前またはエイリアスであってよい。
【００４９】
デバイストポロジー表現は、それぞれのデバイスに関連付けられた1つまたは複数のデバイス属性をさらに指定し得る。デバイス属性は、スマートデバイスが実施するように構成される1つまたは複数のアクションに関連付けられ得る。たとえば、照明デバイスに関連付けられたデバイス属性は、照明デバイスに関連付けられた、ターンオン能力、ターンオフ能力、減光能力、および/または他の適切な属性を含み得る。別の例として、自動ドア施錠デバイスが、施錠能力、解錠能力および/または他の適切な能力を含み得る。
【００５０】
デバイストポロジー表現中のどのスマートデバイスも欠如している任意の3P用のスマートデバイスを構成するための提案をユーザに与えるのではなく、本明細書で開示される実装形態は、その3Pの3Pアプリケーションが、ユーザのユーザアカウントに関連付けられたクライアントデバイスにインストールされていると判断したことにも基づいて、3Pのスマートデバイスを構成するための提案を与え、ここで3Pアプリケーションは、3Pの1つまたは複数の3Pスマートデバイスの制御を可能にする。これらおよび他のやり方では、3Pのスマートデバイスを構成するための提案は、ユーザが、3Pのスマートデバイスの制御を可能にする、3Pのアプリケーションをインストールしたと判断したことに応答して与えられるだけでよい。これは、与えられた提案が、関連付けられたスマートデバイスをユーザが有する見込みがある3P向けであることを保証する。
【００５１】
いくつかの実装形態では、スマートデバイスを構成するための提案は、ホーム制御アプリケーション115を通して与えられ得る。たとえば、図5を参照すると、ホーム制御アプリケーションのインターフェースが設けられる。インターフェース500は、ユーザが、「ライト1」、「ライト2」、および「ライト3」のステータスを変えられるようにするグラフィカル要素505、510、および515を含む。さらに、インターフェース500は、デバイストポロジー表現にデバイスを追加するためのプロンプトとともに、特定の3P(「3P ABC」)からのスマートデバイスが構成されていないことを示す提案520を含む。ユーザからの肯定的入力がある(たとえば、「YES」と話すか、または「YES」というインターフェース要素を選択する)と、デバイス構成エンジン160は、3Pリモートサーバ1101-Nのうちの対応する1つと対話して、ユーザのどのデバイスもデバイストポロジー表現に追加することができる。
【００５２】
いくつかの実装形態では、ユーザから肯定的入力を受信したことに応答して、デバイス構成エンジン160は、ホーム制御アプリケーション115および/または自動化アシスタントアプリケーションに関連付けられたユーザアカウントを使用して、3Pリモートサーバ1101-Nのうちの対応する1つとインターフェースしようと試みる。たとえば、そのユーザアカウントは、ユーザによって、対応する3P用に使用されてもよく、デバイス構成エンジン160が、そのユーザアカウントを、ユーザに追加サインイン情報を促すことを必要とせずに、対応する3Pでユーザを検証するのに使用することを可能にする。デバイス構成エンジン160は、1つまたは複数の3Pスマートデバイスのうちの少なくともいくつかからなるスマートデバイストポロジーに、特定のデバイスと、ホーム制御アプリケーションによって制御可能であるようにデバイスを構成するために未構成スマートデバイスに関連付けられたサードパーティアプリケーションとを自動的に追加する際に、3Pのアプリケーションプログラミングインターフェース(API)とインターフェースすることができる。
【００５３】
いくつかの実装形態では、ユーザから肯定的入力を受信したことに応答して、デバイス構成エンジン160は、3Pに特化される3Pアカウントにサインインすることを可能にし、3Pアカウントにサインインするのに使用されると、スマートデバイストポロジーに特定のデバイスを自動的に追加する際に3PのAPI、または追加APIとのインターフェースを引き起こす、サインインインターフェースを提示する。それらの実装形態のうちのいくつかでは、デバイス構成エンジンは最初に、ホーム制御アプリケーション115および/または自動化アシスタントアプリケーションに関連付けられたユーザアカウントを使って、サインインしようと試み、次いで、そのような試みが失敗した場合のみ、サインインインターフェースを提示する。
【００５４】
いくつかの実装形態では、ユーザから肯定的入力を受信したことに応答して、デバイス構成エンジン160は、スマートデバイストポロジーに3Pのスマートデバイスを自動的に追加する際に、サードパーティアプリケーション125のうちの1つと、(たとえば、クライアントデバイス105のオペレーティングシステムを介して)インターフェースする。それらの実装形態のうちのいくつかでは、特定のアプリケーション(たとえば、ホーム制御アプリケーション115)が、デバイス構成エンジン160のすべてまたは側面を組み込むことができ、サードパーティアプリケーションを認証することができる。サードパーティアプリケーションが認証された場合、デバイス構成エンジン160は、リンク化機能をもつサードパーティアプリケーションを実行するというインテントを与え得る。たとえば、インテントは、オペレーティングシステムクライアントデバイスに、インテントを呼び出すことによってサードパーティアプリケーションを実行させるために、クライアントデバイス105のオペレーティングシステムに与えられてよい。インテントは、サードパーティアプリケーションのリンク化機能に固有であってよく、この機能は、サードパーティアプリケーションによって実行されると、サードパーティアプリケーションに、1つまたは複数の条件が満足される場合に少なくとも1つのアクセストークン(たとえば、長期および/または短期アクセストークン)を戻させる。1つまたは複数の条件は、たとえば、以下でより詳しく説明するように、インテントを与えるアプリケーションの検証を含み得る。少なくとも1つのアクセストークンは、インテントを与えたことに応答して、サードパーティアプリケーションから受信され得る。さらに、デバイス構成エンジン160は、少なくとも1つのアクセストークンを、3Pスマートデバイスに関連した付加情報を取得するのに使用することができ、取得された付加情報の少なくとも一部が、スマートデバイストポロジーに追加されてよい。アクセストークンは、3Pスマートデバイスの制御を(たとえば、そのデバイスを、自動化アシスタントからの要求の中に含めることによって、および/または更新された短期アクセストークンを取得する際に)可能にすることもできる。
【００５５】
いくつかの実装形態では、スマートデバイスを構成するための提案は、図5に示すように、ユーザがホーム制御アプリケーションにアクセスしているときにのみユーザに与えられ得る。ただし、いくつかの実装形態では、提案は、追加または代替として、ホーム制御アプリケーションおよび/または任意の他のアクティブなアプリケーションにユーザがアクセスしているかどうかにかかわらず与えられてよい。たとえば、提案は、いずれかのアプリケーションがアクティブであるかどうかにかかわらず、自動化アシスタントを介した1つもしくは複数の通知メッセージ、および/またはクライアントデバイス上で実行する任意の他のインターフェース要素により、クライアントデバイスのホームスクリーン上に現れる場合がある。
【００５６】
図6は、例示的方法のフローチャートを示す。図6のステップは、クライアントデバイスの1つまたは複数のプロセッサなど、1つまたは複数のプロセッサによって実施され得る。他の実装形態は、図6に示すもの以外の追加ステップを含んでよく、図6のステップを異なる順序で、および/もしくは並行して実施することができ、かつ/または図6のステップのうちの1つもしくは複数を省いてよい。
【００５７】
ステップ605において、クライアントデバイスにおいて実行するアクティブなアプリケーションに向けられたユーザ入力が受信される。ユーザ入力は、タッチスクリーンディスプレイ、マイクロフォン、または他の入力デバイスなど、1つまたは複数のユーザ入力デバイスを介して与えられる。いくつかの実装形態では、アクティブなアプリケーションは、図1のホーム制御アプリケーション115などのホーム制御アプリケーションであってよい。
【００５８】
ステップ610において、1つまたは複数の構成要素は、ユーザ入力が、1つまたは複数のスマートデバイスの制御を引き起こす、1つまたは複数のインターフェースをレンダリングすることに向けられていると判断する。スマートデバイスは、図1に示したように、スマートデバイス145Aおよび/または145Bと1つまたは複数の特性を共有し得る。たとえば、スマートデバイスは、クライアントデバイスおよび/または1つもしくは複数の他のデバイス上で実行する1つまたは複数のソフトウェア構成要素に関連付けられたサードパーティによって製造された、サーモスタット、スマート照明ユニット、カメラ、および/または他のデバイスを含み得る。アクティブなアプリケーションのインターフェースにより、1つまたは複数の入力が、ユーザを、入力を介して、サードパーティスマートデバイスのうちの1つまたは複数を制御できるようにするための1つまたは複数の構成要素を介して与えられる。
【００５９】
ステップ615において、ステップ605のユーザ入力が向けられているスマートデバイスに関連付けられたサードパーティ向けの、サードパーティのアドレスにアドレス指定された要求が送信される。要求は、少なくとも、1つまたは複数の特定のスマートデバイスの識別子を含む。たとえば、ユーザは、サードパーティ「ABC」に関連付けられたスマート照明ユニット「123」を制御するための入力を与えることができ、「ABC」に関連付けられたシステムのアドレスにアドレス指定されるとともに、照明ユニット「123」の識別子を含む要求が生成され得る。
【００６０】
ステップ620において、要求を与えたことに応答して、ディープリンクが受信され、ディープリンクは、クライアントデバイス上にインストールされているサードパーティアプリケーションへのものである。ディープリンクは、ステップ615の要求に応答して、サードパーティシステムによって(任意選択で、リアルタイムに)生成され、サードパーティアプリケーションを、1つまたは複数の特定のデバイスについての付加情報を提示する状態で開かせるように構成される。たとえば、サードパーティ「ABC」は、クライアントデバイス上でインストールされると、ユーザが、照明ユニット「123」に向けられた1つまたは複数のインターフェースを介して、照明ユニット「123」を制御できるようにするアプリケーションに関連付けられ得る。サードパーティアプリケーションは、ディープリンクを使ってアクセスされると、アクティブなアプリケーションのインターフェースと一緒には含まれない付加情報を提示する。たとえば、アクティブなアプリケーションは、ユーザが照明ユニットをオンまたはオフできるようにし得るが、ユーザが、照明ユニットによって放出される色を制御できるようにはしない。ただし、ディープリンクに関連付けられたインターフェースは、そのような機能性を含み得る。
【００６１】
ステップ625において、さらなるユーザインターフェース入力を介して対話されると、スマートデバイスの制御をできるようにする少なくとも1つのグラフィカルインターフェース要素がレンダリングされる。対話される(たとえば、選択される)と、ディープリンクの実行を引き起こす追加グラフィカル要素も同時にレンダリングされる。たとえば、ディープリンクの実行により、サードパーティアプリケーションを開き、特定のスマートデバイスについての付加情報を提示することができる。たとえば、追加グラフィカル要素は、照明ユニット「123」に向けられたアクティブなアプリケーションのインターフェースとともに設けられた選択可能ボタンであってよい。ボタンと対話すると、サードパーティアプリケーションに、照明ユニット「123」に関連付けられるとともに、照明ユニット「123」に関連した付加情報を含むインターフェースを開かせるためのディープリンクが実行され得る。付加情報は、たとえば、ユーザが、照明ユニット「123」の放出される色温度を変えられるようにする1つまたは複数のグラフィカル要素を含み得る。
【００６２】
図7Aは、例示的方法のフローチャートを示す。図7Aのステップは、クライアントデバイスの1つまたは複数のプロセッサなど、1つまたは複数のプロセッサによって実施され得る。他の実装形態は、図7Aに示すもの以外の追加ステップを含んでよく、図7Aのステップを異なる順序で、および/もしくは並行して実施することができ、かつ/または図7Aのステップのうちの1つもしくは複数を省いてよい。
【００６３】
ステップ705において、サードパーティアプリケーションがクライアントデバイス上にインストールされていると判断される。サードパーティアプリケーションは、サードパーティの1つまたは複数のスマートデバイスの制御を可能にし、図1に関して本明細書に記載するように、サードパーティアプリケーション125と1つまたは複数の特性を共有し得る。いくつかの実装形態では、サードパーティアプリケーションは、サードパーティアプリケーションのパッケージ名、または他の識別子に基づいて判断されてよく、スマートデバイス制御とのサードパーティアプリケーションの記憶された関連付けに基づいて識別され得る。
【００６４】
ステップ710において、クライアントデバイスのユーザアカウントおよび/またはクライアントデバイスに関連付けられたスマートデバイストポロジーが、サードパーティのスマートデバイスについてのどのエントリも含まないと判断される。ユーザアカウントは、たとえば、クライアントデバイスを介して(たとえば、クライアントデバイスの自動化アシスタントアプリケーションを介して)アクセス可能な自動化アシスタントに関連付けられたユーザアカウントを含み得る。スマートデバイストポロジーは、自動化アシスタントによって、様々なスマートデバイスの制御において使用され得る。
【００６５】
ステップ715において、スマートデバイストポロジーが、サードパーティのスマートデバイスのうちのいずれについてのエントリも含まないと判断したことに応答して、サードパーティのスマートデバイスをスマートデバイストポロジーに追加するための、ユーザへの提案を含む出力がレンダリングされる。提案は、図5に示す提案と、1つまたは複数の特性を共有し得る。たとえば、提案は、サードパーティの識別子と、スマートデバイストポロジーにサードパーティのスマートデバイスを追加するかどうかをユーザが選択できるようにする1つまたは複数のグラフィカル要素とを含み得る。
【００６６】
ステップ720において、ステップ715において出力をレンダリングしたことに応答して、肯定的ユーザ入力が受信される。たとえば、出力は、ユーザがスマートデバイスを追加することを望むことを確認するために選択可能なインターフェース要素を含んでよく、肯定的ユーザ入力は、インターフェース要素の選択であってよい。また、たとえば、肯定的ユーザ入力は、ステップ715において出力をレンダリングしたことに応答して与えられる、口頭の「yes」または「はい、スマートデバイスを追加します」であってよい。肯定的ユーザ入力が受信されない(たとえば、ステップ715において出力をレンダリングした閾時間量以内に)か、または否定ユーザ入力が代わりに受信された(たとえば、口頭の「no」、「no」インターフェース要素の選択、もしくは出力の却下)場合、図7の方法は終わり得る。
【００６７】
ステップ720において肯定的入力を受信したことに応答して、ステップ725、730、および735のうちの1つが実施され得る。いくつかの実装形態では、ステップ725、730、および735のうちの複数が(任意の順序で、および/または並行して)試みられ、ただ1つが成功する。それらの実装形態のうちのいくつかでは、ステップ730は、ステップ725および/またはステップ735の実施に成功することができないと判断したときに実施されるだけである。本明細書に記載するように、ステップ725および/またはステップ735は、ユーザがいかなるさらなる入力も与える必要をなくす(または少なくとも、ステップ730と比較して、入力の持続時間を削減する)ことができ、あまり手際のよくないユーザおよび/または他のユーザにとって有利であり得る。したがって、ユーザ入力は、少なくとも、ステップ725および/またはステップ735が実施されると、さらに削減される。
【００６８】
ステップ725において、ユーザアカウントは、スマートデバイスのうちの少なくともいくつかをトポロジーに自動的に追加するための、サードパーティのAPIとインターフェースするのに使用される。たとえば、クライアントデバイスのアシスタント用に使用されるユーザアカウントは、サードパーティによっても受諾され得る。たとえば、ユーザアカウントは、単一のサインオンアカウントであってよく、ユーザによって、アシスタント用のユーザアカウントとして、およびサードパーティ用の1つの(ただ1つの、または多くの、のうちの1つの)アカウントとして使用されている場合がある。サードパーティのAPIとインターフェースする際、単一のサインオンアカウントが、認可として使用され、アクセストークンおよび/または付加情報が、インターフェースする間にサードパーティシステムによって提供され得る。アクセストークンは、アシスタントによって、サードパーティのスマートデバイスの制御(直接または間接)を可能にするために使用されてよく、付加情報は、たとえば、ユーザアカウント、スマートデバイスの他の属性、および/またはスマートデバイスに関連した他の情報に関連付けられた、サードパーティのスマートデバイスの識別子を含み得る。サードパーティのAPIとインターフェースし、トークンおよび/または他の情報を取得したことに応答して、スマートデバイストポロジーは、スマートデバイスに関連付けられた1つまたは複数のノードおよびスマートデバイスの識別子を含むように更新されてよく、それにより、自動化アシスタントは続いて、スマートデバイスを制御することができる。
【００６９】
ステップ730において、サードパーティアカウントに特化されたサインインインターフェースが提示される。インターフェースは、自動化アシスタントに関連付けられたアカウントとは別個のサードパーティアカウントを使用してサードパーティのAPIとインターフェースするために、サードパーティアカウントにサインインするのに使用され得る。サードパーティアカウントがサインインされると、スマートデバイスはスマートデバイストポロジーに追加され得る。たとえば、ユーザは、ユーザ名および/またはパスワードを入れるのにインターフェースを使用してよく、サードパーティのAPIは、ユーザがサードパーティとのアカウントを有するという確認の後でのみ、アクセス可能であり得る。確認されると、1つまたは複数の構成要素が、APIを介してサードパーティと対話して、スマートデバイスの制御を可能にするために、および/またはスマートデバイスをトポロジーに追加するために、アクセストークンおよび他の情報を受信することができる。
【００７０】
ステップ735において、図7Bの1つまたは複数のステップが実施される。図7Bは、例示的方法のフローチャートを示す。図7Bのステップは、クライアントデバイスの1つまたは複数のプロセッサなど、1つまたは複数のプロセッサによって実施され得る。他の実装形態は、図7Bに示すもの以外の追加ステップを含んでよく、図7Bのステップを異なる順序で、および/もしくは並行して実施することができ、かつ/または図7Bのステップのうちの1つもしくは複数を省いてよい。様々な実装形態では、図7Bのステップは、図7Aのステップ705、710、715、および720に続いて実施される。ただし、様々な代替実装形態では、図7Bの1つまたは複数のステップは、図7Aの1つまたは複数の(たとえば、任意の)ステップの実施なしで実施されてよいことに留意されたい。たとえば、図7Bのステップは、ユーザが、ホームアプリケーションおよび/または他のアプリケーション内で、アシスタントアカウントにサードパーティデバイスを追加するためのオプションに手動でナビゲートし、そのオプションを選択したことに応答して実施され得る。また、たとえば、図7Bのステップは、図7Aのステップ705および710を実施したことに応答して、自動的に(すなわち、どのさらなるユーザ入力もなしで)実施され得る。
【００７１】
ステップ740において、サードパーティアプリケーションが認証される。たとえば、サードパーティアプリケーションは、最初に(たとえば、ステップ705において)、サードパーティアプリケーションのパッケージ名に基づいて識別され得るが、サードパーティアプリケーションのあらかじめ与えられた署名を使って認証され得る。たとえば、サードパーティアプリケーションは、サードパーティアプリケーションのサイン用署名を取得すること、およびハッシュ化署名(たとえば、SHA-256または他の暗号ハッシュアルゴリズムを使ってハッシュされた)をサードパーティによって搭載プロセスの一部として与えられたものと比較することによって認証され得る。たとえば、サードパーティシステムが、自動化アシスタントを操作し、かつ/またはクライアントデバイスのオペレーティングシステムを操作するファーストパーティシステムに、サードパーティアプリケーション用の有効なハッシュ化署名をあらかじめ与えている場合がある。クライアントデバイス上にインストールされたサードパーティアプリケーションのサイン用署名は、インストールされたサードパーティアプリケーションが本当に、サードパーティのアプリケーションである(「詐称」アプリケーションではない)ことを検証するために、そのようなあらかじめ与えられたハッシュ署名と比較されてよい。
【００７２】
ステップ745において、リンク化機能をもつサードパーティアプリケーションを実行するためのインテントが与えられる。たとえば、インテントは、オペレーティングシステムクライアントデバイスに、インテントを呼び出すことによってサードパーティアプリケーションを実行させるために、クライアントデバイスのオペレーティングシステムに(たとえば、自動化アシスタントアプリケーションまたはホーム制御アプリケーションによって)与えられてよい。インテントは、サードパーティアプリケーションのリンク化機能に固有であってよく、この機能は、サードパーティアプリケーションによって実行されると、サードパーティアプリケーションに、1つまたは複数の条件が満足される場合に少なくとも1つのアクセストークン(たとえば、長期および/または短期アクセストークン)を戻させる。1つまたは複数の条件は、たとえば、以下でより詳しく説明するように、インテントを与えるアプリケーションの検証を含み得る。与えられたインテントは、任意選択で、自動化アシスタントアプリケーションもしくはホーム制御アプリケーションに関連付けられたユーザアカウントの識別子などのクライアント識別子を含むことができ、かつ/または任意選択で、要求されるアクセスおよび/もしくはトークンの範囲の指示を含むことができる。いくつかの実装形態では、オペレーティングシステムが、サードパーティアプリケーションにおけるインテントのための目標を解決しようと試みたが、何の解決も見つからない場合、サードパーティアプリケーションはリンク化機能をサポートしないと仮定されてよく、図7Bの方法は終わり得る(また、エラーメッセージが任意選択で提示される)。
【００７３】
ステップ750において、サードパーティアプリケーションからアクセストークンが受信される。いくつかの実装形態では、サードパーティアプリケーションは、アクセストークンを取得する際、サードパーティの1つまたは複数のリモートシステムとインターフェースする。いくつかの他の実装形態では、アクセストークンは、サードパーティの1つまたは複数のリモートシステムによって、アクセス制約があるクライアントデバイス上でのローカル記憶のために、サードパーティアプリケーションにあらかじめ与えられてよい。アクセストークンがクライアントデバイス上でローカルに記憶される実装形態では、サードパーティのスマートデバイスをトポロジーに追加する際の待ち時間が削減され得る。
【００７４】
いくつかの実装形態では、与えられたインテントに応答して、サードパーティアプリケーションがリンク化機能とともに実行されると、サードパーティアプリケーションは、アクセストークンを与える前に、インテント要求を最初に検証する。たとえば、サードパーティアプリケーションは、呼出し側アプリケーション(インテントを与えたもの)が自動化アシスタントアプリケーションまたは他の認証されたアプリケーションであることを認証することによって、要求を検証すればよい。たとえば、サードパーティアプリケーションは、呼出し側アプリケーションの署名を取得し、自動化アシスタントアプリケーション、ホーム制御アプリケーションの、または別の検証されたアプリケーションの実際の署名として(たとえば、搭載プロセス中に)サードパーティシステムに与えられた、あらかじめ与えられた署名と比較すればよい。いくつかの実装形態では、サードパーティアプリケーションは、アクセストークンを戻すことができない場合、エラーを与える場合がある。それらの実装形態のうちのいくつかでは、エラーは、それが回復可能エラーであること、およびそれが回復可能であることを示すエラーに応答して与えられた、(たとえば、代替リンク化機能および/または他のパラメータをもつ)新たなインテントを示し得る。いくつかの他の実装形態では、エラーは、それが回復可能エラーでないことを示し、それが回復可能エラーでないことを示すエラーに応答して与えられたさらなるインテントは示さない場合がある。
【００７５】
ステップ755において、アクセストークンが、追加サードパーティスマートデバイスデータを取得するのに使用される。たとえば、アクセストークンは、ネットワークを介して、サードパーティアプリケーションのリモートシステムとインターフェースし、特定のスマートデバイスに関連した付加情報を取得するのに使用され得る。取得された付加情報の少なくとも一部は、スマートデバイストポロジーに追加され得る。アクセストークンは、自動化アシスタントによって3Pスマートデバイスの制御を(たとえば、そのデバイスを、自動化アシスタントからの要求の中に含めることによって、および/または要求中に含められ得る更新された短期アクセストークンを取得する際に)可能にすることもできる。
【００７６】
図8は、本明細書に記載する技法の1つまたは複数の態様を実施するために任意選択で使用され得る例示的コンピューティングデバイス810のブロック図である。コンピューティングデバイス810は通常、バスサブシステム812を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ814を含む。これらの周辺デバイスは、たとえば、メモリサブシステム825およびファイル記憶サブシステム826を含む記憶サブシステム824と、ユーザインターフェース出力デバイス820と、ユーザインターフェース入力デバイス822と、ネットワークインターフェースサブシステム816とを含み得る。入力および出力デバイスは、コンピューティングデバイス810とのユーザ対話を可能にする。ネットワークインターフェースサブシステム816は、外側ネットワークへのインターフェースを提供し、他のコンピューティングデバイス中の対応するインターフェースデバイスに結合される。
【００７７】
ユーザインターフェース入力デバイス822は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィックスタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンなどのオーディオ入力デバイス、および/または他のタイプの入力デバイスを含み得る。概して、「入力デバイス」という用語の使用は、コンピューティングデバイス810中に、または通信ネットワーク上に情報を入力するすべての可能なタイプのデバイスと方法とを含むことをインテントしている。
【００７８】
ユーザインターフェース出力デバイス820は、ディスプレイサブシステム、プリンタ、ファックスマシン、またはオーディオ出力デバイスなどの非視覚的ディスプレイを含み得る。ディスプレイサブシステムは、ブラウン管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投影デバイス、または可視画像を作成するための何らかの他の機構を含み得る。ディスプレイサブシステムは、オーディオ出力デバイスを介するなどして、非視覚的ディスプレイも提供し得る。概して、「出力デバイス」という用語の使用は、コンピューティングデバイス810からユーザに、または別の機械もしくはコンピューティングデバイスに情報を出力するすべての可能なタイプのデバイスと方法とを含むことをインテントしている。
【００７９】
記憶サブシステム824は、本明細書に記載するモジュールの一部または全部の、機能性を提供するプログラミングおよびデータ構造体を記憶する。たとえば、記憶サブシステム824は、本明細書に記載する方法の選択された態様を実施するための、ならびに図1に示す様々な構成要素を実装するための論理を含み得る。
【００８０】
これらのソフトウェアモジュールは概して、プロセッサ814によって単独で、または他のプロセッサとの組合せで実行される。記憶サブシステム824において使われるメモリ825は、プログラム実行中の命令およびデータの記憶のためのメインランダムアクセスメモリ(RAM)830と、固定命令が記憶される読出し専用メモリ(ROM)832とを含むいくつかのメモリを含み得る。ファイル記憶サブシステム826が、プログラムおよびデータファイルのための永続記憶をもたらすことができ、ハードディスクドライブ、フロッピーディスクドライブを、関連付けられた取り外し可能媒体、CD-ROMドライブ、光ドライブ、または取り外し可能メディアカートリッジとともに含み得る。いくつかの実装形態の機能性を実装するモジュールは、ファイル記憶サブシステム826によって記憶サブシステム824に、またはプロセッサ814によってアクセス可能な他の機械に記憶され得る。
【００８１】
バスサブシステム812は、コンピューティングデバイス810の様々な構成要素およびサブシステムを、インテントしたように互いと通信させるための機構を提供する。バスサブシステム812は、単一のバスとして概略的に示されているが、バスサブシステムの代替実装形態は複数のバスを使うことができる。
【００８２】
コンピューティングデバイス810は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、またはどの他のデータ処理システムもしくはコンピューティングデバイスを含む様々なタイプであってもよい。コンピュータおよびネットワークの絶えず変わる性質により、図8に示すコンピューティングデバイス810の記述は、いくつかの実装形態を示す目的のための具体例としてのみインテントしている。コンピューティングデバイス810の多くの他の構成は、図8に示すコンピューティングデバイスよりも多いか、またはそれよりも少ない構成要素を有することが可能である。
【００８３】
本明細書で論じるいくつかの実装形態が、ユーザについての個人情報(たとえば、他の電子通信から抽出されるユーザデータ、ユーザのソーシャルネットワークについての情報、ユーザのロケーション、ユーザの時間、ユーザの生体情報、ならびにユーザの活動および人口統計情報、ユーザの間の関係など)を収集するか、または使い得る状況では、ユーザは、情報が収集されるかどうか、個人情報が記憶されるかどうか、個人情報が使われるかどうか、および情報がユーザについてどのように収集され、記憶され、使われるかを制御するための1つまたは複数の機会を与えられる。つまり、本明細書で論じるシステムおよび方法は、関連ユーザから、そうするための明示的認可を受信したときのみ、ユーザ個人情報を収集し、記憶し、かつ/または使う。
【００８４】
たとえば、ユーザは、プログラムまたは特徴が、その特定のユーザまたはプログラムもしくは特徴に関連する他のユーザについてのユーザ情報を収集するかどうかに対する制御を与えられる。個人情報が収集されるべき各ユーザには、そのユーザに適した情報集合体に対する制御を可能にするための、情報が収集されるかどうかに関する、および情報のどの部分が収集されるべきかに関する許可または認可を与えるための、1つまたは複数のオプションが提示される。たとえば、ユーザには、1つまたは複数のそのような制御オプションが通信ネットワークを介して与えられ得る。さらに、特定のデータが、記憶され、または使われる前に、個人的に識別可能な情報が削除されるように1つまたは複数のやり方で扱われ得る。一例として、ユーザの識別情報が、個人を識別可能な情報がどれも判断することができないように扱われ得る。別の例として、ユーザの具体的なロケーションを判断することができないように、ユーザの地理的ロケーションが、より大きい領域に一般化され得る。
【００８５】
いくつかの実装形態では、クライアントデバイスにおいて実行するアクティブなアプリケーションに向けられたユーザインターフェース入力を受信するステップを含む、1つまたは複数のプロセッサによって実施される方法が提供される。ユーザインターフェース入力は、クライアントデバイスのユーザインターフェース入力デバイスを介して提供される。方法は、ユーザインターフェース入力が、さらなるユーザインターフェース入力を介して対話されると、特定のサードパーティ(3P)の1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす少なくとも1つの対話型グラフィカルインターフェース要素を、アクティブなアプリケーションを介してレンダリングするための要求であると判断するステップをさらに含む。アクティブなアプリケーションは、特定の3Pの1つまたは複数の特定のスマートデバイスを含む、複数のサードパーティ(3P)の複数のスマートデバイスの制御を可能にする。方法は、ユーザインターフェース入力は、さらなるユーザインターフェース入力を介して対話されると、特定の3Pの1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす少なくとも1つの対話型グラフィカルインターフェース要素をレンダリングするための要求であると判断したことに応答して、1つまたは複数のネットワークを介して、特定の3Pについての特定の3Pアドレスにアドレス指定されるとともに、1つまたは複数の特定のスマートデバイスの識別子を含む要求を送信するステップをさらに含む。方法は、要求を送信したことに応答して、および特定の3Pから、クライアントデバイスにインストールされているとともに、3Pによって制御される3Pアプリケーションへのディープリンクを受信するステップをさらに含む。受信されたディープリンクは、1つまたは複数の特定のスマートデバイスの識別子を含む要求に基づいて、クライアントデバイスに、1つまたは複数の特定のスマートデバイスについての付加情報を提示する状態で3Pアプリケーションを開かせるように構成される。方法は、ユーザインターフェース入力に応答して、アクティブなアプリケーションに、さらなるユーザインターフェース入力を介して対話されると、特定の3Pの1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす少なくとも1つの対話型グラフィカルインターフェース要素と、選択されると、クライアントデバイスに、1つまたは複数の特定のスマートデバイスについての付加情報を提示する状態で3Pアプリケーションを開かせるためのディープリンクの実行を引き起こす選択可能な3P要素とを同時にレンダリングさせるステップをさらに含む。
【００８６】
本明細書で開示する技術のこれらおよび他の実装形態は、任意選択で、以下の特徴のうちの1つまたは複数を含み得る。
【００８７】
いくつかの実装形態では、1つまたは複数の特定のスマートデバイスについての付加情報は、対話されると、1つまたは複数の特定のスマートデバイスの1つまたは複数のプロパティの制御を引き起こす少なくとも1つの追加グラフィカル要素を含む。1つまたは複数の特定のスマートデバイスの1つまたは複数のプロパティの制御は、アプリケーションを介してレンダリングされた少なくとも1つの対話型グラフィカルインターフェース要素との対話を介しては可能にされない。いくつかの実装形態では、1つまたは複数の特定のスマートデバイスの識別子は、1つまたは複数の特定のスマートデバイスの一意の識別子であり、一意の識別子は、アプリケーションと3Pとの間の対話において使用され、一意の識別子は、3Pによって、3Pに固有である、1つまたは複数の特定のスマートデバイスの固有識別子にローカルにマップされる。
【００８８】
いくつかの実装形態では、方法は、クライアントデバイスにおいて実行するアクティブなアプリケーションに向けられたユーザインターフェース入力を受信するのに先立って、3Pアプリケーションがクライアントデバイスにインストールされていると判断するステップをさらに含む。それらの実装形態のうちのいくつかでは、要求を送信することは、3Pアプリケーションがクライアントデバイスにインストールされていると判断したことを条件とする。3Pアプリケーションがクライアントデバイスにインストールされていると判断するステップは、3Pアプリケーションがクライアントデバイスにインストールされていると判断するために、クライアントデバイスのオペレーティングシステムのアプリケーションプログラミングインターフェース(API)とインターフェースするステップを含み得る。
【００８９】
いくつかの実装形態では、1つまたは複数のスマートデバイスはカメラを含み、1つまたは複数の特定のスマートデバイスについての付加情報は、少なくとも、カメラにより最近キャプチャされたビデオクリップを含む。
【００９０】
いくつかの実装形態では、方法は、要求を送信したことに応答して、および特定の3Pから、選択可能な3P要素の指示を受信するステップと、3P用の複数の候補3P要素から、レンダリングするための選択可能な3P要素を選択するステップであって、選択可能な3P要素を選択することは、要求を送信したことに応答して、選択可能な3P要素の指示が受信されたことに基づく、ステップとをさらに含む。
【００９１】
いくつかの実装形態では、方法は、アクティブなアプリケーションに、少なくとも1つの対話型グラフィカルインターフェース要素と、選択可能な3P要素を同時にレンダリングさせたことに続いて、アクティブなアプリケーションに向けられた追加ユーザインターフェース入力を受信するステップと、追加ユーザインターフェース入力が、アクティブなアプリケーションを介して、さらなるユーザインターフェース入力を介して対話されると、特定の3Pの1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす少なくとも1つの対話型グラフィカルインターフェース要素をレンダリングするための要求であると判断するステップと、ユーザインターフェース入力は、さらなるユーザインターフェース入力を介して対話されると、特定の3Pの1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす少なくとも1つの対話型グラフィカルインターフェース要素をレンダリングするための要求であると判断したことに応答して、1つまたは複数のネットワークを介して、特定の3P用の特定の3Pアドレスにアドレス指定されるとともに、1つまたは複数の特定のスマートデバイスの識別子を含む要求の別のインスタンスを送信するステップと、要求を送信したことに応答して、および特定の3Pから、クライアントデバイスにインストールされている3Pアプリケーションへの異なるディープリンクを受信するステップであって、受信された異なるディープリンクは、ディープリンクとは異なり、1つまたは複数の特定のスマートデバイスの識別子を含む要求に基づいて、クライアントデバイスに、3Pアプリケーションを、1つまたは複数の特定のスマートデバイスについての異なる情報を提示する異なる状態で開かせるように構成される、ステップと、追加ユーザインターフェース入力に応答して、アクティブなアプリケーションに、さらなるユーザインターフェース入力を介して対話されると、特定の3Pの1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす少なくとも1つの対話型グラフィカルインターフェース要素と、選択可能な3P要素、または選択されると、3Pアプリケーションを、1つもしくは複数の特定のスマートデバイスについての異なる情報を提示する異なる状態で開くための、クライアントデバイスへの異なるディープリンクの実行を引き起こす追加の選択可能3P要素を同時にレンダリングさせるステップとをさらに含む。
【００９２】
いくつかの実装形態では、方法は、アクティブなアプリケーションに、少なくとも1つの対話型グラフィカルインターフェース要素と、選択可能な3P要素を同時にレンダリングさせたことに続いて、アクティブなアプリケーションに向けられた追加ユーザインターフェース入力を受信するステップと、追加ユーザインターフェース入力が、アクティブなアプリケーションを介して、さらなるユーザインターフェース入力を介して対話されると、特定の3Pの1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす少なくとも1つの対話型グラフィカルインターフェース要素をレンダリングするための要求であると判断するステップと、ユーザインターフェース入力は、さらなるユーザインターフェース入力を介して対話されると、特定の3Pの1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす少なくとも1つの対話型グラフィカルインターフェース要素をレンダリングするための要求であると判断したことに応答して、1つまたは複数のネットワークを介して、特定の3P用の特定の3Pアドレスにアドレス指定されるとともに、1つまたは複数の特定のスマートデバイスの識別子を含む要求の別のインスタンスを送信するステップと、要求を送信したことに応答して、および特定の3Pから、クライアントデバイスにインストールされている3Pアプリケーションへの異なるディープリンクを受信するステップであって、受信された異なるディープリンクは、ディープリンクとは異なり、1つまたは複数の特定のスマートデバイスの識別子を含む要求に基づいて、クライアントデバイスに、3Pアプリケーションを、ディープリンクと同じ状態で開かせるように構成される、ステップと、追加ユーザインターフェース入力に応答して、アクティブなアプリケーションに、さらなるユーザインターフェース入力を介して対話されると、特定の3Pの1つまたは複数の特定のスマートデバイスの対応する制御を引き起こす少なくとも1つの対話型グラフィカルインターフェース要素と、選択可能な3P要素、または選択されると、クライアントデバイスに、3Pアプリケーションを、1つもしくは複数の特定のスマートデバイスについての同じ情報を提示する同じ状態で開かせるための、異なるディープリンクの実行を引き起こす追加の選択可能3P要素を同時にレンダリングさせるステップとをさらに含む。
【００９３】
いくつかの実装形態では、方法は、アクティブなアプリケーションに向けられたさらなる追加ユーザインターフェース入力を受信するステップと、さらなるユーザインターフェース入力は、アクティブなアプリケーションを介して、さらなるユーザインターフェース入力を介して対話されると、特定の3Pとは別個のさらなる3Pの1つまたは複数のさらなるスマートデバイスの対応する制御を引き起こす少なくとも1つのさらなる対話型グラフィカルインターフェース要素をレンダリングするための要求であると判断するステップと、クライアントデバイスには、さらなる3Pによって制御されるさらなる3Pアプリケーションが欠如していると判断するステップと、さらなるユーザインターフェース入力は、少なくとも1つのさらなる対話型グラフィカルインターフェース要素をレンダリングするための要求であると、およびクライアントデバイスにはさらなる3Pアプリケーションが欠如していると判断したことに応答して、アクティブなアプリケーションに、さらなるユーザインターフェース入力を介して対話されると、さらなる3Pの1つまたは複数のさらなるスマートデバイスの対応する制御を引き起こす少なくとも1つのさらなる対話型グラフィカルインターフェース要素と、選択されると、クライアントデバイスに、さらなる3Pアプリケーションのインストールのためのオプションを提示させるさらなる選択可能3P要素を同時にレンダリングさせるステップとをさらに含む。
【００９４】
いくつかの実装形態では、1つまたは複数のプロセッサによって実装される方法が提供され、サードパーティ(3P)アプリケーションが、ユーザアカウントに関連付けられたクライアントデバイスにインストールされていると判断するステップを含む。3Pアプリケーションは、3Pの1つまたは複数の3Pスマートデバイスの制御を可能にする。方法は、ユーザアカウントに関連付けられるとともに、自動化アシスタントによって、自動化アシスタントとの対話を介してスマートデバイスを制御する際に使用されるスマートデバイストポロジーには、3Pの1つまたは複数の3Pスマートデバイスのうちのどれについてのどのエントリも欠如していると判断するステップをさらに含む。方法は、3Pアプリケーションがクライアントデバイスにインストールされていると、およびスマートデバイストポロジーには、1つまたは複数の3Pスマートデバイスのうちのどれについてのどのエントリも欠如していると判断したことに応答して、クライアントデバイスまたはユーザアカウントに関連付けられた追加クライアントデバイスにおいて出力をレンダリングさせるステップをさらに含み、出力は、スマートデバイストポロジーに3Pを追加するための提案を含む。方法は、出力のレンダリングに応答して肯定的ユーザインターフェース入力を受信するステップと、肯定的ユーザインターフェース入力を受信したことに応答して、スマートデバイストポロジーに、1つまたは複数の3Pスマートデバイスのうちの少なくともいくつかの、特定のデバイスを自動的に追加する際に、3Pのアプリケーションプログラミングインターフェース(API)とインターフェースするのに、ユーザアカウントを使うステップ、スマートデバイストポロジーに特定のスマートデバイスを自動的に追加する際に、クライアントデバイスにインストールされたサードパーティアプリケーションとインターフェースするステップ、または3Pに特化された3Pアカウントにサインインすることを可能にするとともに、3Pアカウントにサインインするのに使用されると、スマートデバイストポロジーに特定のデバイスを自動的に追加する際に、3PのAPI、もしくは追加APIとのインターフェースを引き起こすサインインインターフェースを提示するステップとをさらに含む。
【００９５】
本明細書で開示する技術のこれらおよび他の実装形態は、任意選択で、以下の特徴のうちの1つまたは複数を含み得る。
【００９６】
いくつかの実装形態では、方法は、スマートデバイストポロジーに、1つまたは複数の3Pスマートデバイスのうちの少なくともいくつかの、特定のデバイスを自動的に追加する際に、3PのAPIとインターフェースするのに、ユーザアカウントを使うステップを含む。それらの実装形態のうちのいくつかでは、肯定的ユーザインターフェース入力の受信に続いて、およびスマートデバイストポロジーに特定のデバイスを自動的に追加することが完了する前に、追加プロンプトがユーザに対して提示されない。
【００９７】
いくつかの実装形態では、方法は、3Pに特化されるとともに、3Pアカウントにサインインするのに使用されると、スマートデバイストポロジーに特定のデバイスを自動的に追加する際に、3PのAPI、または追加APIとのインターフェースを引き起こす3Pアカウントにサインインすることを可能にするサインインインターフェースを提示するステップを含む。それらの実装形態のうちのいくつかでは、サインインインターフェースを提示するステップは、3PのAPIとインターフェースするのにユーザアカウントを使うための試みの失敗に応答して起こる。
【００９８】
いくつかの実装形態では、出力は、ホーム制御アプリケーションによってレンダリングされるグラフィカル出力を含む。
【００９９】
いくつかの実装形態では、出力は、自動化アシスタントアプリケーションによってレンダリングされるグラフィカルおよび/または可聴出力を含む。
【０１００】
いくつかの実装形態では、肯定的ユーザインターフェース入力を受信したことに応答して、方法は、スマートデバイストポロジーに特定のスマートデバイスを自動的に追加する際に、クライアントデバイスにインストールされたサードパーティアプリケーションとインターフェースするステップを含む。それらの実装形態のいくつかのバージョンでは、スマートデバイストポロジーに特定のスマートデバイスを自動的に追加する際に、サードパーティアプリケーションとインターフェースするステップは、サードパーティアプリケーション用のあらかじめ与えられた署名を使って、サードパーティアプリケーションを認証するステップと、サードパーティアプリケーションを認証したことに応答して、サードパーティアプリケーションをリンク化機能とともに実行させるインテントを与えるステップと、インテントを与えたことに応答して、サードパーティアプリケーションからアクセストークンを受信するステップとを含む。それらのバージョンのうちのいくつかでは、サードパーティアプリケーションがリンク化機能とともに実行されると、サードパーティアプリケーションは、検証されたアプリケーションのあらかじめ与えられた署名を使って、インテントが、検証されたアプリケーションによって与えられたことを認証し、検証されたアプリケーションによってインテントが与えられたことを認証したことに応答してアクセストークンを戻す。いくつかの実装形態では、スマートデバイストポロジーに特定のスマートデバイスを自動的に追加する際に、サードパーティアプリケーションとインターフェースするステップは、ネットワークを介して、サードパーティアプリケーションのリモートシステムとインターフェースし、特定のスマートデバイスに関連した付加情報を取得するのにアクセストークンを使用するステップと、付加情報の少なくとも一部をスマートデバイストポロジーに追加するステップとを含む。
【０１０１】
いくつかの実装形態では、クライアントデバイスの1つまたは複数のプロセッサによって実装される方法が提供され、サードパーティ(3P)アプリケーションがクライアントデバイスにインストールされていると判断するステップを含む。3Pアプリケーションは、3Pの1つまたは複数の3Pスマートデバイスの制御を可能にする。方法は、クライアントデバイスに関連付けられるとともに、自動化アシスタントによって、自動化アシスタントとの対話を介してスマートデバイスを制御する際に使用されるスマートデバイストポロジーには、3Pの1つまたは複数の3Pスマートデバイスのうちのどれについてのどのエントリも欠如していると判断するステップをさらに含む。方法は、サードパーティアプリケーション用のあらかじめ与えられた署名を使って、サードパーティアプリケーションを認証するステップをさらに含む。方法は、サードパーティアプリケーションを認証したことに応答して、ならびに3Pアプリケーションがクライアントデバイスにインストールされていると、およびスマートデバイストポロジーには、1つまたは複数の3Pスマートデバイスのうちのどれについてのどのエントリも欠如していると判断したことに応答して、スマートデバイストポロジーに特定のスマートデバイスを自動的に追加する際に、クライアントデバイスにインストールされたサードパーティアプリケーションとインターフェースするステップをさらに含む。
【０１０２】
本明細書で開示する技術のこれらおよび他の実装形態は、任意選択で、以下の特徴のうちの1つまたは複数を含み得る。
【０１０３】
いくつかの実装形態では、スマートデバイストポロジーに特定のスマートデバイスを自動的に追加する際に、サードパーティアプリケーションとインターフェースするステップは、サードパーティアプリケーションをリンク化機能とともに実行させるインテントを与えるステップと、インテントを与えたことに応答して、サードパーティアプリケーションからアクセストークンを受信するステップとを含む。それらの実装形態のうちのいくつかでは、方法は、クライアントデバイスの特定のアプリケーションによって実施され、サードパーティアプリケーションがリンク化機能とともに実行されると、サードパーティアプリケーションは、特定のアプリケーションがインテントを与えたことに基づいて特定のアプリケーションを認証し、特定のアプリケーションを認証したことに応答してアクセストークンを戻す。いくつかの実装形態では、スマートデバイストポロジーに特定のスマートデバイスを自動的に追加する際に、サードパーティアプリケーションとインターフェースするステップは、ネットワークを介して、サードパーティアプリケーションのリモートシステムとインターフェースし、特定のスマートデバイスに関連した付加情報を取得するのにアクセストークンを使用するステップと、付加情報の少なくとも一部をスマートデバイストポロジーに追加するステップとを含む。
【符号の説明】
【０１０４】
105  クライアントデバイス
107  グラフィカルディスプレイ、ディスプレイ
1101-N  サードパーティ(3P)リモートサーバ
1101  3P1リモートサーバ
1102  3P2リモートサーバ
110N  3PNリモートサーバ
115  ホーム制御アプリケーション
117  レンダリングエンジン
119  要求エンジン
120  リモートホーム制御サーバ
125  サードパーティアプリケーション
145A  スマートデバイス、スマート照明ユニット、照明ユニット
145B  スマートデバイス
160  デバイス構成エンジン
200  インターフェース
205  トグルボタン、要素
210  スライダ要素、要素
215  ホーム制御アプリケーション
300  インターフェース
305  トグルボタン
310  スライダ
315  スライダ、色制御
320  シーンボタン
400  インターフェース
405  要素
410  要素
415  ボタン
500  インターフェース
505  グラフィカル要素
510  グラフィカル要素
515  グラフィカル要素
810  コンピューティングデバイス
812  バスサブシステム
814  プロセッサ
816  ネットワークインターフェースサブシステム
820  ユーザインターフェース出力デバイス
822  ユーザインターフェース入力デバイス
824  記憶サブシステム
825  メモリサブシステム、メモリ
826  ファイル記憶サブシステム
830  メインランダムアクセスメモリ(RAM)
832  読出し専用メモリ(ROM)
【図１】
2021518941.tif 000003
【図２】
2021518941.tif 000004
【図３】
2021518941.tif 000005
【図４】
2021518941.tif 000006
【図５】
2021518941.tif 000007
【図６】
2021518941.tif 000008
【図７Ａ】
2021518941.tif 000009
【図７Ｂ】
2021518941.tif 000010
【図８】
2021518941.tif 000011
【国際調査報告】
2021518941.tif 000012
2021518941.tif 000013
2021518941.tif 000014
2021518941.tif 000015