(57)【要約】  様々な実装形態は、対応するスマートデバイスに送信されるとき、対応するスマートデバイスにおいて、または対応するスマートデバイスによって直接制御された対応する追加のスマートデバイスにおいて、状態変化を実施するために、対応するスマートデバイスによって直接解釈可能である、固有の制御コマンドを、アシスタントクライアントデバイスにおいてローカルに生成することに関する。様々な実装形態は、追加または代替として、ユーザのアカウントのためのスマートデバイスを発見、プロビジョニング、および/または登録することにおいて、ローカルアシスタントクライアントデバイスを利用することに関する。
2021530762.tif 000002
【特許請求の範囲】
【請求項１】
自動アシスタントクライアントを実行するクライアントデバイスの1つまたは複数のプロセッサによって実施される方法であって、
少なくとも1つのスマートデバイスと、前記スマートデバイスにおいて変更されることになる少なくとも1つの状態とを指定する、汎用スマートデバイス制御コマンドを識別するステップであって、
前記汎用スマートデバイス制御コマンドが、前記クライアントデバイスにおいて受信されたユーザインターフェース入力に応答して生成される、ステップと、
高信頼通信チャネルが、前記クライアントデバイスと前記スマートデバイスとの間に確立されるか否かを決定するステップと、
前記高信頼通信チャネルが、前記クライアントデバイスと前記スマートデバイスとの間に確立されないとの決定に応答して、
前記クライアントデバイスにおいてローカルに記憶された、クライアントデバイスからスマートデバイスへのマッピングにアクセスして、前記スマートデバイスへの確立された高信頼通信チャネルをもつ追加のクライアントデバイスを解決するステップと、
ローカルネットワーク上で、前記追加のクライアントデバイスに前記汎用スマートデバイス制御コマンドを送信するステップであって、
前記送信が、前記追加のクライアントデバイスに、
前記汎用スマートデバイス制御コマンドをローカルに処理して、固有のコマンドを生成するステップであって、前記固有のコマンドが、前記汎用スマートデバイス制御コマンドに対応し、前記スマートデバイスにおいて前記状態の変更を実施するために、前記スマートデバイスによって直接解釈可能である、ステップと、
前記スマートデバイスにおいて前記状態の前記変更を実施するために、前記確立された高信頼通信チャネル上で、前記固有のコマンドを送信するステップと
を行わせるためのものである、ステップと
を含む方法。
【請求項２】
前記高信頼通信チャネルが、前記クライアントデバイスと前記スマートデバイスとの間に確立されるとの決定に応答して、
前記クライアントデバイスにおいてローカルに実行可能な複数のサードパーティ(3P)アダプタから、特定の3Pアダプタを選択するステップであって、前記選択が、前記汎用スマートデバイス制御コマンドに基づく、ステップと、
前記選択された3Pアダプタを使用して、前記汎用スマートデバイス制御コマンドを処理して、前記固有のコマンドを生成するステップであって、前記固有のコマンドが、前記汎用スマートデバイス制御コマンドに対応し、前記スマートデバイスにおいて前記状態の変更を実施するために、前記スマートデバイスによって直接解釈可能である、ステップと、
前記スマートデバイスにおいて前記状態の前記変更を実施するために、前記クライアントデバイスと前記スマートデバイスとの間に確立された前記高信頼通信チャネル上で、前記固有のコマンドを送信するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記汎用スマートデバイス制御コマンドを識別する前記ステップより前に、
前記クライアントデバイスにおいて、リモートサーバから前記特定の3Pアダプタを受信するステップであって、前記特定の3Pアダプタの受信が、前記クライアントデバイスのための、前記スマートデバイス、または3Pの追加のスマートデバイスの登録に応答するものである、ステップ
をさらに含む、請求項2に記載の方法。
【請求項４】
前記汎用スマートデバイス制御コマンドを識別する前記ステップより前に、
前記選択された3Pアダプタを使用して、前記汎用スマートデバイス制御コマンドを処理して、前記固有のコマンドを生成するステップにおける、レイテンシを低減するために、前記クライアントデバイスにおいてローカルに、前記特定の3Pアダプタをプリエンプティブに実行するステップ
をさらに含む、請求項2または3のいずれか一項に記載の方法。
【請求項５】
前記高信頼通信チャネルが、前記クライアントデバイスと前記スマートデバイスとの間に確立されるか否かを決定する前記ステップが、
いずれかの通信チャネルが、前記クライアントデバイスと前記スマートデバイスとの間に確立されるか否かを決定するステップ、または
前記クライアントデバイスと前記スマートデバイスとの間に確立された通信チャネルが、少なくともしきい値信号強度を有するか否かを決定するステップ
のうちの一方または両方を含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
いずれかの通信チャネルが確立されるか否かを決定する前記ステップ、および前記通信チャネルが少なくともしきい値信号強度を有するか否かを決定する前記ステップが、前記クライアントデバイスからスマートデバイスへのマッピングに各々基づく、請求項5に記載の方法。
【請求項７】
いずれかの通信チャネルが確立されるか否か、および前記通信チャネルが少なくともしきい値信号強度を有するか否かを決定する前記ステップが、前記クライアントデバイスからスマートデバイスへのマッピングの直近の更新に続いて、前記通信チャネルを介して受信された1つまたは複数の信号に各々基づく、請求項5に記載の方法。
【請求項８】
前記クライアントデバイスにおいてローカルに記憶された、前記クライアントデバイスからスマートデバイスへのマッピングにアクセスして、前記スマートデバイスへの前記確立された高信頼通信チャネルをもつ前記追加のクライアントデバイスを解決する前記ステップが、
前記クライアントデバイスからスマートデバイスへのマッピングに基づいて、前記追加のクライアントデバイスと前記スマートデバイスとの間の所与の信号強度が、前記クライアントデバイスからスマートデバイスへのマッピングのうちのすべてのクライアントデバイスの中で最大であると決定するステップ
を含む、請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記スマートデバイスへの前記確立された高信頼通信チャネルが、BLUETOOTH(登録商標)無線チャネルである、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
前記汎用スマートデバイス制御コマンドが、前記クライアントデバイスにおいて受信されたユーザインターフェース入力をローカルに処理することによって、前記クライアントデバイスにおいてローカルに生成される、請求項1から9のいずれか一項に記載の方法。
【請求項１１】
前記ユーザインターフェース入力が、前記クライアントデバイスのタッチスクリーンにおける、前記スマートデバイスに対応するレンダリングされたグラフィカルユーザインターフェース要素とのインタラクションである、請求項10に記載の方法。
【請求項１２】
前記ユーザインターフェース入力が、前記クライアントデバイスの少なくとも1つのマイクロフォンを介して受信されたボイス入力であり、
前記ユーザインターフェース入力をローカルに処理することが、音声テキストプロセッサを使用して、前記ボイス入力をテキストに変換すること、および、前記テキストにおいて自然言語理解を行って、前記汎用スマートデバイス制御コマンドを生成することを含む、請求項10に記載の方法。
【請求項１３】
前記方法が、
前記クライアントデバイスの少なくとも1つのマイクロフォンを介して、ボイス入力を受信するステップと、
リモート自動アシスタントシステムに、前記ボイス入力をストリーミングするステップと
をさらに含み、
前記汎用スマートデバイス制御コマンドを識別する前記ステップが、前記リモート自動アシスタントシステムへの前記ボイス入力のストリーミングに応答して、前記リモート自動アシスタントシステムから、前記汎用スマートデバイス制御コマンドを受信するステップを含む、請求項1から9のいずれか一項に記載の方法。
【請求項１４】
自動アシスタントクライアントを実行するクライアントデバイスの1つまたは複数のプロセッサによって実施される方法であって、
前記クライアントデバイスにおいてローカルに、対応するサードパーティ(3P)によって各々生成された複数の3Pアダプタの各々をプリエンプティブに実行するステップであって、
前記3Pアダプタの各々が、複数の対応する汎用スマートデバイス制御コマンドの各々を、対応する固有のコマンドに変換し、
前記対応する固有のコマンドが、3Pの少なくとも1つの対応するスマートデバイスにローカルに送信されるとき、前記対応するスマートデバイスにおいて、または前記対応するスマートデバイスによって直接制御された対応する追加のスマートデバイスにおいて、状態変化を実施するために、前記対応するスマートデバイスによって直接解釈可能であるように、各々調整され、
前記複数の3Pアダプタが、前記クライアントデバイスのための前記3Pのスマートデバイスの以前の登録に応答して、前記クライアントデバイスにおいてローカルに、プリエンプティブに実行される、ステップと、
少なくとも1つの特定のスマートデバイスと、前記特定のスマートデバイスにおいて変更されることになる少なくとも1つの状態とを指定する、特定の汎用スマートデバイス制御コマンドを識別するステップであって、
前記特定の汎用スマートデバイス制御コマンドが、前記クライアントデバイス、または前記クライアントデバイスとローカル通信している追加のクライアントデバイスにおいて受信された、ユーザインターフェース入力に応答して生成される、ステップと、
前記複数の3Pアダプタから、前記特定のスマートデバイス制御コマンドに基づいて、特定の3Pアダプタを選択するステップと、
前記選択された特定の3Pアダプタを使用して、前記特定のスマートデバイス制御コマンドを処理して、前記スマートデバイス制御コマンドに対応する、前記固有のコマンドのうちの特定の固有のコマンドを生成するステップと、
前記自動アシスタントクライアントにおいて利用可能な複数の通信チャネルから、前記特定の3Pアダプタに割り当てられた特定の通信チャネルを選択するステップと、
前記特定のスマートデバイスにおいて前記少なくとも1つの状態が変更されることを引き起こすために、前記選択された特定の通信チャネルを使用して、前記特定の固有のコマンドを送信するステップと
を含む方法。
【請求項１５】
前記クライアントデバイスにおいてプリエンプティブに実行する前記複数の3Pアダプタが、前記クライアントデバイスにおいて記憶された利用可能な3Pアダプタのサブセットであり、前記方法が、
前記クライアントデバイスにおいてプリエンプティブに実行するために、前記利用可能な3Pアダプタから、前記特定の3Pアダプタを選択するステップであって、前記選択が、1つまたは複数の動的基準に基づく、ステップ
をさらに含む、請求項14に記載の方法。
【請求項１６】
前記1つまたは複数の動的基準が、
前記クライアントデバイスにおける前記特定の3Pアダプタの対応する利用の新しさと、
前記クライアントデバイスと前記特定の3Pアダプタに対応する前記特定のスマートデバイスとの間の通信チャネルのための信号強度と、
時刻と、
曜日と
のうちの1つまたは複数を備える、請求項15に記載の方法。
【請求項１７】
前記プリエンプティブに実行するステップより前に、
前記クライアントデバイスにおいて、リモートサーバから前記特定の3Pアダプタを受信するステップであって、前記特定の3Pアダプタの受信が、前記クライアントデバイスのための、前記特定のスマートデバイス、または前記3Pの追加のスマートデバイスの登録に応答するものである、ステップ
をさらに含む、請求項14から16のいずれか一項に記載の方法。
【請求項１８】
前記クライアントデバイスにおいてプリエンプティブに実行された前記3Pアダプタのうちの追加の3Pアダプタが、前記特定の通信チャネルとは異なる追加の特定の通信チャネルに割り当てられる、請求項14から17のいずれか一項に記載の方法。
【請求項１９】
前記特定の通信チャネルが、前記クライアントデバイスの第1の無線チャネルであり、
前記追加の特定の通信チャネルが、前記クライアントデバイスの第2の無線チャネルである、請求項18に記載の方法。
【請求項２０】
前記第1の無線チャネルがBLUETOOTH(登録商標)無線チャネルであり、
前記第2の無線チャネルがWi-Fi無線チャネルである、請求項19に記載の方法。
【請求項２１】
前記3Pアダプタによって生成された前記特定の固有のコマンドが、前記3Pアダプタの特定のプロトコルスイートに適合し、
前記クライアントデバイスにおいてプリエンプティブに実行された前記3Pアダプタのうちの追加の3Pアダプタが、前記特定のプロトコルスイートとは異なる追加のプロトコルスイートに適合するコマンドを生成する、請求項14から20のいずれか一項に記載の方法。
【請求項２２】
前記追加の3Pアダプタおよび前記3Pアダプタの両方が、前記特定の通信チャネルに割り当てられる、請求項21に記載の方法。
【請求項２３】
前記3Pアダプタの前記特定のプロトコルスイートが、業界によって採用された標準に適合しない、請求項22に記載の方法。
【請求項２４】
前記3Pアダプタの前記特定のプロトコルスイートが、前記3Pにとって独自仕様である、請求項22に記載の方法。
【請求項２５】
前記特定の汎用スマートデバイス制御コマンドが、前記追加のクライアントデバイスにおいて受信されたユーザインターフェース入力に応答して生成され、
前記特定の汎用スマートデバイス制御コマンドを識別する前記ステップが、
ローカルネットワーク通信を介して、前記追加のクライアントデバイスから、前記特定の汎用スマートデバイスコマンドを受信するステップ
を含む、請求項14から24のいずれか一項に記載の方法。
【請求項２６】
前記方法が、
前記特定の汎用スマートデバイス制御コマンドを識別するステップより前に、
前記クライアントデバイスと前記特定のスマートデバイスとの間の前記特定の通信チャネルのための信号強度を決定するステップと、
前記信号強度を示すデータを送信するステップと
をさらに含み、
前記特定の汎用スマートデバイスコマンドが、前記信号強度を示す前記送信されたデータに基づいて、前記追加のクライアントデバイスから受信される、請求項25に記載の方法。
【請求項２７】
前記複数の3Pアダプタから、前記特定のスマートデバイス制御コマンドに基づいて、前記特定の3Pアダプタを選択する前記ステップが、
前記3Pアダプタを、
前記汎用スマートデバイス制御コマンドが、前記3Pアダプタのための識別子をさらに指定すること、および/または
前記汎用スマートデバイス制御コマンドによって指定された前記特定のスマートデバイスが、前記クライアントデバイスにおいて前記3Pアダプタに割り当てられること
に基づいて選択するステップ
を含む、請求項14から26のいずれか一項に記載の方法。
【請求項２８】
前記方法が、
前記汎用スマートデバイス制御コマンドに基づいて、前記特定のスマートデバイスのためのアドレスを識別するステップと、
前記特定の固有のコマンドが、前記特定のスマートデバイスのための前記アドレスのみにアドレス指定されることを検証するステップと
をさらに含み、
前記選択された特定の通信チャネルを使用して、前記特定の固有のコマンドを送信する前記ステップが、前記検証するステップを条件とする、請求項14から27のいずれか一項に記載の方法。
【請求項２９】
1つまたは複数のプロセッサによって実施される方法であって、
インターネットアクセスを提供するセキュアWi-Fiネットワークに接続されたアシスタントクライアントデバイスのエコシステムのうちの各アシスタントクライアントデバイスに、前記セキュアWi-Fiネットワークに接続するための資格情報を欠いているスマートデバイスによってブロードキャストされているアクセスポイントの利用可能性について、1つまたは複数の通信チャネルをスキャンすることを行わせるステップと、
前記スキャンすることによって生成されたデータに基づいて、前記アシスタントクライアントデバイスのエコシステムのうちの複数のアシスタントクライアントデバイスの各々が、前記アクセスポイントの前記利用可能性を検出したと決定するステップと、
前記アクセスポイントの前記利用可能性を検出した前記複数のアシスタントクライアントデバイスから、単一のアシスタントクライアントデバイスを選択するステップであって、
前記複数のアシスタントクライアントデバイスからの、前記単一のアシスタントクライアントデバイスの選択が、前記単一のアシスタントクライアントデバイスのためのヒューマンインタラクションデータに少なくとも部分的に基づく、ステップと、
前記単一のアシスタントクライアントデバイスに、
前記セキュアWi-Fiネットワークとの接続を切断するステップと、
前記接続を切断した後、前記アクセスポイントを介して、前記スマートデバイスへの接続を確立するステップと、
前記セキュアWi-Fiネットワークに接続するための前記資格情報を、前記接続を介して前記スマートデバイスとセキュアに共有するステップと
を行わせるステップと
を含む方法。
【請求項３０】
前記単一のアシスタントクライアントデバイスのための前記ヒューマンインタラクションデータに少なくとも部分的に基づいて、前記単一のアシスタントクライアントデバイスを選択する前記ステップが、
ユーザインターフェース入力が、しきい値時間量内に前記単一のアシスタントクライアントデバイスにおいて受信されていないことを、前記ヒューマンインタラクションデータが示すことに基づいて、前記単一のアシスタントクライアントデバイスを選択するステップ
を含む、請求項29に記載の方法。
【請求項３１】
前記単一のアシスタントクライアントデバイスのための前記ヒューマンインタラクションデータに少なくとも部分的に基づいて、前記単一のアシスタントクライアントデバイスを選択する前記ステップが、
前に受信されたユーザインターフェース入力に応答して、可聴出力が前記アシスタントクライアントデバイスによってレンダリングされていないことを、前記ヒューマンインタラクションデータが示すことに基づいて、前記単一のアシスタントクライアントデバイスを選択するステップ
を含む、請求項29または30に記載の方法。
【請求項３２】
前記単一のアシスタントクライアントデバイスのための前記ヒューマンインタラクションデータに少なくとも部分的に基づいて、前記単一のアシスタントクライアントデバイスを選択する前記ステップが、
前記単一のアシスタントクライアントデバイスが、前記アクセスポイントを検出した前記複数のアシスタントクライアントデバイスのうちのいずれかの他のものよりも低い頻度で利用されることを、前記ヒューマンインタラクションデータが示すことに基づいて、前記単一のアシスタントクライアントデバイスを選択するステップ
を含む、請求項29から31のいずれか一項に記載の方法。
【請求項３３】
前記セキュアWi-Fiネットワークを介して、前記スマートデバイスから登録データを受信するステップと、
前記登録データを使用して、前記アシスタントクライアントデバイスのエコシステムに関連付けられた、記憶されたホームグラフ内で、前記スマートデバイスを割り当てるステップと
をさらに含む、請求項29から32のいずれか一項に記載の方法。
【請求項３４】
前記登録データを使用して、前記記憶されたホームグラフ内で前記スマートデバイスを割り当てる前記ステップが、
前記エコシステムの前記アシスタントクライアントデバイスのうちの1つまたは複数を介して検出された、バイオメトリックデータが、前記記憶されたホームグラフに関連付けられたアカウントに対応するとの決定に基づいて、前記記憶されたホームグラフ内で前記スマートデバイスを割り当てるステップ
を含む、請求項33に記載の方法。
【請求項３５】
前記バイオメトリックデータが、前記記憶されたホームグラフに関連付けられた前記アカウントに対応するとの決定に基づいて、前記記憶されたホームグラフ内で前記スマートデバイスを割り当てる前記ステップが、
前記アシスタントクライアントデバイスのエコシステムに関連付けられ、かつ追加のアカウントに関連付けられた、追加のホームグラフの代わりに、前記バイオメトリックデータに基づいて、前記記憶されたホームグラフを選択するステップ
を含む、請求項34に記載の方法。
【請求項３６】
前記バイオメトリックデータが、前記エコシステムの前記アシスタントクライアントデバイスのうちの前記1つまたは複数の、1つまたは複数のマイクロフォンを介して検出された、ボイスデータを含む、請求項34または35に記載の方法。
【請求項３７】
1つまたは複数のプロセッサによって実施される方法であって、
対応する短距離無線を各々有する複数のアシスタントクライアントデバイスの各々から、前記短距離無線を介した、スマートデバイスへの、対応する接続のための対応する信号強度を受信するステップと、
前記受信された信号強度に基づいて、前記複数のアシスタントデバイスのうちの所与のアシスタントデバイスが、前記スマートデバイスをローカルに制御するために好ましいと決定するステップと、
少なくとも1つのスマートデバイスと、前記スマートデバイスにおいて変更されることになる少なくとも1つの状態とを指定する、汎用スマートデバイス制御コマンドを識別するステップと、
前記所与のアシスタントデバイスが前記スマートデバイスをローカルに制御するために好ましいとの決定に基づいて、前記所与のアシスタントデバイスに前記汎用スマートデバイス制御コマンドを送信するステップであって、
前記送信が、前記所与のアシスタントデバイスに、
前記汎用スマートデバイス制御コマンドをローカルに処理して、固有のコマンドを生成するステップであって、前記固有のコマンドが、前記汎用スマートデバイス制御コマンドに対応し、前記スマートデバイスにおいて前記状態の変更を実施するために、前記スマートデバイスによって直接解釈可能である、ステップと、
前記スマートデバイスにおいて前記状態の前記変更を実施するために、前記短距離無線上で、前記固有のコマンドを送信するステップと
を行わせるためのものである、ステップと
を含む方法。
【請求項３８】
1つまたは複数のプロセッサによって実施される方法であって、
対応する短距離無線を各々有する複数のアシスタントクライアントデバイスの各々から、前記短距離無線を介した、スマートデバイスへの、対応する接続のための対応する信号強度を受信するステップと、
前記受信された信号強度に基づいて、前記複数のアシスタントデバイスのうちの所与のアシスタントデバイスが、前記スマートデバイスをローカルに制御するために好ましいと決定するステップと、
前記所与のアシスタントデバイスが前記スマートデバイスをローカルに制御するために好ましいとの決定に基づいて、前記スマートデバイスに対応する、特定のサードパーティ(3P)アダプタが、前記所与のアシスタントデバイスにおいてダウンロードされ、ローカルに記憶されることを引き起こすステップと
を含み、
前記特定の3Pアダプタが、汎用スマートデバイス制御コマンドをローカルに処理して、固有のコマンドを生成することを行うように構成され、前記固有のコマンドが、前記汎用スマートデバイス制御コマンドに対応し、前記スマートデバイスにおいて状態の変更を実施するために、前記スマートデバイスによって直接解釈可能である、方法。
【請求項３９】
前記所与のアシスタントデバイスが前記スマートデバイスをローカルに制御するために好ましいとの決定に基づいて、前記特定の3Pアダプタが前記所与のアシスタントデバイスにおいてプリエンプティブに実行されることを引き起こすステップ
をさらに含む、請求項38に記載の方法。
【請求項４０】
前記所与のアシスタントデバイスが前記スマートデバイスをローカルに制御するために好ましいとの決定に基づいて、前記特定の3Pアダプタが、前記スマートデバイスのうちの他のものを除外して、前記所与のアシスタントデバイスのみにダウンロードされる、請求項38または39に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
人間は、本明細書では「自動アシスタント」と呼ぶ、インタラクティブソフトウェアアプリケーションとのヒューマンコンピュータインタラクションに携わることができる。たとえば、人間(自動アシスタントと対話しているとき、「ユーザ」と呼ぶことがある)は、1つもしくは複数のスマートデバイスを制御するために、および/または1つもしくは複数の他の機能を行うために、自動アシスタントに応答出力を生成および提供させることができる入力を、自動アシスタントに与えることがある。ユーザによって与えられた入力は、たとえば、場合によっては、テキスト(または、他の意味表現)に変換され、次いでさらに処理され得る、(たとえば、タッチスクリーンを介した)タッチ入力、(たとえば、カメラを介して検出された)ジェスチャー、および/または口頭の自然言語入力(すなわち、マイクロフォンを介して検出された発話)であり得る。
【０００２】
多くの場合、自動アシスタントは、アシスタントクライアントデバイスによってローカルに実行され、ユーザと直接関わり合う、自動アシスタントクライアント、ならびに、自動アシスタントクライアントによるユーザの入力への応答を助けるために、クラウドのよりロバストなリソースを活用する、クラウドベースの対応部分を含む。たとえば、自動アシスタントクライアントは、クラウドベースの対応部分に、ユーザの口頭発話の録音(または、そのテキスト変換)、および場合によっては、ユーザのアイデンティティ(たとえば、資格情報(credential))を示すデータを与えることができる。クラウドベースの対応部分は、クエリに対して様々な処理を行い、自動アシスタントクライアントに結果を返し、次いで、自動アシスタントクライアントが、対応する出力をユーザに与え得る。
【０００３】
多数のユーザは、複数のクライアントデバイスを使用して、自動アシスタントに関与することがある。たとえば、一部のユーザは、クライアントデバイスの中でも、1つまたは複数のスマートフォン、1つまたは複数のタブレットコンピュータ、1つまたは複数の車両コンピューティングシステム、1つまたは複数のウェアラブルコンピューティングデバイス、1つまたは複数のスマートテレビ、1つまたは複数のスタンドアロンアシスタント中心のインタラクティブスピーカー、1つまたは複数のスタンドアロンアシスタント中心のスピーカー付きインタラクティブディスプレイなど、クライアントデバイスの協調「エコシステム」を所有していることがある。ユーザは、(自動アシスタントクライアントがインストールされていると仮定して)、これらのクライアントデバイスのいずれかを使用して、自動アシスタントとのヒューマンコンピュータダイアログに携わることがある。場合によっては、これらのクライアントデバイスは、ユーザの主たる住居、2次的な住居、仕事場、および/または他の建造物に散在していることがある。たとえば、スマートフォン、タブレット、スマートウォッチなどのモバイルクライアントデバイスは、ユーザが身に着けていることがあり、かつ/またはどこでもユーザが最後にそれらを置いた所にあり得る。従来のデスクトップコンピュータ、スマートテレビ、およびスタンドアロンアシスタント中心のデバイスなど、他のクライアントデバイスは、より固定であり得るが、それでもなお、ユーザの自宅または仕事場内の様々な場所(たとえば、部屋)にあり得る。
【０００４】
ユーザ(たとえば、単一のユーザ、家族内の複数のユーザ、同僚、共同居住者など)が、クライアントデバイスの協調エコシステムのうちのいずれか1つの自動アシスタントクライアントを利用して、その自動アシスタントクライアントに関連付けられる複数のスマートデバイスのうちのいずれか1つを制御することを可能にするための技法が存在する。たとえば、ユーザは、クライアントデバイスの自動アシスタントクライアントに「リビングルームライトを消して」という口頭コマンドを出して、対応するスマートデバイス(すなわち、自動アシスタントクライアントにリンクされ、「リビングルーム」ライトというラベルが付けられたライト)をオフにさせることができる。
【０００５】
クライアントデバイスにおいて受信されたユーザ入力に応答して、スマートデバイスを制御することにおいて、多数の既存の技法は、インターネットを介して、リモート自動アシスタントサーバに、ユーザ入力に対応するデータを送信する。リモート自動アシスタントサーバは、データを処理して、要求に基づいて制御されることになるスマートデバイスを決定し、インターネットを介して、そのスマートデバイスに関連付けられた別個のパーティ(たとえば、そのスマートデバイスのメーカー)のサーバに要求を送信する。別個のパーティのサーバは、要求を受信し、次いで、インターネットを介して、(たとえば、BLE、Z-Wave、ZigBeeなどの場合には)スマートデバイスとともに存在するハブを通して送信するか、(たとえば、Wi-Fi、およびハブを必要としない他のスマートデバイスの場合には)IP接続を介して直接スマートデバイスに送信するかにかかわらず、対応するコマンドをスマートデバイスに送信する。しかしながら、そのような技法は、高レイテンシ、低信頼性、および/またはネットワークリソースの過剰消費などの欠点を示す。たとえば、高レイテンシは、リモートアシスタントサーバから別個のパーティのサーバへの要求の送信の結果であり得、この結果は、リモートアシスタントサーバおよび別個のパーティのサーバが互いに地理的に近接していないことによって、悪化することが多い。また、たとえば、低信頼性は、たとえば、サーバ機能停止、ネットワーク損失などのために、別個のパーティのサーバが応答できないことに起因することがある。さらに、そのような技法によって、計算および/またはネットワークリソースの負担が生じ得る。
【０００６】
スマートデバイスの制御のための他の手法もまた、欠点を示すことがある。たとえば、いくつかの技法は、1つまたは複数の標準プロトコルのみを利用する中央ハブを利用することができる。しかしながら、そのような標準プロトコルは、標準プロトコルの隅々が不特定である(unspecified corners)ために失敗することがあり、標準プロトコルに完全に適合することができないスマートデバイスのために失敗することがあり、いずれかの標準プロトコルを遵守することができないスマートデバイスのために失敗し、かつ/または、スマートデバイスメーカーによるスマートデバイスのよりきめの細かい制御を抑制することがあり、それによって、スマートデバイスの準最適な性能につながる。さらに、スマートデバイスのファームウェア更新は、中央ハブとの統合を乱すことがある。またさらに、中央ハブの障害、および/または中央ハブの配置からの不十分な信号品質は、中央ハブが様々なスマートデバイスをローカルに制御できないことにつながり得る。
【発明の概要】
【課題を解決するための手段】
【０００７】
本明細書で説明する様々な実装形態は、対応するスマートデバイスに送信されるとき、対応するスマートデバイスにおいて、または対応するスマートデバイスによって直接制御された対応する追加のスマートデバイスにおいて、状態変化を実施するために、対応するスマートデバイスによって直接解釈可能である、固有の制御コマンドを、アシスタントクライアントデバイスにおいてローカルに生成することに関する。それらの様々な実装形態のうちのいくつかでは、アシスタントクライアントデバイスは、複数のサードパーティ(3P)アダプタ、および/またはファーストパーティ(1P)アダプタをローカルに記憶する。サードパーティまたは3Pは、本明細書で使用する場合、言及されている自動アシスタントを制御するパーティとは異なるパーティに言及する。ファーストパーティまたは1Pは、本明細書で使用する場合、言及されている自動アシスタントを制御するパーティに言及する。
【０００８】
アダプタの各々は、対応するパーティによって提供され得、アシスタントクライアントデバイスによって実行されるとき、汎用スマートデバイス制御コマンドを処理して、固有の制御コマンドを生成することができ、固有の制御コマンドが、パーティの少なくとも1つの対応するスマートデバイスにローカルに送信されるとき、対応するスマートデバイスにおいて、または(たとえば、固有の制御コマンドが、パーティのハブ/ブリッジに送信され、次いで、ハブ/ブリッジが、固有の制御コマンドに基づいて、1つまたは複数の追加のスマートデバイスを制御する状況において)対応するスマートデバイスによって直接制御された対応する追加のスマートデバイスにおいて、状態変化を実施するために、対応するスマートデバイスによって直接解釈可能であるように、各々調整される。たとえば、3Pアダプタは、3Pによって提供されたJavaScript(または、他のインタープリタ型プログラミング言語)によって実装され得、汎用スマートデバイス制御コマンドを、3Pのプロトコルスイートに適合する固有の制御コマンドに翻訳することができる。汎用スマートデバイス制御コマンドは、本明細書で使用する場合、スマートデバイスと、スマートデバイスにおいて変更されることになる状態とを伝えるが、スマートデバイスに送信される場合、状態が変更されることを引き起こさない、コマンドに言及し得る。汎用スマートデバイス制御コマンドは、自動アシスタントのスキーマに適合することができる。たとえば、汎用スマートデバイス制御コマンドは、意図(たとえば、オン/オフにする、調光する、増す、減らす)を定義し、スマートデバイス(たとえば、スマートデバイスの一意の識別子)を定義し、スマートデバイスのためのサードパーティ(たとえば、サードパーティのための一意の識別子)、および/または意図のための1つもしくは複数のさらなるパラメータ(たとえば、どのくらい調光するか、何を増す/減らすかなど)を定義する、構造化コマンド(structured command)であり得る。3Pアダプタは、自動アシスタントクライアント内のコンテナにおいて実行することができ、説明したように、汎用スマートデバイス制御コマンドを処理することができ、さらに場合によっては、自動アシスタントのスキーマを使用して(すなわち、3P固有のイベントフォー
マットから自動アシスタントスキーマに翻訳して)、自動アシスタントクライアントにイベントを報告することができる。
【０００９】
アダプタの各々は、アシスタントクライアントデバイスにおいてローカルに、アシスタントクライアントデバイスにおいて利用可能な2つ以上の通信チャネルのうちの少なくとも1つの対応する通信チャネルに割り当てられ得る。たとえば、第1の3Pアダプタは、利用可能な通信チャネルのうちのBluetooth無線チャネルに割り当てられ得、結果として、Bluetooth無線チャネルが、第1の3Pアダプタによって生成された固有の制御コマンドを送信するために利用され得る。また、たとえば、第2の3Pアダプタは、利用可能な通信チャネルのうちのWi-Fi無線チャネルに割り当てられ得、結果として、Wi-Fi無線チャネルが、第2の3Pアダプタによって生成された固有の制御コマンドを送信するために利用され得る。また、たとえば、第3の3Pアダプタは、利用可能な通信チャネルのうちの低速ワイヤレスパーソナルエリアネットワーク無線チャネルに割り当てられ得、結果として、そのチャネルが、第2の3Pアダプタによって生成された固有の制御コマンドを送信するために利用され得る。また別の例として、第4の3Pアダプタは、Bluetooth無線チャネルとWi-Fi無線チャネルの両方に割り当てられ得、結果として、固有の制御コマンドが、それらのチャネルのいずれか(または両方)上で送信され得る。場合によっては、同じ固有の制御コマンドが、(いずれかのチャネルを介して、制御コマンドを受信することができる)所与の3Pスマートデバイスの同じ制御を実施するために、いずれかのチャネル上で送信され得る。各通信チャネルが、異なる無線(または、無線の異なるサブセット)を利用することができるが、所与の無線が、場合によっては、複数の利用可能なプロトコルスイートのうちのいずれか1つを介して送信するために利用され得ることに留意されたい。たとえば、Wi-Fi無線チャネルは、TCPを使用して、UDPを使用して、またはそれらの変形形態(たとえば、アプリケーション層など、TCPまたはUDPの1つまたは複数の層における変形形態)を使用して、データを送信するために利用され得る。
【００１０】
各3Pアダプタが、クライアントデバイスの対応する通信チャネルに割り当てられ、その対応する通信チャネルが、3Pアダプタによって生成された固有の制御コマンドを送信するために利用されるが、3Pアダプタは、場合によっては、対応する通信チャネルに直接アクセスすることを防止され得る。むしろ、対応する通信チャネルへのアクセスは、自動アシスタントクライアントによって制御され得、自動アシスタントクライアントは、場合によっては、対応する通信チャネルを介して固有の制御コマンドを送信する前に、固有の制御コマンドの1つまたは複数の検証を行うことができる。たとえば、対応する通信チャネルを介した固有の制御コマンドの送信は、固有の制御コマンドが、そのための固有の制御コマンドが生成された対応する汎用スマートデバイス制御コマンドにおいて識別されたスマートデバイスのみにアドレス指定されることを、自動アシスタントクライアントによって検証することを条件とし得る。そのような検証によって、汎用スマートデバイス制御コマンドによって指定されないスマートデバイスの意図的な、または意図的でない制御を防止することができる。追加または代替として、そのような検証によって、Bluetoothメッシュネットワークをメッセージであふれさせて、動作不可能にすることなど、他のタイプの偶然の、または悪意のある挙動を防止することができる。
【００１１】
アダプタの各々は、インタープリタ型プログラミング言語を利用して、汎用スマートデバイス制御コマンドを、アダプタに固有である対応する固有の制御コマンドに変換することができる。3Pアダプタによって生成された固有の制御コマンドは、3Pアダプタのプロトコルスイートに適合し、それによって、3Pの各々が、標準プロトコルスイート、標準プロトコルスイートの変形形態、および/またはそれら自体のプロプライエタリなプロトコルスイートを利用することを可能にする。たとえば、第1の3Pアダプタは、業界標準として定義される第1のプロトコルスイートに完全に適合する、1つまたは複数の固有の制御コマンドを生成することができる。第2の3Pアダプタは、第1のプロトコルスイートに対する1つまたは複数の変形形態を含む、1つまたは複数の固有の制御コマンドを生成することができる。たとえば、プロトコルスイートの1つまたは複数の層は、業界標準として定義された第1のプロトコルスイートの対応する層とは異なり、したがってそれに適合しないように、第2の3Pによって適応され得る。第3の3Pアダプタは、対応する3Pにとって独自仕様(proprietary)であり、いかなる業界標準プロトコルスイートにも完全に適合しない、1つまたは複数の固有の制御コマンドを生成することができる。
【００１２】
したがって、本明細書で説明する3Pアダプタは、対応する3Pによって、対応するプロトコルスイートに合わせて調整され得る。これによって、対応する固有の制御コマンドが、標準プロトコルの隅々が不特定であるために、標準プロトコルに完全に適合することができず、かつ/またはいかなる標準プロトコルを遵守することもできないときでも、アシスタントクライアントデバイスが、対応する固有の制御コマンドを送信することが可能になる。したがって、アシスタントクライアントデバイスは、より大量のスマートデバイスのローカル制御をサポートすることができる。その上、これによって、3Pが、対応するスマートデバイスの制御を可能にする3Pアダプタを実装することが可能になり、その場合、制御は、標準プロトコルのみを利用して利用可能になるものよりもきめの細かいものである。このことは、対応するスマートデバイスのより最適なローカル制御につながり得る。たとえば、このことは、標準プロトコルが代わりに利用された場合に利用可能であるものよりも、ユーザ要求に(たとえば、色または輝度に関して)より適合する、スマートライトからのライト出力のレンダリングにつながり得る。さらに、3Pアダプタは、周期的に、オンデマンドで、および/または他の間隔で更新され得、それによって、対応する3Pが、それらの対応するスマートデバイスのファームウェア更新に適合する3Pアダプタを実装することが可能になり、そうでない場合に、ファームウェア更新および中央ハブによって利用された標準プロトコルに互換性がなかった場合に生じることになるエラーが防止される。またさらに、様々なスマートデバイスのローカル制御が、協調エコシステム内の複数のアシスタントクライアントデバイスのうちのいずれか1つを介して達成され得、それによって、複数のスマートデバイスを制御するために、単一の中央スマートハブのみに依拠するとき、接続性の懸念、電源障害の懸念、または他の障害の懸念が軽減される。
【００１３】
いくつかの実装形態では、3Pアダプタは、クライアントデバイスのための3Pのスマートデバイスの登録に応答して、リモートサーバから、アシスタントクライアントデバイスにダウンロードされる。たとえば、3Pのスマートデバイスは、複数のアシスタントクライアントデバイスの各々に関連付けられたユーザアカウントのために、ローカルに、かつ/または非ローカルに登録され得、それに応答して(および、場合によっては登録手順中に、および、場合によっては完全登録前に)、3Pのための3Pアダプタが、それらのクライアントデバイスによる実行のための、それらのアシスタントクライアントデバイスにおける3Pアダプタのローカル記憶のために、それらのアシスタントクライアントデバイスにプッシュされ得る。3Pアダプタをアシスタントクライアントデバイスにおいてローカルに記憶させることによって、クライアントデバイスにおける3Pアダプタの高速な実行(および、本明細書で説明するようなプリエンプティブ実行さえも)が生じ得る。その上、対応する3Pスマートデバイスの登録に応答して(たとえば、場合によっては、登録手順中に)3Pアダプタをダウンロードすることによって、クライアントデバイスは、利用可能な3Pアダプタのサブセットのみ(たとえば、クライアントデバイスのアカウントに登録されたスマートデバイスに対応するもののみ)を記憶することができ、それによって、登録されていないスマートデバイスのための1つまたは複数の(たとえば、いずれかの)3Pアダプタをローカルに記憶しないことによって、アシスタントクライアントデバイスにおいて利用可能な、多くの場合に限られたローカル記憶空間が節約される。
【００１４】
さらに、いくつかの実装形態では、3Pアダプタは、ユーザアカウントに関連付けられた複数のアシスタントクライアントデバイスのサブセットのみに(たとえば、1つのみに)ダウンロードされ得る。それらの実装形態のうちのいくつかでは、3Pアダプタは、対応する3Pスマートデバイスとの対応する通信チャネルのための最も強い信号強度を有する、それらのアシスタントデバイスにダウンロードされる。たとえば、Bluetooth通信チャネルに割り当てられる特定の3Pアダプタは、所与のアシスタントクライアントデバイスにおける、および所与のアシスタントクライアントデバイスと3Pのスマートデバイスとの間の、Bluetooth通信チャネルのための信号強度が、1つまたは複数の基準を満たすことに基づいて、ユーザアカウントに関連付けられた所与のアシスタントクライアントデバイスにおいてダウンロードされ得る。たとえば、1つまたは複数の基準は、信号強度が、ユーザアカウントに関連付けられたすべてのアシスタントクライアントデバイスの中で、最大の信号強度であることなど、しきい値を満たすことを含み得る。そのような事例では、特定の3Pアダプタは、場合によっては、ユーザアカウントに関連付けられたアシスタントクライアントデバイスのうちのいかなる他のものにもダウンロードされることなく、所与のアシスタントクライアントデバイスにダウンロードされ得る。これらおよび他の方法では、ユーザアカウントに関連付けられた異なるアシスタントクライアントデバイスは、信号強度および/または他の基準に基づいて、3Pアダプタの異なるサブセットをダウンロードすることができる。これによって、アシスタントクライアントデバイスの各々における各3Pアダプタの記憶を必要とすることなく、ユーザアカウントに関連付けられたアシスタントクライアントデバイスが、多種多様な3Pアダプタを集合的にサポートすることが可能になり得る。このことは、アシスタントクライアントデバイスにおいて利用可能な、多くの場合に限られたローカル記憶空間に鑑みて、特に有益であり得る。たとえば、そのような技法がなければ、所与のアシスタントクライアントデバイスは、ユーザアカウントのために必要とされたすべての3Pアダプタを記憶するために十分なローカル記憶を有していないことがある。しかしながら、そのような技法を利用することによって、必要とされた3Pアダプタを、ユーザアカウントに関連付けられた複数のアシスタントクライアントデバイスの記憶の間でインテリジェントに分散させることが可能になり得る。いくつかの実装形態では、ユーザアカウントに関連付けられたアシスタントクライアントデバイスの各々の信号強度を示すデータが(ある場合)、それらのデバイスによって、リモートサーバに、あるいはアシスタントクライアントデバイスのうちの1つまたは複数に与えられ得る。サーバおよび/またはアシスタントクライアントデバイスは、どのアシスタントクライアントデバイスがどの3Pアダプタを受信するべきであるかを決定することにおいて、そのデータ、および1つまたは複数の基準(たとえば、上記で説明した基準)を利用することができる。次いで、対応する3Pアダプタが、対応するクライアントデバイスにプッシュされ得るか、または、対応する3Pアダプタを要求もしくは検索す���ことを、対応するクライアントデバイスに行わせるために、対応するクライアントデバイスにデータが送信され得る。
【００１５】
その上、3Pアダプタがアシスタントクライアントデバイスにダウンロードされる実装形態のうちのいくつかでは、アシスタントクライアントデバイスは、場合によっては、ローカルに記憶された3Pアダプタのうちの1つまたは複数(たとえば、すべて)をプリエンプティブに実行することができる。3Pアダプタをプリエンプティブに実行することは、本明細書で使用する場合、対応する3Pのスマートデバイスに向けられ、実行中の3Pアダプタを使用して処理される、汎用スマートデバイス制御コマンドが生成されるより前に、3Pアダプタを実行することに言及する。アシスタントクライアントデバイス上で3Pアダプタをプリエンプティブに実行することは、アシスタントクライアントデバイスのインメモリキャッシュに3Pアダプタを少なくともロードすることを含み得る。3Pアダプタをプリエンプティブに実行することは、3Pアダプタを使用して固有の制御コマンドを生成することにおいて、ならびに結果として、固有の制御コマンドを送信すること、および対応する状態変化を実施することにおいて、(3Pアダプタをプリエンプティブに実行しない場合と比較して)レイテンシを低減することができる。したがって、スマートデバイスにおける状態変化が、低減されたレイテンシとともに実施され得る。
【００１６】
いくつかの実装形態では、アシスタントクライアントデバイスにローカルにダウンロードされたすべての3Pアダプタが、クライアントデバイスによってプリエンプティブに実行される。いくつかの他の実装形態では、利用可能な3Pアダプタのサブセットのみが、メモリ制約、プロセッサ制約、および/または他の留意事項に鑑みて、所与の時間にプリエンプティブに実行される。それらの他の実装形態のうちのいくつかでは、所与の時間にプリエンプティブに実行されるサブセットは、1つまたは複数の動的基準に基づき得る。1つまたは複数の動的基準は、クライアントデバイスにおける特定の3Pアダプタの対応する利用の新しさ、クライアントデバイスと特定の3Pアダプタに対応する特定のスマートデバイスとの間の、通信チャネルのための信号強度、時刻、および/または曜日を含み得る。たとえば、N個の直近に利用された(すなわち、固有の制御コマンドを生成することにおいて利用された)3Pアダプタが、所与のアシスタントクライアントデバイスにおいて実行され得る。また、たとえば、特定の3Pアダプタは、1つまたは複数の時間的期間(たとえば、時刻および/または曜日)の間に、それらの時間的期間の間またはその近くの特定の3Pアダプタの利用の1つまたは複数の過去の発生に基づいて、所与のアシスタントクライアントデバイスにおいて実行され得る。また別の例として、Bluetooth通信チャネルに割り当てられる特定の3Pアダプタは、所与のアシスタントクライアントデバイスにおける、およびアシスタントクライアントデバイスと3Pのスマートデバイスとの間の、Bluetooth通信チャネルのための信号強度が、しきい値(たとえば、固定しきい値、または他のアシスタントクライアントデバイスに対するしきい値)を満たすことに基づいて、所与のアシスタントクライアントデバイスにおいてプリエンプティブに実行され得る。任意の所与の時間に、エコシステムにおける異なるアシスタントクライアントデバイスが、たとえば、それらのデバイスに特定化される1つまたは複数の基準に基づいて、1つまたは複数の異なるプリエンプティブに実行中のアダプタを有し得ることは、本明細書の前述および/または他の説明から諒解されよう。たとえば、所与の時間に、第1のアシスタントクライアントデバイスは、アダプタA、B、C、およびDをプ
リエンプティブに実行中であり得-第2のアシスタントクライアントデバイスは、アダプタC、D、E、およびFをプリエンプティブに実行中であり得る。
【００１７】
いくつかの実装形態では、汎用スマートデバイス制御コマンドは、ボイス入力、タッチ入力、自動アシスタントルーチンのトリガリング、別の非アシスタントデバイスからの信号、および/または他の信号に応答して生成される。たとえば、所与のアシスタントクライアントデバイスにおいて識別された汎用スマートデバイス制御コマンドは、所与のアシスタントクライアントデバイスにおいて受信されたボイス入力に応答して生成され得る。たとえば、所与のアシスタントクライアントデバイスは、ボイス入力に対応するオーディオデータを、リモートアシスタントサーバに送信し、それに応答して、汎用スマートデバイス制御コマンドを受信することができる(たとえば、リモートアシスタントサーバは、ボイス入力を処理して、ボイス入力が汎用スマートデバイス制御コマンドに対応すると決定することができる)。また、たとえば、所与のアシスタントクライアントデバイスは、(たとえば、ローカルボイステキストプロセッサ、および/または自然言語理解エンジンを使用して)それ自体でボイス入力を処理して、汎用スマートデバイス制御コマンドをローカルに生成することができる。別の例として、所与のアシスタントクライアントデバイスにおいて識別された汎用スマートデバイス制御コマンドは、所与のアシスタントクライアントデバイスにおいて受信されたタッチ入力に応答して生成され得る。たとえば、所与のアシスタントクライアントデバイスは、そのタッチセンシティブスクリーン上で、スマートデバイスの制御のためのインタラクティブグラフィカルインターフェース要素(たとえば、オン/オフ要素、スマートライトのための調光器要素、スマートサーモスタットのための温度調節要素など)をレンダリングすることができ、インタラクティブグラフィカルインターフェース要素とのインタラクションを、対応する汎用スマートデバイス制御コマンドへと直接解釈することができる。また別の例として、汎用スマートデバイス制御コマンドは、汎用スマートデバイス制御コマンドを含む自動アシスタントルーチンのトリガリングに応答して、(ローカルに、またはリモートで)生成され得る。自動アシスタントルーチンは、ルーチンに割り当てられるボイス入力(たとえば、スマートデバイス制御アクションを含む複数の個別のアクションをトリガする「おはよう」などのショートカットフレーズ)、ルーチンのための仮想もしくは物理的ボタンとのインタラクション、いくつかの時間的条件の発生、および/または他のトリガリング条件の発生の検出に応答してトリガされ得る。
【００１８】
いくつかの実装形態では、固有の制御コマンドを生成するため、および/または固有の制御コマンドを対応するスマートデバイスに送信するために、利用可能なクライアントデバイスのエコシステムから、特定のアシスタントクライアントデバイスを選択するために、1つまたは複数の基準が利用される。それらの実装形態のうちのいくつかでは、特定のアシスタントクライアントデバイスは、高信頼通信チャネルが特定のアシスタントクライアントデバイスと対応するスマートデバイスとの間に確立されることに基づいて選択される。それらの実装形態のいくつかのバージョンでは、特定のアシスタントクライアントデバイスは、特定のアシスタントクライアントデバイスの通信チャネルが、対応するスマートデバイスとの少なくともしきい値信号強度を有することに基づいて、選択され得る。たとえば、しきい値信号強度は、固定信号強度、または、エコシステムの他のアシスタントクライアントデバイスの信号強度に対する信号強度であり得る。たとえば、特定のクライアントデバイスは、スマートデバイスを制御するための通信チャネルを介した、特定のクライアントデバイスとスマートデバイスとの間の信号強度が、エコシステムのすべてのデバイスの中で最大であることに基づいて、スマートデバイスを制御するために選択され得る。
【００１９】
一例として、汎用スマートデバイス制御コマンドは、最初に第1のアシスタントクライアントデバイスにおいて識別され得、汎用スマートデバイス制御コマンドは、制御されることになる特定のスマートデバイスを指定することができる。第1のアシスタントクライアントデバイスは、高信頼通信チャネルが第1のアシスタントクライアントデバイスと特定のスマートデバイスとの間に確立されないと決定することができる。たとえば、特定のスマートデバイスは、Bluetooth通信チャネルを介して制御されることになるものであり得、第1のアシスタントクライアントデバイスは、特定のスマートデバイスが、そのBluetooth無線を介して検出可能でないこと、または、Bluetooth無線を介した第1のアシスタントクライアントデバイスと特定のスマートデバイスとの間の信号強度が、しきい値を満たすことができないことを決定することができる。それに応答して、第1のアシスタントクライアントデバイスは、ローカルネットワーク(たとえば、アシスタントクライアントデバイスの間で確立された、Wi-Fiまたはメッシュネットワーク)上で、スマートデバイスへの確立された高信頼通信チャネルを有する第2のアシスタントクライアントデバイスに、汎用スマートデバイス制御コマンドを送信することができる。次いで、第2のアシスタントクライアントデバイスは、対応するローカルアダプタを使用して、汎用スマートデバイス制御コマンドを対応する固有のコマンドに翻訳し、対応する固有のコマンドを特定のスマートデバイスに送信することができる。代替的に、第1のアシスタントクライアントデバイスは、その対応するローカルアダプタを利用して、対応する固有のコマンドを生成し、汎用スマートデバイス制御コマンドを送信する代わりに、対応する固有のコマンドを第2のアシスタントクライアントデバイスに送信することができる。
【００２０】
この例を続けると、第1のアシスタントクライアントデバイスは、場合によっては、アシスタントクライアントデバイスにおいてローカルに記憶された、クライアントデバイスからスマートデバイスへのマッピングに依拠して、第2のアシスタントクライアントデバイスを、スマートデバイスへの確立された高信頼通信チャネルを有するものであるとして解決することができる。クライアントデバイスからスマートデバイスへのマッピングは、エコシステムのクライアントデバイスを定義することができ、アシスタントクライアントデバイスの各々について、そのためにアシスタントクライアントデバイスが対応する高信頼通信チャネルを有する、対応するスマートデバイスを定義することができ、場合によっては、アシスタントクライアントデバイスとスマートデバイスとの間の信号強度を定義することができる。マッピングは、アシスタントクライアントデバイスによって報告された、対応するデータ(たとえば、検出されたデバイス、信号強度)に基づいて生成され得、周期的および/または非周期的間隔で更新され得る。リモート自動アシスタント構成要素は、場合によっては、エコシステムのアシスタントクライアントデバイスから対応するデータを受信し、マッピングを更新し、更新されたマッピングを、エコシステムのアシスタントクライアントデバイスに送信することができ、エコシステムのアシスタントクライアントデバイスは、そのマッピングをローカルに記憶し、ローカルに利用する。第1のアシスタントクライアントデバイスは、たとえば、対応するユーザ入力が第1のアシスタントクライアントデバイスにおいて受信されること、および/または、汎用スマートデバイス制御コマンドが第1のアシスタントクライアントデバイスにおいてローカルに生成されることに基づいて、汎用スマートデバイス制御コマンドを最初に識別することができる。汎用スマートデバイス制御コマンドがリモート自動アシスタント構成要素によって生成される、いくつかの実装形態では、そのような構成要素は、クライアントデバイスからスマートデバイスへのマッピングにアクセスし、最初に汎用スマートデバイス制御コマンドを第2のアシスタントクライアントデバイスにアドレス指定し、それによって、汎用スマートデバイス制御コマンドが、第1のアシスタントクライアントデバイスを通してルーティングされることなく、第2のアシスタントクライアントデバイスに直接与えられることを引き起こすことができる。
【００２１】
本明細書で説明する様々な実装形態は、追加または代替として、ユーザのアカウントのためのスマートデバイスを発見、プロビジョニング、および/または登録することにおいて、ローカルアシスタントクライアントデバイスを利用することに関する。いくつかの実装形態では、登録されていないスマートデバイスについて、1つまたは複数の通信チャネル(たとえば、Wi-Fi、Bluetooth、および/またはその他)をスキャンすることを、アシスタントクライアントデバイスのエコシステムのうちの各アシスタントクライアントデバイスに行わせることによって、まだ登録されていないスマートデバイスが発見され得る。たとえば、Wi-Fiの場合、アシスタントクライアントデバイスの各々は、そのための対応するアダプタが利用可能である特定のスマートデバイスについてフィルタリングするために、場合によっては、サービスセット識別子(SSID)および/または基本サービスセット識別子(BSSID)を使用して、いずれかの未登録デバイスを識別するために、それぞれのWi-Fi無線をスキャンすることができる。別の例として、Bluetoothの場合、アシスタントクライアントデバイスの各々は、そのための対応するアダプタが利用可能である特定のスマートデバイスについてフィルタリングするために、場合によっては、識別子を利用して、いずれかのペアリングされていないスマートデバイスを識別するために、それぞれのBluetooth無線をスキャンすることができる。発見は、周期的もしくは非周期的間隔で、またはユーザ要求(たとえば、ボイス要求、アシスタントのためのスマートフォンアプリを介して開始された要求など)に応答して行われ得る。
【００２２】
発見されると、(たとえば、Bluetoothの場合には)アシスタントクライアントデバイスのうちの少なくとも1つとペアリングすること、および/または、アシスタントクライアントデバイスがすでに接続されているセキュアWi-Fiネットワークに接続することを、スマートデバイスに行わせることによって、スマートデバイスがプロビジョニングされ得る。プロビジョニング後、スマートデバイスによって送信されたデータが、アシスタントクライアントデバイスにおいて受信され、アシスタントクライアントデバイスのローカルアダプタを使用して処理されて、自動アシスタントのスキーマにおいて登録データが生成され得る。たとえば、スマートデバイスによって送信されたデータは、対応する3Pのためのプロトコルスイートにおけるものであり得、3Pアダプタによって、自動アシスタントに登録するためにスキーマへと解釈され得る。登録データは、スマートデバイス、アシスタントクライアントデバイス、ならびにスマートデバイスおよびアシスタントクライアントデバイスの様々なプロパティ(たとえば、名前、位置など)を定義する、ホームグラフ(home graph)または他の構造に、スマートデバイスを追加するために、自動アシスタントによって利用され得る。場合によっては、ユーザ入力が、アシスタントクライアントデバイスおよび/または他のクライアントデバイスを介して受信され得、登録データを補足するために利用され得る。たとえば、ユーザ入力は、スマートデバイスのための1つまたは複数の、ユーザによって与えられたエイリアスを含み、ホームグラフ内に、スマートデバイスに関連して、それらのエイリアスを記憶することを可能にすることができる。
【００２３】
いくつかの実装形態では、登録データを生成するために利用されたローカルアダプタは、スマートデバイスのパーティに固有であり、場合によっては、スマートデバイスの発見および/またはプロビジョニングに応答して、アシスタントデバイスにおいてダウンロードされる。いくつかの実装形態では、エコシステムのアシスタントデバイスのうちの1つまたは複数を介して検出された、バイオメトリックデータが、ホームグラフに関連付けられたアカウントに対応することに基づいて、スマートデバイスがホームグラフ(または、他の構造)に割り当てられる。たとえば、スマートデバイスは、発見、プロビジョニング、および/または登録中に受信されたボイスデータが、アカウントに関連して記憶されたボイス認証データと一致することに基づいて、(たとえば、アシスタントクライアントデバイスのうちの1つまたは複数の別のアカウントに関連付けられた別のホームグラフではなく)ホームグラフに割り当てられ得る。たとえば、ボイスデータは、スキャンを要求することにおいて、および/または発見されたデバイスのためのエイリアスを与えることにおいて、ユーザによって与えられた口頭入力に基づき得る。顔、指紋など、他のバイオメトリック識別情報が、追加または代替として利用され得る。いくつかの実装形態では、登録されたスマートデバイスは、スマートデバイスにコマンドをローカルに送信することができるそれらのアシスタントクライアントデバイスに(たとえば、ホームグラフ内で)関連付けられ得る。たとえば、スマートデバイスとの通信が、短距離無線(たとえば、Bluetooth無線)を介して行われる場合、少なくとも(短距離無線を介したスマートデバイスへの対応する接続のための)対応する信号強度を有する、それらのアシスタントクライアントデバイスが、場合によっては、対応する信号強度の指示とともに、ホームグラフ内で指示され得る。そのような指示は、どのアシスタントクライアントデバイスが、固有の制御コマンドの生成、および/またはスマートデバイスへの固有の制御コマンドの送信において利用されるべきであるかを決定することにおいて使用され得る。
【００２４】
いくつかの実装形態では、登録されたスマートデバイスは、アシスタントクライアントデバイスの位置に基づく位置、およびそれらのアシスタントクライアントデバイスと登録されたスマートデバイスとの間の信号強度に(たとえば、ホームグラフ内で)、自動的に(たとえば、いかなるユーザ入力もなしに、または確認のユーザ入力のみで)関連付けられ得る。一例として、登録されたスマートデバイスと、ホームグラフ内で「オフィス」の位置を有する所与のアシスタントクライアントデバイスとの間の信号強度が、しきい値を満たし、かつ/または(すべてのアシスタントクライアントデバイスの中で)「最も強い」信号強度である場合、登録されたスマートデバイスは、ホームグラフ内の「オフィス」の位置を自動的に割り当てられ得る。別の例として、登録されたスマートデバイスが、登録されたスマートデバイスとアシスタントクライアントデバイスとの間で、ホームグラフ内の「洗濯室」の位置を有する他のスマートデバイスの信号強度と一致する(たとえば、そのしきい値パーセンテージ内である)信号強度を有する場合、登録されたスマートデバイスは、ホームグラフ内の「洗濯室」の位置を自動的に割り当てられ得る。たとえば、ホームグラフ内の既存のスマートデバイスが、手動でラベル付けされた「洗濯室」の位置、既存のスマートデバイスと第1のアシスタントクライアントデバイスとの間の第1の信号強度、および、既存のスマートデバイスと第2のアシスタントクライアントデバイスとの間の第2の信号強度を有すると仮定する。そのような事例では、新たに登録されたスマートデバイスと第1のアシスタントクライアントデバイスとの間の、第1の信号強度と一致する(たとえば、その5%、その10%、その15%、またはその他のしきい値内である)第3の信号強度と、第2の信号強度と一致する(たとえば、その5%、その10%、その15%、またはその他のしきい値内である)第4の信号強度とを有する、新たに登録されたスマートデバイスは、既存のスマートデバイスの同じ「洗濯室」の位置と、ホームグラフ内で新たに登録されたスマートデバイスに自動的に割り当てられた「洗濯室」の位置とを有すると仮定され得る。追加または代替として、様々な実装形態では、スマートデバイスのための信号強度は、スマートデバイスの位置がホームグラフ(または、他のトポロジー表現)内で更新されるべきであるか否かを決定するために、周期的に(または、他の規則的または不規則的な間隔で)解析され得る。たとえば、スマートプラグが、「オフィス」から「リビングルーム」に移動される場合、そのような変更が自動的に検出および更新され得る。また、たとえば、バッテリー電源式スマートデバイス、またはパッシブスマートデバイスが、環境のあちこちに容易に移動可能である場合、その位置変更が自動的に検出および更新され得る。これらおよび他の方法では、スマートデバイスの位置が、ホームグラフ内で自動的に決定され、割り当てられ得る。これによって、スマートデバイスを、位置固有の口頭発話(たとえば、「オフィス内のすべてのデバイスを消して」)に応答して制御可能であるようにすることができ、制御部が制御のための視覚的インターフェース内の適切な位置においてレンダリングされる(たとえば、スマートデバイスのための制御部を、「オフィス」サブタイトルまたは制御グループ内に入れる)ことを可能にすることができ、かつ/または、いくつかの口頭発話(たとえば、「バッテリー電源式スマートデバイスAはどこにあるか」?)に応答して、スマートデバイスの位置が含まれることを可能にすることができる。
【００２５】
いくつかの実装形態では、アクセスポイントをブロードキャスト中であるスマートデバイスが発見され、そのスマートデバイスは、アシスタントクライアントデバイスによって利用されるセキュアWi-Fiネットワークに接続されておらず、セキュアWi-Fiネットワークに接続するための資格情報を欠いているので、まだプロビジョニングされていない。それらの実装形態のうちのいくつかでは、クライアントデバイスのエコシステムのうちの、複数のアシスタントクライアントデバイスの各々が、そのそれぞれのWi-Fi無線のスキャニングを通して、アクセスポイントの利用可能性を検出した。それらの実装形態のいくつかのバージョンでは、単一のアシスタントクライアントデバイスが、スマートデバイスのアクセスポイントを介して、スマートデバイスに接続するために、および、セキュアWi-Fiネットワークに接続するための資格情報を、接続を介してスマートデバイスとセキュアに共有するために選択される。資格情報が共有されると、スマートデバイスは、セキュアWi-Fiネットワークに接続し、Wi-Fiネットワークを介した通信を通して登録され得る。単一のアシスタントクライアントデバイスが選択される、様々なバージョンでは、単一のアシスタントクライアントデバイスは、単一のアシスタントクライアントデバイスのためのヒューマンインタラクションデータに少なくとも部分的に基づいて選択される。たとえば、単一のアシスタントクライアントデバイスは、ユーザインターフェース入力が、しきい値時間量内に単一のアシスタントクライアントデバイスにおいて受信されていないことを、ヒューマンインタラクションデータが示すことに基づいて、および/または、単一のアシスタントクライアントデバイスが、アクセスポイントを検出した複数のアシスタントクライアントデバイスのうちのいずれかの他のものよりも低い頻度で利用されることを、ヒューマンインタラクションデータが示すことに基づいて選択され得る。これらおよび他の方法では、単一のクライアントデバイスは、進行中および/または今度のアシスタントインタラクションの中断が防止されるように選択され得、その理由は、単一のクライアントデバイスが、ローカルアクセスポイントに接続するとき、セキュアWi-Fiネットワークとのその接続を切断することになるからであり-また、単一のクライアントデバイスは、それが使用されていない、かつ/または(エコシステムの他のデバイスよりも)使用される可能性が低いことを示した基準に基づいて選択される。
【００２６】
上記の説明は、本開示のいくつかの実装形態のみの概観として提供される。それらの実装形態、および他の実装形態のさらなる説明について、本明細書でより詳細に説明する。
【００２７】
追加として、いくつかの実装形態は、1つまたは複数のコンピューティングデバイスの1つまたは複数のプロセッサを含み、そこで、1つまたは複数のプロセッサが、関連付けられたメモリ内に記憶された命令を実行するように動作可能であり、命令が、本明細書で説明する方法のいずれかの実行を引き起こすように構成される。いくつかの実装形態は、本明細書で説明する方法のうちの1つまたは複数を行うために、ローカルに記憶された命令を実行し、ローカルに記憶されたデータとインターフェースする、1つまたは複数のプロセッサをもつクライアントデバイスを含む。いくつかの実装形態はまた、本明細書で説明する方法のいずれかを行うために、1つまたは複数のプロセッサによって実行可能なコンピュータ命令を記憶する、1つまたは複数の非一時的コンピュータ可読記憶媒体を含む。
【００２８】
本明細書でより詳細に説明する上記の概念および追加の概念のすべての組合せが、本明細書で開示する主題の一部であるとして企図されることを諒解されたい。たとえば、本開示の最後に現れる請求される主題のすべての組合せが、本明細書で開示する主題の一部であるとして企図される。
【図面の簡単な説明】
【００２９】
【図１】本明細書で開示する実装形態が実装され得る、例示的な環境のブロック図である。
【図２】本明細書で開示する実装形態による、複数の異種のパーティからの複数のスマートデバイスを含み、その各々がスマートデバイスのうちの1つまたは複数をローカルに制御することができる、複数のアシスタントデバイスを含む、例示的な環境を示す図である。
【図３】図2のクライアントデバイスのうちの1つを使用して、図2の2つのスマート電球を制御する一例の状態図である。
【図４】図2の第1のクライアントデバイスから、図2の代替クライアントデバイスに、図2の別の電球を制御するための汎用スマートデバイス制御コマンドをルーティングする一例の状態図である。
【図５】本明細書で開示する様々な実装形態による、ローカルアシスタントクライアントデバイスを使用して、スマートデバイスを制御する例示的な方法を示すフローチャートである。
【図６】本明細書で開示する様々な実装形態による、ローカルアシスタントクライアントデバイスを使用して、スマートデバイスを制御する別の例示的な方法を示すフローチャートである。
【図７】本明細書で開示する様々な実装形態による、ローカルアシスタントクライアントデバイスを使用して、スマートデバイスを登録する例示的な方法を示すフローチャートである。
【図８】コンピューティングデバイスの例示的なアーキテクチャを示す図である。
【発明を実施するための形態】
【００３０】
スマートホームアラーム、スマートドアロック、スマートカメラ、スマートライト、スマートサーモスタット、スマート体重計、スマートベッド、スマートかんがいシステム、スマートガレージドアオープナー、スマートプラグ、スマートアプライアンス、スマートベビーモニター、スマート火災報知器、スマート水分検出器など、スマートネットワーク接続デバイス(本明細書では、スマートデバイス、またはモノのインターネット(IoT)デバイスとも呼ぶ)が普及している。複数のスマートデバイスが、自宅などの建造物の範囲内にあるか-あるいは、ユーザの主たる住居およびユーザの2次的な住居、ならびに/または勤務地など、複数の関連する建造物内にあることが多い。
【００３１】
さらに、場合によっては、1つまたは複数のリモート自動アシスタント構成要素と対話して、自動アシスタントの論理インスタンスを形成することができる、アシスタントクライアントを各々含む、アシスタントクライアントデバイスが普及している。アシスタントクライアントデバイスは、アシスタント機能のみに専念することができ(たとえば、アシスタントクライアントおよび関連するインターフェースのみを含み、アシスタント機能のみに専念する、スタンドアロンスピーカー、および/またはスタンドアロンオーディオ/ビジュアルデバイス)、または、他の機能に加えて、アシスタント機能を行うことができる(たとえば、複数のアプリケーションのうちの1つとして、アシスタントクライアントを含む、モバイルフォンまたはタブレット)。その上、いくつかのスマートデバイスは、アシスタントクライアントデバイスでもあり得る。たとえば、いくつかのスマートデバイスは、アシスタントクライアント、ならびにアシスタントクライアントのアシスタントインターフェースのためのユーザインターフェース出力および/または入力デバイスとして(少なくとも部分的に)働く、少なくともスピーカーおよび/またはマイクロフォンを含み得る。
【００３２】
スマートデバイスを自動アシスタントの対応する論理インスタンスに(および、場合によっては、個々のアシスタントクライアントデバイスに)関連付けるための、様々な技法が提案されている。たとえば、ユーザ、ユーザのグループ、アシスタントクライアントデバイス、および/またはアシスタントクライアントデバイスのグループ(たとえば、すべてが建造物内にある)が、(たとえば、1つまたは複数のデータベース内で)複数の異種のスマートデバイスとリンクされて、自動アシスタントを介したスマートデバイス(たとえば、その制御部)とのインタラクションが可能になり得る。たとえば、家庭内の複数のアシスタントクライアントデバイスの各々が、家庭内の複数の異種のスマートデバイスの各々とリンクされて、任意のユーザ(または、ユーザの限定グループ)が、複数の異種のスマートデバイスのうちのいずれか1つと対話するために、アシスタントクライアントデバイスのうちのいずれか1つとインターフェースすることが可能になり得る。
【００３３】
そのようなリンキングの一例は、ユーザにより作成され、かつ/または自動的に作成され得、様々なアシスタントクライアントデバイス、様々なスマートデバイス、各々のための識別子、および/または各々のための属性を定義し得る、デバイストポロジー表現(本明細書では「ホームグラフ」とも呼ぶ)である。たとえば、デバイスのための識別子は、その中にデバイスがある建造物の部屋(および/または、他のエリア)(たとえば、リビングルーム、キッチン)を指定することができ、かつ/または、デバイスのためのニックネームおよび/もしくはエイリアス(たとえば、ソファーのランプ、玄関ドアロック、寝室スピーカー、キッチンアシスタントなど)を指定することができる。このようにして、デバイスの識別子は、ユーザがそれぞれのデバイスに関連付ける可能性が高い、それぞれのデバイスの名前、エイリアス、および/または位置であり得る。
【００３４】
デバイストポロジー表現は、それぞれのデバイスに関連付けられた1つまたは複数のデバイス属性をさらに指定することができる。アシスタントクライアントデバイスのためのデバイス属性は、たとえば、アシスタントクライアントデバイスによってサポートされた1つまたは複数の入力および/または出力モダリティに関連付けられ得る。たとえば、スタンドアロンスピーカー専用アシスタントクライアントデバイスのためのデバイス属性は、そのデバイスが可聴出力を与えることが可能であるが、視覚出力を与えることが不可能であることを示すことができる。スマートデバイスのデバイス属性は、たとえば、制御され得る、スマートデバイスの1つまたは複数の状態を識別すること、スマートデバイスのためのファームウェアを製造、配布、および/または作成するパーティ(たとえば、3P)を識別すること、ならびに/あるいは、1Pまたは3Pによって提供された固定識別子など、スマートデバイスのための一意の識別子を識別することができる。本明細書で開示する様々な実装形態によれば、デバイストポロジー表現は、場合によっては、どのスマートデバイスが、どのアシスタントクライアントデバイスによってローカルに制御され得るか、ローカル制御可能なスマートデバイスのためのローカルアドレス(または、それらのスマートデバイスを直接ローカルに制御することができる、ハブのためのローカルアドレス)、アシスタントクライアントデバイスとスマートデバイスとの間のローカル信号強度および/または他のプリファレンスインジケータをさらに指定することができる。さらに、本明細書で開示する様々な実装形態によれば、デバイストポロジー表現(または、その変形形態)は、スマートデバイスをローカルに制御すること、および/またはローカルに登録することにおいて利用するために、複数のアシスタントクライアントデバイスの各々においてローカルに記憶され得る。
【００３５】
次に図1を参照すると、本明細書で開示する技法が実装され得る、例示的な環境が示されている。例示的な環境は、複数のクライアントコンピューティングデバイス1101〜N(本明細書では、単に「クライアントデバイス」とも呼ぶ)と、クラウドベース自動アシスタント構成要素120と、スマートデバイスシステム140A〜Nと、スマートデバイス145A〜Nと、3Pアダプタデータベース150と、クライアントデバイス1101〜Nのユーザのためのホームグラフ152とを含む。図1のクライアントデバイス1101〜Nおよびスマートデバイス145A〜Nは、(たとえば、ホームグラフ152および/または他のデバイストポロジーを介して)互いに少なくとも選択的に関連付けられる、クライアントデバイスおよびスマートデバイスを表す。たとえば、スマートデバイス145A〜Nは、すべて自宅に(たとえば、自宅のインテリアおよび/またはエクステリア内に)あり得、クライアントデバイス1101〜Nは、少なくとも時折、同じ自宅内にあり得、スマートデバイス145A〜Nおよびクライアントデバイス1101〜Nは、本明細書で説明するものなど、1つまたは複数の技法を利用して、互いにリンクされ得る。そのようなリンキングを通して、クライアントデバイス1101〜Nは、本明細書で説明する実装形態に従って、スマートデバイス145A〜Nをローカルに制御するために利用され得る。
【００３６】
クライアントデバイス1101〜Nのうちの1つまたは複数(たとえば、すべて)は、自動アシスタントクライアント1171〜Nのそれぞれのインスタンスを実行することができる。しかしながら、いくつかの実装形態では、クライアントデバイス1101〜Nのうちの1つまたは複数は、場合によっては、自動アシスタントクライアント1171〜Nのインスタンスを欠いていることがあり、それでも、1つまたは複数のスマートデバイスをローカルに制御および/または登録するためのエンジンおよびハードウェア構成要素(たとえば、アダプタインタラクションエンジン、アダプタ、無線、ルーティングエンジン、および/または登録エンジン)を含み得る。自動アシスタントクライアント1171〜Nのインスタンスは、対応するクライアントデバイス1101〜Nのオペレーティングシステムとは別個である(たとえば、オペレーティングシステムの「上に」インストールされている)アプリケーションであり得るか-または代替的に、対応するクライアントデバイス1101〜Nのオペレーティングシステムによって直接実装され得る。以下でさらに説明するように、自動アシスタントクライアント1171〜Nの各インスタンスは、場合によっては、クライアントデバイス1101〜Nのうちのいずれか1つのI/O構成要素111を介して、ユーザによって与えられた様々な要求に応答する際に、クラウドベース自動アシスタント構成要素120と対話することができる。さらに、以下でも説明するように、クライアントデバイス1101〜Nの他のエンジンは、場合によっては、クラウドベース自動アシスタント構成要素120と対話することができる。
【００３７】
1つまたは複数のクラウドベース自動アシスタント構成要素120は、図1の1051によって全体的に示された、1つまたは複数のワイドエリアネットワーク(たとえば、インターネット)を介して、クライアントデバイス1101〜Nに通信可能に結合される、1つまたは複数のコンピューティングシステム(総称して「クラウド」または「リモート」コンピューティングシステムと呼ぶ)上で実装され得る。たとえば、クラウドベース自動アシスタント構成要素120は、高性能サーバの1つまたは複数のクラスタによって実装され得る。クライアントデバイス1101〜Nが、ワイドエリアネットワーク1051にアクセスすることにおいて、および/または互いにローカルに通信することにおいて、1つまたは複数のローカルエリアネットワークを利用することができることに留意されたい。そのようなローカルエリアネットワークは、クライアントデバイス1101〜N間のWi-Fiネットワークおよび/またはメッシュネットワークを含み得る。
【００３８】
クラウドベース自動アシスタント構成要素120はまた、1つまたは複数のワイドエリアネットワークを介して、スマートデバイスシステム140A〜Nと通信可能に結合され得る。クラウドベース自動アシスタント構成要素120とスマートデバイスシステム140との通信可能な結合は、図1の1052によって全体的に示されている。さらに、スマートデバイスシステム140は、全体的に図1の1053によって全体的に示された1つまたは複数のワイドエリアネットワークを介して、1つまたは複数のスマートデバイス145A〜Nの対応するグループに各々通信可能に結合され得る。スマートデバイス145A〜Nが、ワイドエリアネットワーク1053にアクセスすることにおいて、1つまたは複数のローカルエリアネットワークを利用することができることに留意されたい。
【００３９】
スマートデバイスシステム140A〜Nの各々は、1Pまたは3Pシステムのいずれかであり得、各々は、1つまたは複数の対応するスマートデバイス145A〜Nと通信可能に結合され得る。たとえば、第1のスマートデバイスシステム140A〜Nは、第1の3Pによって制御され、第1のスマートデバイス145A1と通信可能に結合され得、第2のスマートデバイスシステム140は、第2の3Pによって制御され、第2のスマートデバイス145B1および第3のスマートデバイス145B2などと通信可能に結合され得る。
【００４０】
スマートデバイスシステム140は、それらのそれぞれのスマートデバイス145A〜Nを制御するために、それらのそれぞれのスマートデバイス145A〜Nにファームウェア更新を配信するために、それらのそれぞれのスマートデバイス145A〜Nのステータスを確認するなどのために、ワイドエリアネットワーク1053を介して、デバイス145A〜Nと通信することができる。たとえば、スマートデバイスシステム140のうちの所与の1つが、スマートデバイスの制御を可能にする、スマートデバイスシステムのための、モバイルアプリケーションを介したユーザ入力の受信に応答して、スマートデバイスを制御するために、スマートデバイス145A〜Nのうちの1つと通信することができる。
【００４１】
また、たとえば、スマートデバイスシステム140のうちの所与の1つが、クラウドベース自動アシスタント構成要素120からの要求に応答して、スマートデバイスを制御するために、スマートデバイス145A〜Nのうちの1つと通信することができる。たとえば、いくつかの技法によれば、ユーザは、I/O構成要素1111のマイクロフォンを介して与えられる「ソファーのライトを消して」という口頭入力など、スマートデバイスを制御するための要求を、クライアントデバイス1101の1つまたは複数のI/O構成要素1111を介して与えることができる。要求(たとえば、口頭入力、またはその変換)は、クライアントデバイス1101の自動アシスタントクライアント1171によって、ワイドエリアネットワーク1051を介して、クラウドベース自動アシスタント構成要素120に送信され得る。クラウドベース自動アシスタント構成要素120は、要求を処理して、要求に基づいて制御されることになるスマートデバイスを決定し、ワイドエリアネットワーク1052を介して、スマートデバイスシステム140A〜Nの各々に要求を送信することができ、スマートデバイスシステム140A〜Nの各々は、次に、ワイドエリアネットワーク1053を介して、対応するコマンドをスマートデバイスに送信する。しかしながら、本明細書で説明するように、そのような技法は、高レイテンシ、低信頼性、および/またはネットワークリソースの過剰消費などの欠点を示す。
【００４２】
本明細書で開示する実装形態は、いくつかのスマートデバイス制御要求のために、および/またはいくつかの状況において、そのような技法を依然として利用することができるが、本明細書で開示する様々な実装形態は、スマートデバイスを制御することにおいて、クラウドベース自動構成要素120とスマートデバイスシステム140の各々との間の通信、および/またはスマートデバイスシステム140とスマートデバイスとの間の通信を少なくとも選択的にバイパスすることができる。むしろ、それらの様々な実装形態は、スマートデバイスにおいて所望の状態変化を実施するために、スマートデバイスに(たとえば、ローカルエリアネットワーク、またはローカルピアツーピア接続を介して)ローカルに送信される固有の制御コマンドを、クライアントデバイス1101〜Nのうちの1つにおいてローカルに生成する。これによって、上述の技法の高レイテンシ、低信頼性、ネットワークリソースの過剰消費、および/または他の欠点を軽減することができる。
【００４３】
いくつかの実装形態では、複数のクライアントコンピューティングデバイス1101〜Nおよびスマートデバイス145A〜Nは、本明細書で説明する技法の実行を容易にするために、様々な方法で互いに関連付けられ得る。たとえば、いくつかの実装形態では、複数のクライアントデバイス1101〜Nおよびスマートデバイス145A〜Nは、1つまたは複数のLANを介して、および/あるいは1つまたは複数のピアツーピアネットワークを介して、通信可能に結合されることによって、互いに関連付けられ得る。これは、たとえば、複数のクライアントコンピューティングデバイス1101〜Nが、自宅、ビルなど、特定のエリアまたは環境にわたって展開される場合に当てはまることがある。追加または代替として、いくつかの実装形態では、複数のクライアントデバイス1101〜Nおよびスマートデバイス145A〜Nは、それらが、1人または複数のユーザ(たとえば、個人、家族、組織の従業員、他のあらかじめ定義されたグループなど)によって少なくとも選択的にアクセス可能である、クライアントデバイス1101〜Nおよびスマートデバイス145A〜Nの協調エコシステムのメンバーであることによって、互いに関連付けられ得る。それらの実装形態のうちのいくつかでは、クライアントデバイス1101〜Nおよびスマートデバイス145A〜Nのエコシステムは、ホームグラフ152および/または他のデバイストポロジーにおいて、手動でおよび/または自動的に互いに関連付けられ得る。たとえば、クライアントデバイス1101〜Nおよびスマートデバイス145A〜Nのうちの1つまたは複数は、本明細書で説明する登録技法を通して、互いに関連付けられ得る。
【００４４】
自動アシスタントクライアント1171〜Nのインスタンスは、1つまたは複数のクラウドベース自動アシスタント構成要素120とのそのインタラクションによって、ユーザの観点からすれば、ユーザがそれとのヒューマンコンピュータダイアログに携わり得る自動アシスタントの論理インスタンスであるように見えるものを形成し得る。たとえば、ユーザは、クライアントデバイス1101および自動アシスタントクライアント1171を使用して、またはクライアントデバイス110Nおよび自動アシスタントクライアント117Nを使用してのいずれでも、自動アシスタントの同じ論理インスタンスに関与することができる。自動アシスタントクライアント1171および117Nの特定のインスタンスは変動することがあり、ならびに/あるいは、異なるI/O構成要素1111および111Nを介して、ユーザインターフェース出力を与え、かつ/または異なるI/O構成要素1111および111Nを介して、異なるユーザインターフェース入力を受け入れることができる(たとえば、I/O構成要素1111はタッチスクリーンを含み得るが、I/O構成要素111Nは含まない)が、ユーザは、依然として事実上、自動アシスタントの同じ論理インスタンスに関与し得る。簡潔および簡単のために、本明細書で使用する「自動アシスタント」という用語は、クライアントデバイス110上で実行する自動アシスタントクライアント117と、場合によっては、(複数の自動アシスタントクライアント117の間で共有され得る)1つまたは複数のクラウドベース自動アシスタント構成要素120とを指すことになる。協調エコシステムの2つのクライアントデバイス1101および110Nが図1に示されているが、多数の追加のクライアントデバイスがエコシステム中に含まれ得ることは理解されよう。さらに、各々が異なるユーザ(たとえば、アカウント)および/または環境に関連付けられたクライアントデバイスの別個の協調エコシステムもまた提供されるようになること、ならびに、そのような別個の協調エコシステムもまた、クラウドベース自動アシスタント構成要素120と対話することができる(が、それらの別個のエコシステムのアカウントに合わせて調整されたインタラクションを伴う)ことは理解されよう。
【００４５】
クライアントデバイス1101〜Nは、たとえば、デスクトップコンピューティングデバイス、ラップトップコンピューティングデバイス、タブレットコンピューティングデバイス、モバイルフォンコンピューティングデバイス、ユーザの車両のコンピューティングデバイス(たとえば、車内通信システム、車内エンターテインメントシステム、車内ナビゲーションシステム)、スタンドアロンアシスタント中心のインタラクティブスピーカー、スタンドアロンアシスタント中心のスピーカー付きインタラクティブディスプレイ、スマートテレビなどのスマートアプライアンス、および/または、コンピューティングデバイスを含むユーザのウェアラブル装置(たとえば、コンピューティングデバイスを有するユーザの腕時計、コンピューティングデバイスを有するユーザの眼鏡、仮想または拡張現実コンピューティングデバイス)のうちの1つまたは複数を含み得る。追加および/または代替のクライアントコンピューティングデバイスが提供され得る。
【００４６】
上述のように、クライアントデバイス1101〜Nのうちの1つまたは複数は、場合によっては、自動アシスタントクライアント1171〜Nのそれぞれのインスタンスを含み得る。自動アシスタントクライアント1171〜Nは、I/O構成要素1111〜Nのマイクロフォンを介して検出された口頭入力、I/O構成要素1111〜Nのタッチスクリーンディスプレイを介して受信されたタッチ入力、I/O構成要素1111〜Nのカメラを介して検出された画像など、それぞれのI/O構成要素1111〜Nの入力デバイスから受信されたユーザ入力を各々処理することができる。さらに、自動アシスタントクライアント1171〜Nの各々は、場合によっては、I/O構成要素1111〜Nのスピーカーおよび/またはタッチスクリーンディスプレイなど、それぞれのI/O構成要素1111〜Nの出力デバイスを介して、様々な出力をレンダリングすることができる。
【００４７】
様々な実装形態では、自動アシスタントクライアント1171〜Nの1つまたは複数のインスタンスは、入力を処理することにおいて、および/または入力に基づいて、出力を生成することにおいて、および/または入力に基づいて、スマートデバイス制御コマンドを生成することにおいて、クラウドベース自動アシスタント構成要素120とインターフェースすることができる。たとえば、自動アシスタントクライアント1171は、クラウドベース自動アシスタント構成要素120に、クライアントデバイス1101における自動アシスタントクライアント1171の起動後に受信された口頭入力に対応するオーディオデータを送信することができる。クライアントデバイス1101における自動アシスタントクライアント1171の起動は、起動フレーズ(たとえば、「OKアシスタント」)の検出、自動アシスタントクライアント1171を起動するハードウェアボタンもしくはグラフィカルボタンのインタラクション、I/O構成要素1111のカメラを介して検出されたジェスチャーに応答して、および/または他の起動信号に基づき得る。クラウドベース自動アシスタント構成要素120は、音声テキスト(STT)プロセッサ121を使用して、オーディオデータをテキストに変換し、NLUエンジン122を使用して、テキストにおいて自然言語理解(NLU)を行って、適切な応答を決定することができる。たとえば、適切な応答は、場合によっては、テキスト音声(TTS)プロセッサを使用して、生成された音声に変換され、I/O構成要素1111のスピーカーを介してその生成された音声をレンダリングするために、自動アシスタントクライアント1171に送信され得る、テキストの応答であり得る。
【００４８】
別の例として、適切な応答は、意図(たとえば、オン/オフにする、調光する、増す、減らす)を定義し、スマートデバイス(たとえば、スマートデバイスの一意の識別子)を定義し、スマートデバイスのためのサードパーティ(たとえば、サードパーティのための一意の識別子)、および/または意図のための1つもしくは複数のさらなるパラメータ(たとえば、どのくらい調光するか、何を増す/減らすかなど)を定義する、構造化コマンドなどの汎用スマートデバイス制御コマンドであり得る。汎用スマートデバイス制御コマンドは、アシスタントクライアント1171、または汎用スマートデバイス制御コマンドのローカル実装形態では、別のクライアントデバイス110の別のアシスタントクライアントに送信され得る。いくつかの実装形態では、および/またはいくつかのアシスタントクライアント1171〜Nの場合、アシスタントクライアントは、ローカルSTTプロセッサ、ローカルNLUエンジン、および/または、クラウドベース自動アシスタント構成要素120とインターフェースすることを必要とすることなく、受信された入力をローカルに処理するための他の構成要素を含み得る。たとえば、アシスタントクライアント1171は、クラウドベース自動アシスタント構成要素120とインターフェースすることなく、汎用スマートデバイス制御コマンドをローカルに生成するための、1つまたは複数のローカル構成要素を含み得る。
【００４９】
クライアントデバイス110のうちの1つまたは複数はまた、場合によっては、それぞれのアダプタインタラクションエンジン1141〜Nと、1つまたは複数のそれぞれのローカルに記憶されたアダプタ113A〜Nと、1つまたは複数のそれぞれの利用可能な無線112A〜Nとを含む。同じアダプタ113A〜Nおよび利用可能な無線112A〜Nが、場合によっては、クライアントデバイス1101〜Nの各々においてローカルに与えられ得るか、または、アダプタ113A〜Nおよび/もしくは無線112A〜Nは、場合によっては、クライアントデバイス1101〜Nの間で変動し得る。さらに、本明細書で説明するように、アダプタ113A〜Nのうちの1つまたは複数は、クライアントデバイス1101〜Nにおいてプリエンプティブに実行され得、どのアダプタが所与のクライアントデバイス1101〜Nのために所与の時間にプリエンプティブに実行中であるかは、クライアントデバイスの使用履歴、時間的基準など、1つまたは複数の基準に基づき得る。
【００５０】
次に、アダプタインタラクションエンジン1141〜Nおよびローカルに記憶されたアダプタ113A〜Nについてのさらなる説明を、クライアントデバイス1101を参照しながら提供する。汎用スマートデバイス制御コマンドは、自動アシスタントクライアント1171からアダプタインタラクションエンジン1141に渡され得る。図1では明快のために別個に示されているが、様々な実装形態では、アダプタインタラクションエンジン1141、アダプタ113A〜N、ルーティングエンジン1151、および/または登録エンジン1161は、自動アシスタントクライアント1171の一部として論理的に組み込まれ得ることに留意されたい。汎用スマートデバイス制御コマンドは、ボイス入力、タッチ入力、自動アシスタントルーチンのトリガリング、別の非アシスタントデバイスからの信号、および/または他の信号に応答して生成され得る。たとえば、汎用スマートデバイス制御コマンドは、クライアントデバイス1101において受信されたボイス入力に応答して生成され得る。たとえば、自動アシスタントクライアント1171は、リモート自動アシスタント構成要素120に、ボイス入力に対応するオーディオデータを送信し、それに応答して、汎用スマートデバイス制御コマンドを受信することができる。また、たとえば、自動アシスタントクライアント1171は、それ自体でボイス入力を処理して、汎用スマートデバイス制御コマンドをローカルに生成することができる。別の例として、自動アシスタントクライアント1171は、I/O構成要素1111のタッチセンシティブスクリーン上で、スマートデバイスの制御のためのインタラクティブグラフィカルインターフェース要素をレンダリングすることができ、インタラクティブグラフィカルインターフェース要素とのインタラクションを、対応する汎用スマートデバイス制御コマンドへと直接解釈することができる。汎用スマートデバイス制御コマンドは、意図を定義し、制御されることになるスマートデバイスを定義し、場合によっては、スマートデバイスのためのサードパーティ、および/または場合によっては、意図のための1つもしくは複数のさらなるパラメータを定義する、構造化コマンドであり得る。
【００５１】
アダプタインタラクションエンジン1141は、汎用スマートデバイス制御コマンドに基づいて、そのアダプタが汎用スマートデバイス制御コマンドに対応するパーティによって提供されることに基づいて、アダプタ113A〜Nのうちの対応する1つを選択することができる。アダプタインタラクションエンジン1141は、アダプタ113A〜Nのうちの選択された1つに汎用スマートデバイス制御コマンドを与え、アダプタ113A〜Nのうちの選択された1つが、汎用スマートデバイス制御コマンドを処理して、固有の制御コマンドを生成し、固有の制御コマンドは、対応するスマートデバイスにおいて、または対応するスマートデバイスによって直接制御された対応する追加のスマートデバイスにおいて、状態変化を実施するために、対応するスマートデバイスによって直接解釈可能である。様々な実装形態では、アダプタ113A〜Nの各々が、アダプタに対応するパーティによって提供されたJavaScript(または、他のインタープリタ型プログラミング言語)によって実装され、アダプタ113A〜Nの各々は、汎用スマートデバイス制御コマンドを、パーティのプロトコルスイートに適合する固有の制御コマンドに翻訳することができる。アダプタ113A〜Nの各々は、サンドボックス化され、クライアントデバイス1101または自動アシスタントクライアント1171内のコンテナ内で実行中であり得、説明したように、汎用スマートデバイス制御コマンドを処理することができ、さらに場合によっては、自動アシスタントのスキーマを使用して、自動アシスタントクライアント1171にイベントを報告することができる。アダプタ113A〜Nは、クラウドベース自動アシスタント構成要素120によって、クライアントデバイス1101に送信され得、クラウドベース自動アシスタント構成要素120は、3Pアダプタデータベース150から、アダプタ113A〜Nを選択することができる。3Pアダプタデータベース150のアダプタは、スマートデバイスシステム140A〜Nによって(たとえば、ファームウェア更新に適合するために、かつ/または機能を改善するために)更新され得、更新されたアダプタが、クライアントデバイス1101にプッシュされ得る。いくつかの実装形態では、追加のアダプタが、場合によっては、いくつかのスマートデバイスのための、いくつかの汎用スマートデバイス制御コマンドを処理するために、提供および利用され得る。たとえば、所与の追加のアダプタが、いくつかの汎用スマートデバイス制御コマンドを処理し、複数の3Pプロトコルスイートにとって共通(たとえば、3Pプロトコルスイートがそれに適合するか、またはその変形形態である、業界標準ベースプロトコルに共通)である、対応する固有の制御コマンドを生成するために利用され得る。たとえば、汎用ウェイクオンラン(WOL)コマンドが、所与の追加のアダプタを使用して処理されて、IPプロトコル業界標準の変形形態であるすべてのプロトコルスイートに適用可能である、固有のWOL制御コマンドが生成され得る。これらおよび他の方法では、追加のアダプタは、(たとえば、複数の3Pのスマートデバイスのための)いくつかの汎用スマートデバイス制御コマンドを処理するために利用され得るが、3P固有のアダプタは、いくつかの他の汎用スマートデバイス制御コマンドを処理するために利用され得る。
【００５２】
生成された固有の制御コマンドは、アダプタインタラクションエンジン1141に与えられる。アダプタインタラクションエンジン1141は、固有の制御コマンド(および、固有の制御コマンドがそれに基づく、汎用スマートデバイス制御コマンド)によって示されたスマートデバイスの状態の変更を実施するために、固有の制御コマンドをローカルに送信するために、無線112A〜Nのうちの1つを選択する。アダプタインタラクションエンジン1141は、無線が汎用スマートデバイス制御コマンドに対応するパーティおよび/またはアダプタにローカルに割り当てられることに基づいて、無線を選択することができる。次いで、アダプタインタラクションエンジン1141は、固有の制御コマンドが、無線112A〜Nのうちの選択された1つを介して送信されること、およびスマートデバイスにアドレス指定されることを引き起こして、それによって、アドレス指定されたスマートデバイスにおいて、または(たとえば、アドレス指定されたスマートデバイスが、追加のスマートデバイスを制御するハブであるとき)アドレス指定されたスマートデバイスに接続されたスマートデバイスにおいて、状態変化を実施する。
【００５３】
クライアントデバイス110のうちの1つまたは複数は、さらに場合によっては、それぞれのルーティングエンジン1151〜N、および/またはそれぞれの登録エンジン1161〜Nを含む。各ルーティングエンジン1151〜Nは、1つまたは複数の基準に基づいて、クライアントデバイス1101〜Nのエコシステムのうちの代替クライアントデバイスに、受信された汎用スマートデバイス制御コマンドを、ローカルネットワークを介してルーティングすることを選択的に決定することができる。たとえば、クライアントデバイス1101は、たとえば、スマートデバイス制御コマンドが(たとえば、クライアントデバイス1101において表示された対応するグラフィカル要素とのタッチインタラクションに応答して)クライアントデバイス1101においてローカルに生成されること、またはリモート自動アシスタント構成要素120において生成されること、およびクライアントデバイス1101において受信された口頭もしくは他の入力に基づいて生成されることに基づいて、クライアントデバイス1101に最初に与えられることに基づいて、スマートデバイス制御コマンドを最初に識別することができる。
【００５４】
汎用スマートデバイス制御コマンドは、制御されることになる特定のスマートデバイスを指定することができ、ルーティングエンジン1151は、高信頼通信チャネルがクライアントデバイス1101と特定のスマートデバイスとの間に確立されないと決定することができる。たとえば、特定のスマートデバイスは、Bluetooth通信チャネルを介して制御されることになるものであり得、ルーティングエンジン1151は、特定のスマートデバイスが、クライアントデバイス1101の無線112A〜NのうちのBluetooth無線を介して検出可能でないこと、または、Bluetooth無線を介したクライアントデバイス1101と特定のスマートデバイスとの間の信号強度が、しきい値を満たすことができないことを決定することができる。そのような決定は、たとえば、Bluetooth無線を介した現在の読取りに基づき、かつ/または、ホームグラフ1521のローカルバージョンが、クライアントデバイス1101が特定のスマートデバイスとの高信頼接続を有していないことを示すことに基づき得る。
【００５５】
それに応答して、ルーティングエンジン1151は、ローカルネットワーク(たとえば、アシスタントクライアントデバイス1101〜Nの間で確立された、Wi-Fiまたはメッシュネットワーク)上で、スマートデバイスへの確立された高信頼通信チャネルを有する代替クライアントデバイス1102〜Nに、汎用スマートデバイス制御コマンドを送信することができる。ルーティングエンジン1151は、たとえば、ホームグラフ1521のローカルバージョンを利用して、そのような代替クライアントデバイスを決定することができ、ホームグラフ1521のローカルバージョンは、代替クライアントデバイスがスマートデバイスとの高信頼接続を有することを示すことができる。たとえば、ルーティングエンジン1151は、ホームグラフ1521のローカルバージョンが、代替クライアントデバイスがすべてのクライアントデバイス1101〜Nの中で、スマートデバイスのための最良の信号強度を有することを示すことに基づいて、代替クライアントデバイスを選択することができる。ホームグラフ1521のローカルバージョンは、クライアントデバイス1101においてローカルに記憶され、リモート自動アシスタント構成要素120によって維持されたホームグラフ152と同じ、またはその変形態(たとえば、圧縮バージョン、わずかに最新でないバージョン)であり得る。代替クライアントデバイスは、汎用スマートデバイス制御コマンドの受信に応答して、次いで、対応するローカルアダプタを使用して、汎用スマートデバイス制御コマンドを対応する固有のコマンドに翻訳し、対応する固有のコマンドを特定のスマートデバイスに送信することができる。代替的に、アダプタインタラクションエンジン1141は、アダプタ113A〜Nのうちの対応するローカルのものを使用して、対応する固有のコマンドを生成し、汎用スマートデバイス制御コマンドを送信する代わりに、対応する固有のコマンドを代替クライアントデバイスに送信することができる。
【００５６】
登録エンジン1161〜Nの各々は、ユーザのアカウントのためのスマートデバイスをローカルに発見、プロビジョニング、および/または登録することにおいて利用される。登録エンジン1161〜Nの各々は、スマートデバイスを発見、プロビジョニング、および/または登録することにおいて、それぞれのローカルに記憶されたホームグラフ1521〜N、それぞれのアダプタ113A〜N(たとえば、それぞれのアダプタインタラクションエンジン1141〜Nを介して)、およびそれぞれの無線112A〜Nとインターフェースすることができる。さらに、登録エンジン1161〜Nの各々は、クラウドベース自動アシスタント構成要素120のクラウド登録エンジン127とインターフェースすることができる。
【００５７】
いくつかの実装形態では、登録されていないスマートデバイスについて、1つまたは複数のそれぞれの通信チャネル(たとえば、Wi-Fi、Bluetooth、および/またはその他)をスキャンすることを、登録エンジン1161〜Nの各々に行わせることによって、まだ登録されていないスマートデバイスが発見され得る。たとえば、Wi-Fiの場合、登録エンジン1161〜Nの各々は、そのための対応するアダプタが利用可能である特定のスマートデバイスについてフィルタリングするために、場合によっては、サービスセット識別子(SSID)および/または基本サービスセット識別子(BSSID)を使用して、いずれかの未登録デバイスを識別するために、無線112A〜NのうちのそれぞれのWi-Fi無線を介して、スキャンを行わせることができる。別の例として、Bluetoothの場合、登録エンジン1161〜Nの各々は、そのための対応するアダプタが利用可能である特定のスマートデバイスについてフィルタリングするために、場合によっては、識別子を利用して、いずれかのペアリングされていないスマートデバイスを識別するために、それぞれのBluetooth無線を介して、スキャンを行わせることができる。発見は、周期的もしくは非周期的間隔で、またはユーザ要求(たとえば、ボイス要求、アシスタントのためのスマートフォンアプリを介して開始された要求など)に応答して行われ得る。
【００５８】
登録エンジン1161〜Nのうちの1つまたは複数が、スマートデバイスを発見するとき、そのスマートデバイスを発見したスマートデバイスのうちの1つのルーティングエンジンは、(たとえば、Bluetoothの場合には)そのスマートデバイスとペアリングすること、および/または、クライアントデバイス1101〜Nがすでに接続されているセキュアWi-Fiネットワークに、そのスマートデバイスを接続させることによって、そのスマートデバイスをプロビジョニングすることができる。登録エンジン1161〜Nのうちのどれがスマートデバイスをプロビジョニングするかは、クライアントデバイス1101〜Nの間の直接的なネゴシエーションに基づいて決定され得、かつ/または、どの登録エンジン1161〜Nがスマートデバイスを発見したかの指示を、登録エンジン1161〜Nから受信することができる、クラウドルーティングエンジン125によって決定され得る。
【００５９】
プロビジョニング後、プロビジョニングされたスマートデバイスによって与えられたデータが、クライアントデバイス1101〜Nのうちの1つにおいて受信され、アシスタントクライアントデバイスの対応するローカルアダプタ113A〜Nを使用して処理されて、自動アシスタントのスキーマにおいて登録データが生成され得る。対応するローカルアダプタは、クライアントデバイスにおいてすでにローカルに与えられていることがあるか、または場合によっては、スマートデバイスのプロビジョニングに応答して、クラウドベース自動アシスタント構成要素120によって、クライアントデバイスにプッシュされ得る。たとえば、クラウド登録エンジン127は、3Pアダプタデータベース150にアクセスして、プロビジョニングされるスマートデバイスに対応する3Pアダプタを検索し、クライアントデバイス1101〜Nにおけるローカルの記憶および利用のために、クライアントデバイス1101〜Nのうちの1つまたは複数(たとえば、すべて)に、3Pアダプタをプッシュすることができる。ローカルアダプタ113A〜Nによって生成された登録データは、スマートデバイス、アシスタントクライアントデバイス、ならびにスマートデバイスおよびアシスタントクライアントデバイスの様々なプロパティ(たとえば、名前、位置など)を定義する、ホームグラフまたは他の構造にスマートデバイスを追加するために、自動アシスタントによって利用され得る。たとえば、登録データは、クラウド登録エンジン127に送信され得、クラウド登録エンジン127は、ホームグラフ152に登録データを追加し、場合によっては、クライアントデバイス1101〜Nの各々に、ホームグラフ1521〜Nの更新されたローカルバージョンをプッシュすることができる。クラウド登録エンジン127はまた、場合によっては、スマートデバイスシステム140A〜Nのうちの対応する1つとインターフェースして、スマートデバイスシステムに登録を報告し、それによって、スマートデバイスシステムがスマートデバイス登録をローカルに相関させることを可能にすることができる。
【００６０】
いくつかの実装形態では、クラウド登録エンジン127は、クライアントデバイス1101〜Nのうちの1つまたは複数を介して検出されたバイオメトリックデータが、ホームグラフ152に関連付けられたアカウントに対応することに基づいて、スマートデバイスをホームグラフ152に登録する。たとえば、スマートデバイスは、発見、プロビジョニング、および/または登録中に、クライアントデバイス1101〜Nのうちの1つまたは複数を介して受信されたボイスデータが、アカウントに関連して記憶されたボイス認証データと一致することに基づいて、(たとえば、クライアントデバイス1101〜Nのうちの1つまたは複数の別のアカウントに関連付けられた別のホームグラフではなく)ホームグラフ152に割り当てられ得る。顔、指紋など、他のバイオメトリック識別情報が、追加または代替として利用され得る。いくつかの実装形態では、クラウド登録エンジン127は、(たとえば、ホームグラフ152およびローカルバージョン内で)登録されたスマートデバイスを、そのスマートデバイスにコマンドをローカルに送信することができるそれらのクライアントデバイス1101〜Nに関連付けることができる。たとえば、スマートデバイスとの通信が、短距離無線(たとえば、Bluetooth無線)を介して行われる場合、少なくとも(短距離無線を介したスマートデバイスへの対応する接続のための)対応する信号強度を有する、それらのクライアントデバイス1101〜Nが、場合によっては、対応する信号強度の指示とともに、ホームグラフ152内で指示され得る。そのような指示は、どのアシスタントクライアントデバイスが、固有の制御コマンドの生成、および/またはスマートデバイスへの固有の制御コマンドの送信において利用されるべきであるかを決定することにおいて、ルーティングエンジン1151〜Nによって、および/またはクラウドルーティングエンジン125によって使用され得る。
【００６１】
いくつかの実装形態では、アクセスポイントをブロードキャスト中であるスマートデバイスが発見され、そのスマートデバイスは、クライアントデバイス1101〜Nによって利用されるセキュアWi-Fiネットワークに接続されておらず、セキュアWi-Fiネットワークに接続するための資格情報を欠いているので、まだプロビジョニングされていない。それらの実装形態のうちのいくつかでは、複数のクライアントデバイス1101〜Nの各々が、そのそれぞれのWi-Fi無線のスキャニングを通して、アクセスポイントの利用可能性を検出した。それらの実装形態のいくつかのバージョンでは、単一のアシスタントクライアントデバイスが、スマートデバイスのアクセスポイントを介して、スマートデバイスに接続するために、および、セキュアWi-Fiネットワークに接続するための資格情報を、接続を介してスマートデバイスとセキュアに共有するために選択される。単一のクライアントデバイスは、クライアントデバイスの登録エンジン1161〜Nのネゴシエーションを通して、またはクラウド登録エンジン127によって選択され得る。資格情報が共有されると、スマートデバイスは、セキュアWi-Fiネットワークに接続し、Wi-Fiネットワークを介した通信を通して登録され得る。単一のアシスタントクライアントデバイスが選択される、様々なバージョンでは、単一のアシスタントクライアントデバイスは、単一のアシスタントクライアントデバイスのためのヒューマンインタラクションデータに少なくとも部分的に基づいて選択される。たとえば、単一のアシスタントクライアントデバイスは、ユーザインターフェース入力が、しきい値時間量内に単一のアシスタントクライアントデバイスにおいて受信されていないことを、ヒューマンインタラクションデータが示すことに基づいて、および/または、単一のアシスタントクライアントデバイスが、アクセスポイントを検出した複数のアシスタントクライアントデバイスのうちのいずれかの他のものよりも低い頻度で利用されることを、ヒューマンインタラクションデータが示すことに基づいて選択され得る。これらおよび他の方法では、単一のクライアントデバイスは、進行中および/または今度のアシスタントインタラクションの中断が防止されるように選択され得、その理由は、単一のクライアントデバイスが、ローカル
アクセスポイントに接続するとき、セキュアWi-Fiネットワークとのその接続を切断することになるからであり-また、単一のクライアントデバイスは、それが使用されていない、かつ/または(エコシステムの他のデバイスよりも)使用される可能性が低いことを示した基準に基づいて選択される。
【００６２】
いくつかの実装形態では、登録されていないスマートデバイスについて、1つまたは複数のそれぞれの通信チャネル(たとえば、Wi-Fi、Bluetooth、および/またはその他)をスキャンすることを、登録エンジン1161〜Nの各々に行わせることによって、まだ登録されていないスマートデバイスが発見され得る。しかしながら、それらの実装形態のうちのいくつかでは、スマートデバイスは、ローカルに登録可能、および/またはローカルに制御可能ではないことがある。それにもかかわらず、それらの実装形態のいくつかのバージョンでは、発見されたスマートデバイスに関連する通知が、アシスタントクライアントデバイスおよび/または他のクライアントデバイスのうちの1つまたは複数において提示され得る。通知は、リンク、および/または非ローカルの方法で(たとえば、クラウドを介して)登録を容易にするために、ともに対話され得る他のインタラクティブコンテンツを含み得る。たとえば、インタラクティブコンテンツは、選択されるとき、シングルサインインインターフェース、および/または、スマートデバイスの登録を可能にするスマートデバイス固有のサインインインターフェースのレンダリングを生じ得る。
【００６３】
上述のように、クラウドベース自動アシスタント構成要素120は、場合によっては、いくつかの動作の実施において、クライアントデバイス110の各々とインターフェースすることができる。クラウドベース自動アシスタント構成要素120は、(対応するクライアントデバイス110によって与えられた)オーディオデータを(次いで、NLUモジュール122に与えられ得る)テキストに変換するために、クラウドのリソースを活用するように構成された、STTモジュール121を含み得る。TTSモジュール123は、テキストのデータをコンピュータ生成音声出力に変換するために、クラウドのリソースを活用するように構成され得る。NLUモジュール122は、クライアントデバイス1101〜Nを介してユーザによって生成された自然言語入力を処理し、クラウドベース自動アシスタント構成要素120の1つまたは複数の他の構成要素による使用のために、注釈付き出力を生成し得る。たとえば、NLUモジュール122は、口頭入力から変換されたテキスト、またはタイプされたテキストなど、クライアントデバイス1101の1つまたは複数のユーザインターフェース入力デバイスを介して、ユーザによって生成される、自然言語自由形式の入力を処理し得る。生成された注釈付き出力は、自然言語入力の1つまたは複数の注釈と、場合によっては、自然言語入力の用語のうちの1つまたは複数(たとえば、全部)とを含む。
【００６４】
いくつかの実装形態では、NLUモジュール122は、自然言語入力における様々なタイプの文法情報を識別し、注釈を付けるように構成される。たとえば、NLUモジュール122は、音声タガーおよび/またはエンティティタガーの一部を含み得る。いくつかの実装形態では、NLUモジュール122は、追加および/または代替として、1つまたは複数のコンテキスト上の手掛かりに基づいて、同じエンティティへの参照をグループ化または「クラスタ化」するように構成された、同一指示レゾルバ(図示せず)を含み得る。いくつかの実装形態では、NLUモジュール122の1つまたは複数の構成要素は、NLUモジュール122の1つまたは複数の他の構成要素からの注釈に依拠し得る。
【００６５】
クラウドルーティングエンジン125は、場合によっては、それに対して所与の汎用スマートデバイス制御コマンドを与えるための、クライアントデバイス1101〜Nのうちの特定のクライアントデバイスを選択するために利用され得る。クラウドルーティングエンジン125は、特定のクライアントデバイスを選択することにおいて、ホームグラフ152を利用することができる。たとえば、クラウドルーティングエンジン125は、ホームグラフ152を利用して、特定のクライアントデバイスが、汎用スマートデバイス制御コマンドのスマートデバイスとの確立された通信チャネルを有すること、および/または汎用スマートデバイス制御コマンドのスマートデバイスとの最良(たとえば、最高信号強度)の通信チャネルを有することを、ホームグラフ152が示すことに基づいて、特定のクライアントデバイスを選択することができる。次いで、クラウドルーティングエンジン125は、汎用スマートデバイス制御コマンドを、(たとえば、ホームグラフ内に記憶されたアドレスを使用して)選択された特定のクライアントデバイスにアドレス指定して、選択された特定のクライアントデバイスにおいて、固有の制御コマンドにローカルに変換するために、および選択された特定のクライアントデバイスにおいて、対応するスマートデバイスに固有の制御コマンドをローカルに送信するために、汎用スマートデバイス制御コマンドがそのクライアントデバイスに直接送信されることを引き起こすことができる。クラウドルーティングエンジン125は、汎用スマートデバイス制御コマンドが、異なるクライアントデバイスにおいて受信されたユーザインターフェース入力に応答して生成されるときでも、汎用スマートデバイス制御コマンドを特定のクライアントデバイスにルーティングすることができる。
【００６６】
本明細書で説明するように、いくつかの実装形態では、クラウドベース自動アシスタント構成要素120(たとえば、STTモジュール121およびNLUモジュール122)は、クライアントデバイス110のうちの1つにおいて取り込まれた口頭入力に対応するオーディオデータを処理し、そのような口頭入力に基づいて、汎用スマートデバイス制御コマンドを生成し、対応するスマートデバイスのための固有のコマンドの、クライアントデバイスのうちの1つにおけるローカル生成のために、クライアントデバイス110のうちの1つに汎用コマンドを返すことができる。他の実装形態または状況では、クラウドベース自動アシスタント構成要素は、汎用スマートデバイス制御コマンドを伴う自動アシスタントルーチンのトリガリングに応答してなど、他の信号に応答して、汎用スマートデバイス制御コマンドを与えることができる。
【００６７】
次に、図1の様々な構成要素についての追加の説明を、追加の図を参照しながら提供する。図2は、複数の部屋250、252、254、256、258、260、および262を含む、自宅の間取り図を示す。複数のクライアントデバイス1101〜3が、部屋のうちの少なくともいくつかにわたって展開されている。クライアントデバイス1101〜3の各々は、場合によっては、本開示の選択された態様を用いて構成された自動アシスタントクライアントのインスタンスを実装することができ、場合によっては、マイクロフォン、タッチスクリーンなどの1つもしくは複数の入力デバイス、および/またはスピーカー、ディスプレイなどの1つもしくは複数の出力デバイスを含み得る。たとえば、スタンドアロンインタラクティブスピーカーおよびディスプレイデバイス(たとえば、ディスプレイ画面、プロジェクタなど)の形態を取る、第1のクライアントデバイス1101が、この例ではキッチンである、部屋250内に展開されている。インタラクティブスタンドアロンスピーカーの形態を取る、第2のクライアントデバイス1102が、この例では寝室である、部屋254内に展開されている。同じくインタラクティブスタンドアロンスピーカーの形態を取る、第3のクライアントデバイス1103が、部屋256内に展開されている。
【００６８】
複数のクライアントデバイス1101〜3は、部屋252内に示されているワイヤレスルータ101、および/またはローカルメッシュネットワークを介して、互いに、および/または他のリソース(たとえば、スマートデバイス、およびインターネット)と通信可能に結合され得る。追加として、他のクライアントデバイス-特に、スマートフォン、タブレット、ラップトップ、ウェアラブルデバイスなどのモバイルデバイス-もまた存在し、たとえば、自宅内で1人または複数の人間(たとえば、ユーザ103)によって携行され得、同じLANに同じく接続されてもされなくてもよい。図2に示されたクライアントデバイスの構成は、一例にすぎず、より多いもしくは少ない、および/または異なるクライアントデバイスが、任意の数の他の部屋、および/または自宅以外のエリアにわたって展開され得ることを理解されたい。
【００６９】
図2にさらに示されているものは、複数のスマートデバイスである。スマートデバイスは、(「A」の指示によって示されるような)第1の3Pによって提供される、スマートライト145A1を含む。スマートライト145A1は、業界標準の変形形態である、第1の3Pのプロトコルスイートを使用して、Bluetooth無線を介して制御可能である。スマートデバイスは、ワイヤレスルータ101に結合されるハブ147Bを介して制御される、スマートライト145B1および145B2、ならびにスマートドアベル145B3をさらに含む。スマートライト145B1および145B2、スマートドアベル145B3、ならびにハブ147Bは、(「B」の指示によって示されるような)第2の3Pによって提供される。スマートライト145B1および145B2、スマートドアベル145B3、ならびにハブ147Bは、業界標準プロトコルを利用し、ハブ147Bは、TCP/IPを介して、Wi-Fi無線を利用して、およびワイヤレスルータ101へのそのハードワイヤード接続を介してアドレス指定可能である。スマートデバイスは、(「C」の指示によって示されるような)第3の3Pによって提供される、スマート洗濯機145C1をさらに含む。スマート洗濯機145C1は、第3の3Pの独自仕様プロトコルスイートを使用して、低速ワイヤレスパーソナルエリアネットワーク無線チャネルを介して制御可能である。スマートデバイスは、(「D」の指示によって示されるような)第4の3Pによって提供される、スマートサーモスタット145D1をさらに含む。スマートサーモスタット145D1は、UDPプロトコルスイートの、第4の3Pの変形形態を使用して、Wi-Fi無線を介して制御可能である。図に示されたスマートデバイス145の構成は、一例にすぎず、より多いもしくは少ない、および/または異なるスマートデバイスが、任意の数の他の部屋、および/または自宅以外のエリアにわたって展開され得ることを理解されたい。
【００７０】
次に、図2、および図2についての上記の説明が、図3〜図7の様々な態様について説明する際に利用される。図3は、図2のクライアントデバイス1101を使用して、図2のスマートライト145B1および145B2を制御する一例の例示的な状態図300を示す。図3では、クライアントデバイス1101のアダプタインタラクションエンジン1141が、352で、汎用スマートデバイス制御コマンドを識別する。汎用スマートデバイス制御コマンドは、クライアントデバイス1101によって生成されるか、あるいはリモートクラウドベース自動アシスタント構成要素120によって、および/または別のクライアントデバイスによって、クライアントデバイス1101に与えられ得る。汎用スマートデバイス制御コマンドは、スマートライト145B1および145B2を識別し、それらの色が「明るい赤色」に調節されるべきであることを示し、場合によっては、第2の3Pを識別する。
【００７１】
354で、アダプタインタラクションエンジン1141は、第2の3Pに対応する3Pアダプタ113Bを選択する。アダプタインタラクションエンジン1141は、3Pアダプタ113Bが第2の3Pに、ならびに/または汎用スマートデバイス制御コマンド内で指定されたスマートライト145B1および145B2に割り当てられることに基づいて、クライアントデバイス1101においてローカルに記憶された複数の利用可能な3Pアダプタから、3Pアダプタ113Bを選択することができる。
【００７２】
356で、インタラクションエンジン1141は、3Pアダプタ113Bに、汎用スマートデバイス制御コマンドを与える。いくつかの実装形態では、スマートライト145B1および145B2、ならびに/または第2の3Pの他のスマートデバイスが、クライアントデバイス1101に関連付けられたアカウントのために登録されることに基づいて、3Pアダプタ113Bは、クライアントデバイス1101においてローカルに記憶され、場合によってはすでに実行中である。いくつかの実装形態では、たとえば、3Pアダプタ113Bがクライアントデバイス1101において最近利用されること、現在の日時と同様である日時で過去に利用されることにさらに基づいて、および/または1つもしくは複数の他の基準に基づいて、3Pアダプタ113Bは、クライアントデバイス1101においてすでに実行中である。
【００７３】
362で、3Pアダプタ113Bは、与えられた汎用コマンドに基づいて、固有のコマンドを生成し、364で、3Pアダプタ113Bは、アダプタインタラクションエンジン1141に、生成された固有のコマンドを返す。第2の3Pが標準プロトコルを利用するとしても、生成された固有のコマンドは、他の場合に標準プロトコルを利用して生成されることになるものとは異なることがあり、その理由は、たとえば、3Pアダプタ113Bが、第2の3Pに合わせて特に調整される「明るい赤色」状態変化要求のための固有のコマンドを生じることになる、第2の3Pのカスタム論理を組み込み得るからであることに留意されたい。固有のコマンドは、スマートライト145B1および145B2に固有のコマンドを直接転送することができる、スマートハブ147Bにアドレス指定され得、スマートライト145B1および145B2は、固有のコマンドを直接解釈して、「明るい赤色」状態へのライトの色状態の変化を引き起こすことができる。代替的に、スマートハブ147Bは、固有のコマンドを解釈して、それによって、固有のコマンドに従って、スマートライト145B1および145B2を直接制御することができる。
【００７４】
358で、アダプタインタラクションエンジン1141は、3Pアダプタ113Bのための無線112Bを選択し、372で選択された無線を使用して送信されることを引き起こすために、固有のコマンドを与える。無線112Bは、3Pアダプタ113Bに(クライアントデバイス1101においてローカルに)割り当てられることに基づいて、クライアントデバイス1101における複数の利用可能な無線から選択される。たとえば、無線112Bは、Wi-Fi無線であり得、固有のコマンドは、TCP/IPを介して、スマートハブ147Bに送信され得る。
【００７５】
上述のように、スマートハブ147Bは、スマートライト145B1および145B2に固有のコマンドを直接転送することができ、スマートライト145B1および145B2は、固有のコマンドを直接解釈して、「明るい赤色」状態へのライトの色状態の変化を引き起こすことができる。代替的に、スマートハブ147Bは、固有のコマンドを解釈し、さらに解釈されたコマンドを送り、それによって、固有のコマンドに従って、スマートライト145B1および145B2を直接制御することができる。とにかく、382で、状態変化が実施される。場合によっては、384で、スマートハブ147Bは、無線112Bに戻すように応答を送信し、374で、応答が3Pアダプタ113Bに与えられ、3Pアダプタ113Bは、366で(たとえば、自動アシスタントのスキーマへと)応答を解釈し、アダプタインタラクションエンジン1141に解釈された応答を与える。359で、アダプタインタラクションエンジン1141は、場合によっては、識別された汎用コマンドへの応答として、1つまたは複数の追加の構成要素に、解釈された応答を与えることができる。たとえば、解釈された応答が、状態変化が成功したことを示す場合、解釈された応答は、成功を示すように、クライアントデバイス1101のディスプレイを更新するために与えられ得、状態変化を反映するように、ホームグラフ152を更新するために、クラウドベース自動アシスタント構成要素120に与えられ、状態変化を反映するように、第2の3Pに関連付けられたシステム140に与えられ、かつ/または他の構成要素に与えられ得る。
【００７６】
図4は、図2のクライアントデバイス1101から、図2のクライアントデバイス1102に、図2のスマートライト145A1を制御するための汎用スマートデバイス制御コマンドをルーティングする一例の例示的な状態図400を示す。図4では、クライアントデバイス1101のルーティングエンジン1151が、452で、汎用スマートデバイス制御コマンドを識別する。汎用スマートデバイス制御コマンドは、クライアントデバイス1101によって生成されるか、あるいはリモートクラウドベース自動アシスタント構成要素120によって、および/または別のクライアントデバイスによって、クライアントデバイス1101に与えられ得る。たとえば、汎用スマートデバイス制御コマンドは、スマートライト145A1の調光レベルを調節することを可能にする、クライアントデバイス1101のタッチスクリーンを介して表示された、グラフィカルインターフェース要素とのタッチインタラクションに応答して、クライアントデバイス1101によって生成され得る。汎用スマートデバイス制御コマンドは、スマートライト145A1を識別し、スマートライト145A1が「50%調光」状態に調節されるべきであることを示し、場合によっては、第1の3Pを識別する。
【００７７】
454で、ルーティングエンジン1151は、クライアントデバイス1101がスマートライト145A1との低信頼通信チャネルを有すると決定する。たとえば、上述のように、スマートライト145A1は、Bluetooth無線を介して制御可能であり得る。クライアントデバイス1101とスマートライト145A1との間の距離のために、および/または障害物のために、クライアントデバイス1101のBluetooth無線は、スマートライト145A1とのいかなる通信も有していないことがあるか、または通信を有しているが、しきい値を満たすことができない信号強度であることがある。ルーティングエンジン1151は、Bluetooth無線からの現在のデータに基づいて、または(たとえば、クライアントデバイスからスマートデバイスへのローカルマッピングにおいて記憶された)過去の履歴データに基づいて、低信頼通信チャネルを決定することができる。
【００７８】
456で、ルーティングエンジン1151は、スマートライト145A1との高信頼通信チャネルを有するアシスタントクライアントデバイス1102を解決する。クライアントデバイス1102を解決することにおいて、ルーティングエンジン1151は、場合によっては、クライアントデバイス1101においてローカルに記憶された、クライアントデバイスからスマートデバイスへのマッピングに依拠して、クライアントデバイス1102が(たとえば、スマートライト145A1に近接している結果として)スマートライト145A1への確立された高信頼通信チャネルを有するものであると決定することができる。クライアントデバイスからスマートデバイスへのマッピングは、エコシステムのクライアントデバイスを定義することができ、アシスタントクライアントデバイスの各々について、そのためにアシスタントクライアントデバイスが対応する高信頼通信チャネルを有する、対応するスマートデバイスを定義することができ、場合によっては、アシスタントクライアントデバイスとスマートデバイスとの間の信号強度を定義することができる。そのようなマッピングは、場合によっては、本明細書で説明するようなローカルに記憶されたホームグラフ内に含まれ得る。
【００７９】
458で、ルーティングエンジン1151は、ローカルネットワークを使用して、解決されたクライアントデバイス1102に汎用スマートデバイス制御コマンドを送信する。
【００８０】
460で、クライアントデバイス1102のアダプタインタラクションエンジン1142は、第1の3Pに対応する3Pアダプタ113Aを選択する。アダプタインタラクションエンジン1142は、3Pアダプタ113Aが第1の3Pに、および/または汎用スマートデバイス制御コマンド内で指定されたスマートライト145A1に対応することに基づいて、クライアントデバイス1102においてローカルに記憶された複数の利用可能な3Pアダプタから、3Pアダプタ113Aを選択することができる。
【００８１】
462で、インタラクションエンジン1142は、3Pアダプタ113Aに、汎用スマートデバイス制御コマンドを与える。いくつかの実装形態では、スマートライト145A1が、クライアントデバイス1102に関連付けられたアカウントのために登録されることに基づいて、3Pアダプタ113Aは、クライアントデバイス1102においてローカルに記憶され、場合によってはすでに実行中である。いくつかの実装形態では、たとえば、クライアントデバイス1102とスマートライト145A1との間の強力な信号強度があること、3Pアダプタ113Aがクライアントデバイス1102において最近利用されることにさらに基づいて、および/または1つもしくは複数の他の基準に基づいて、3Pアダプタ113Aは、クライアントデバイス1102においてすでに実行中である。
【００８２】
472で、3Pアダプタ113Aは、与えられた汎用コマンドに基づいて、固有のコマンドを生成し、474で、3Pアダプタ113Aは、アダプタインタラクションエンジン1142に、生成された固有のコマンドを返す。第1の3Pが、業界標準の変形形態であるプロトコルスイートを利用し、結果として、生成された固有のコマンドが、業界標準に適合しないことがあることに留意されたい。固有のコマンドは、スマートライト145A1にアドレス指定され得、スマートライト145A1は、固有のコマンドを直接解釈して、スマートライト145A1の調光レベルの「50%」への変化を引き起こすことができる。
【００８３】
464で、アダプタインタラクションエンジン1142は、3Pアダプタ113Aのための無線112Aを選択し、482で、選択された無線を使用して送信されることを引き起こす。無線112Aは、3Pアダプタ113Aに(クライアントデバイス1102においてローカルに)割り当てられることに基づいて、クライアントデバイス1102における複数の利用可能な無線から選択される。たとえば、無線112Aは、Bluetooth無線であり得る。
【００８４】
492で、スマートライト145A1は、固有のコマンドを直接解釈して、スマートライト145A1の調光レベルの「50%」への変化を引き起こす。場合によっては、スマートライト145A1は、無線112Aに戻すように応答を送信し、応答が3Pアダプタ113Aに与えられ、3Pアダプタ113Aは、(たとえば、自動アシスタントのスキーマへと)応答を解釈し、アダプタインタラクションエンジン1142に解釈された応答を与える。アダプタインタラクションエンジン1142は、場合によっては、識別された汎用コマンドへの応答として、1つまたは複数の追加の構成要素に、解釈された応答を与えることができる。
【００８５】
次に、図5〜図7を参照して、様々な方法について、それらの図のフローチャートの動作を参照しながら説明する。便宜上、以下で説明するフローチャートの動作について、動作を行うシステムを参照しながら説明する。このシステムは、1つまたは複数のクライアントデバイス(たとえば、自動アシスタントクライアントを実行するクライアントデバイス)の1つまたは複数の構成要素、および/あるいは、別個のコンピューティングシステム(たとえば、リモート自動アシスタントサーバ)の1つまたは複数の構成要素を含み得る。その上、異なるシステムが、異なるフローチャートの動作を行うことができる。追加として、フローチャートの動作が特定の順序で示されているが、これは限定となるものではない。1つまたは複数の動作が並べ替え、省略、または追加され得る。
【００８６】
図5は、本明細書で開示する様々な実装形態による、ローカルアシスタントクライアントデバイスを使用して、スマートデバイスを制御する例示的な方法500を示すフローチャートである。図5は、ローカルアシスタントクライアントデバイスの1つまたは複数のプロセッサを使用して実施され得る。
【００８７】
ブロック502で、システムは、スマートデバイスと、変更されることになるスマートデバイスの状態とを指定する、汎用スマートデバイス制御コマンドを識別する。
【００８８】
ブロック504で、システムは、高信頼通信チャネルがあるか否かを決定する。
【００８９】
ブロック504で、システムが、高信頼通信チャネルがないと決定する場合、システムはブロック506に進む。
【００９０】
ブロック506で、システムは、スマートデバイスへの高信頼通信チャネルをもつ、代替ローカルアシスタントクライアントデバイスを選択する。
【００９１】
ブロック508で、システムは、スマートデバイスをローカルに制御するために、選択された代替ローカルアシスタントクライアントデバイスに、汎用スマートデバイス制御コマンドを送信する。選択された代替ローカルアシスタントクライアントデバイスは、汎用スマートデバイス制御コマンドを受信すると、汎用スマートデバイス制御コマンドをローカルに処理して、固有のコマンドを生成することであって、固有のコマンドが、汎用スマートデバイス制御コマンドに対応し、スマートデバイスにおいて状態の変更を実施するために、スマートデバイスによって直接解釈可能である、ことを行うことができる。選択された代替ローカルアシスタントクライアントデバイスは、スマートデバイスにおいて状態の変更を実施するために、確立された高信頼通信チャネル上で、固有のコマンドをさらに送信することができる。
【００９２】
ブロック504の繰返しにおいて、システムが、高信頼通信チャネルがあると決定する場合、システムはブロック510に進む。
【００９３】
ブロック510で、システムは、複数の利用可能なアダプタから、汎用スマートデバイス制御コマンドに基づいて、特定のアダプタを選択する。
【００９４】
ブロック512で、システムは、選択されたアダプタを使用して、汎用スマートデバイス制御コマンドを処理して、固有のコマンドを生成する。
【００９５】
ブロック514で、システムは、スマートデバイスの状態の変更を実施するために、高信頼通信チャネル上で、固有のコマンドを送信する。
【００９６】
図6は、本明細書で開示する様々な実装形態による、ローカルアシスタントクライアントデバイスを使用して、スマートデバイスを制御する別の例示的な方法600を示すフローチャートである。図6は、ローカルアシスタントクライアントデバイスの1つまたは複数のプロセッサを使用して実施され得る。
【００９７】
ブロック602で、システムは、複数の3Pアダプタ、および場合によっては、1Pアダプタなど、複数のアダプタの各々をプリエンプティブに実行する。
【００９８】
ブロック604で、システムは、スマートデバイスと、変更されることになるスマートデバイスの状態とを指定する、汎用スマートデバイス制御コマンドを識別する。
【００９９】
ブロック606で、システムは、汎用スマートデバイス制御コマンドに基づいて、複数の実行中のアダプタから特定のアダプタを選択する。
【０１００】
ブロック608で、システムは、選択されたアダプタを使用して、汎用スマートデバイス制御コマンドを処理して、固有のコマンドを生成する。
【０１０１】
ブロック610で、システムは、複数の利用可能な通信チャネルから、選択されたアダプタに割り当てられた特定の通信チャネルを選択する。
【０１０２】
ブロック612で、システムは、スマートデバイスにおいて状態が変更されることを引き起こすために、選択された特定の通信チャネルを使用して、固有のコマンドを送信する。
【０１０３】
図7は、本明細書で開示する様々な実装形態による、ローカルアシスタントクライアントデバイスを使用して、スマートデバイスを登録する例示的な方法700を示すフローチャートである。図7は、ローカルアシスタントクライアントデバイスの1つまたは複数のプロセッサ、および/あるいは、リモート自動アシスタントサーバの1つまたは複数のプロセッサを使用して実施され得る。
【０１０４】
ブロック702で、システムは、プロビジョニングされていないスマートデバイスについて、通信チャネルをスキャンすることを、アシスタントクライアントデバイスのエコシステムのうちの各アシスタントクライアントデバイスに行わせる。
【０１０５】
ブロック704で、システムは、いずれかの新しいプロビジョニングされていないスマートデバイスが、スキャニングによって検出されるか否かを決定する。
【０１０６】
ブロック704の繰返しにおいて、システムが、いかなる新しいプロビジョニングされていないスマートデバイスもないと決定する場合、システムはブロック706に進み、方法700は終了する。
【０１０７】
ブロック704の繰返しにおいて、システムが、少なくとも1つの新しいプロビジョニングされていないスマートデバイスがあると決定する場合、システムはブロック708に進む。
【０１０８】
ブロック708で、システムは、通信チャネルを介して、新しいスマートデバイスとインターフェースして、アシスタントクライアントデバイスへの新しいスマートデバイスのローカル接続を確立することを、選択されたアシスタントデバイスに行わせる。ブロック708は、場合によっては、サブブロック709など、1つまたは複数のサブブロックを含み得る。
【０１０９】
サブブロック709で、システムは、アシスタントクライアントデバイスのためのヒューマンインタラクションデータに基づいて、インターフェースするためのアシスタントクライアントデバイスを選択することができる。たとえば、サブブロック709で、新しいスマートデバイスは、図2のスマートサーモスタット145D1であり得、スマートサーモスタット145D1は、アクセスポイントをブロードキャスト中であり得るが、アシスタントクライアントデバイスによって利用されるセキュアワイヤレスルータ101にまだ接続されていないことがあり、セキュアワイヤレスルータ101に接続するための資格情報を欠いていることがある。それらの実装形態のうちのいくつかでは、クライアントデバイスのエコシステムのうちの、複数のアシスタントクライアントデバイスの各々が、そのそれぞれのWi-Fi無線のスキャニングを通して、アクセスポイントの利用可能性を検出した。たとえば、図2のクライアントデバイス1101〜3のうちの3つすべてが、アクセスポイントの利用可能性を検出していることがある。それらの実装形態のいくつかのバージョンでは、単一のアシスタントクライアントデバイスが、スマートデバイスのアクセスポイントを介して、スマートデバイスに接続するために、および、セキュアWi-Fiネットワークに接続するための資格情報を、接続を介してスマートデバイスとセキュアに共有するために選択される。資格情報が共有されると、スマートデバイスは、セキュアWi-Fiネットワークに接続し、Wi-Fiネットワークを介した通信を通して登録され得る。単一のアシスタントクライアントデバイスは、単一のアシスタントクライアントデバイスのためのヒューマンインタラクションデータに少なくとも部分的に基づいて選択され得る。たとえば、クライアントデバイス1103は、ユーザインターフェース入力が、しきい値時間量内にクライアントデバイス1103において受信されていないことを、ヒューマンインタラクションデータが示すことに基づいて、および/または、クライアントデバイス1103が、クライアントデバイス1101およびクライアントデバイス1102よりも低い頻度で利用されることを、ヒューマンインタラクションデータが示すことに基づいて選択され得る。
【０１１０】
ブロック710で、システムは、新しいスマートデバイスのための登録データを生成することにおいて、新しいスマートデバイスのために、アダプタを使用することを、選択された、または追加のアシスタントクライアントデバイスに行わせる。ブロック710は、場合によっては、1つまたは複数のサブブロックを含み得る。サブブロック711で、システムは、アシスタントクライアントデバイスによる新しいスマートデバイスの検出に応答して、アシスタントクライアントデバイスにアダプタを与えることができる。たとえば、新しいスマートデバイスに関連付けられたパーティのための、他のスマートデバイスが、アシスタントクライアントデバイスとまだリンクされていない場合、アダプタは、アシスタントクライアントデバイスにおいて、まだローカルに記憶されていないことがある。そのような状況では、そのパーティのためのアダプタは、アダプタデータベースから検索され、アシスタントクライアントデバイスに与えられ得る。
【０１１１】
ブロック712で、システムは、登録データを使用して、新しいスマートデバイスをホームグラフに組み込む。ブロック712は、場合によっては、1つまたは複数のサブブロックを含み得る。サブブロック713で、システムは、新しいスマートデバイスをローカルに制御することができるアシスタントクライアントデバイスを示し、場合によっては、新しいスマートデバイスをローカルに制御するためのプリファレンスを示す、データを記憶し得る。サブブロック714で、システムは、場合によっては、アシスタントクライアントデバイスのうちの1つまたは複数を介して検出された、バイオメトリックデータが、ホームグラフに関連付けられたアカウントに対応することに基づいて、ホームグラフを選択し得る。
【０１１２】
ブロック715で、システムは、場合によっては、新しいスマートデバイスのためのサードパーティに、登録情報を送信し得る。
【０１１３】
図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ドライブ、光学ドライブ、またはリムーバブル媒体カートリッジを含み得る。いくつかの実装形態の機能を実装するモジュールは、記憶サブシステム824内のファイル記憶サブシステム826によって、またはプロセッサ814によってアクセス可能な他のマシン内に記憶され得る。
【０１１８】
バスサブシステム812は、コンピューティングデバイス810の様々な構成要素およびサブシステムを、意図されるように互いに通信させるための機構を提供する。バスサブシステム812は、単一のバスとして概略的に示されているが、バスサブシステムの代替実装形態は、複数のバスを使用し得る。
【０１１９】
コンピューティングデバイス810は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む、異なるタイプのものであり得る。コンピュータおよびネットワークの常に変化し続ける性質のために、図8に示されたコンピューティングデバイス810についての説明は、いくつかの実装形態を例示するための具体例にすぎないものである。図8に示されたコンピューティングデバイスよりも多いかまたは少ない構成要素を有する、コンピューティングデバイス810の多数の他の構成が可能である。
【０１２０】
本明細書で説明するいくつかの実装形態が、ユーザについての個人情報(たとえば、他の電子通信から抽出されたユーザデータ、ユーザのソーシャルネットワークについての情報、ユーザの位置、ユーザの時間、ユーザのバイオメトリック情報、ならびにユーザのアクティビティおよび人口統計学的情報、ユーザ間の関係など)を収集または使用する場合がある状況では、ユーザには、情報が収集されるか否か、個人情報が記憶されるか否か、個人情報が使用されるか否か、ならびにユーザについての情報がどのように収集、記憶、および使用されるかを制御するための1つまたは複数の機会が与えられる。すなわち、本明細書で説明するシステムおよび方法は、そうするための関連するユーザからの明示的な許可の受信時のみ、ユーザ個人情報を収集、記憶、および/または使用する。
【０１２１】
たとえば、ユーザには、プログラムまたは特徴がその特定のユーザ、またはプログラムもしくは特徴に関連する他のユーザについてのユーザ情報を収集するか否かに対する制御が与えられる。個人情報が収集されることになる各ユーザには、情報が収集されるか否かについて、および情報のどの部分が収集されることになるかについての許諾または許可を与えるために、そのユーザに関連する情報収集に対する制御を可能にするための1つまたは複数のオプションが提示される。たとえば、ユーザは、通信ネットワーク上で1つまたは複数のそのような制御オプションを与えられ得る。追加として、あるデータは、個人を特定可能な情報が除去されるように、記憶または使用される前に1つまたは複数の方法で扱われ得る。一例として、ユーザのアイデンティティは、個人を特定可能な情報を決定することができないように扱われ得る。別の例として、ユーザの地理的位置は、ユーザの特定の位置を決定することができないように、より広い地域に一般化され得る。
【０１２２】
いくつかの実装形態では、自動アシスタントクライアントを実行するクライアントデバイスの1つまたは複数のプロセッサによって実施される方法が提供され、汎用スマートデバイス制御コマンドを識別することを含む。汎用スマートデバイス制御コマンドは、少なくとも1つのスマートデバイスと、スマートデバイスにおいて変更されることになる少なくとも1つの状態とを指定する。方法は、高信頼通信チャネルが、クライアントデバイスとスマートデバイスとの間に確立されるか否かを決定すること、ならびに、高信頼通信チャネルが、クライアントデバイスとスマートデバイスとの間に確立されないとの決定に応答して、クライアントデバイスにおいてローカルに記憶された、クライアントデバイスからスマートデバイスへのマッピングにアクセスして、スマートデバイスへの確立された高信頼通信チャネルをもつ追加のクライアントデバイスを解決すること、および、ローカルネットワーク上で、追加のクライアントデバイスに汎用スマートデバイス制御コマンドを送信することをさらに含む。追加のクライアントデバイスに汎用スマートデバイス制御コマンドを送信することは、追加のクライアントデバイスに、汎用スマートデバイス制御コマンドをローカルに処理して、固有のコマンドを生成することであって、固有のコマンドが、汎用スマートデバイス制御コマンドに対応し、スマートデバイスにおいて状態の変更を実施するために、スマートデバイスによって直接解釈可能である、こと、および、スマートデバイスにおいて状態の変更を実施するために、確立された高信頼通信チャネル上で、固有のコマンドを送信することを行わせる。
【０１２３】
この技術のこれらおよび他の実装形態は、場合によっては、以下の特徴のうちの1つまたは複数を含み得る。
【０１２４】
いくつかの実装形態では、方法は、高信頼通信チャネルが、クライアントデバイスとスマートデバイスとの間に確立されるとの決定に応答して、クライアントデバイスにおいてローカルに実行可能な複数のサードパーティ(3P)アダプタから、特定の3Pアダプタを選択することであって、選択が、スマートデバイス制御コマンドに基づく、こと、選択された3Pアダプタを使用して、スマートデバイス制御コマンドを処理して、固有のコマンドを生成することであって、固有のコマンドが、汎用スマートデバイス制御コマンドに対応し、スマートデバイスにおいて状態の変更を実施するために、スマートデバイスによって直接解釈可能である、こと、および、スマートデバイスにおいて状態の変更を実施するために、クライアントデバイスとスマートデバイスとの間に確立された高信頼通信チャネル上で、固有のコマンドを送信することをさらに含む。それらの実装形態のいくつかのバージョンでは、方法は、汎用スマートデバイス制御コマンドを識別するより前に、クライアントデバイスにおいて、リモートサーバから特定の3Pアダプタを受信することであって、ここで、特定の3Pアダプタの受信が、クライアントデバイスのための、スマートデバイス、または3Pの追加のスマートデバイスの登録に応答するものである、ことをさらに含む。それらの実装形態のいくつかの追加のまたは代替バージョンでは、方法は、汎用スマートデバイス制御コマンドを識別するより前に、選択された3Pアダプタを使用して、スマートデバイス制御コマンドを処理して、固有のコマンドを生成することにおける、レイテンシを低減するために、クライアントデバイスにおいてローカルに、特定の3Pアダプタをプリエンプティブに実行することをさらに含む。
【０１２５】
いくつかの実装形態では、高信頼通信チャネルが、クライアントデバイスとスマートデバイスとの間に確立されるか否かを決定することは、いずれかの通信チャネルが、クライアントデバイスとスマートデバイスとの間に確立されるか否かを決定すること、および/または、クライアントデバイスとスマートデバイスとの間に確立された通信チャネルが、少なくともしきい値信号強度を有するか否かを決定することを含む。いずれかの通信チャネルが確立されるか否かを決定すること、および、通信チャネルが少なくともしきい値信号強度を有するか否かを決定することは、クライアントデバイスからスマートデバイスへのマッピングに基づき得、かつ/あるいは、クライアントデバイスからスマートデバイスへのマッピングの直近の更新に続いて、通信チャネルを介して受信された1つまたは複数の信号に基づき得る。
【０１２６】
いくつかの実装形態では、クライアントデバイスにおいてローカルに記憶された、クライアントデバイスからスマートデバイスへのマッピングにアクセスして、スマートデバイスへの確立された高信頼通信チャネルをもつ追加のクライアントデバイスを解決することは、クライアントデバイスからスマートデバイスへのマッピングに基づいて、追加のクライアントデバイスとスマートデバイスとの間の所与の信号強度が、クライアントデバイスからスマートデバイスへのマッピングのうちのすべてのクライアントデバイスの中で最大であると決定することを含む。
【０１２７】
いくつかの実装形態では、スマートデバイスへの確立された高信頼通信チャネルは、Bluetooth無線チャネルである。
【０１２８】
いくつかの実装形態では、汎用スマートデバイス制御コマンドは、クライアントデバイスにおいて受信されたユーザインターフェース入力をローカルに処理することによって、クライアントデバイスにおいてローカルに生成される。それらの実装形態のうちのいくつかでは、ユーザインターフェース入力は、クライアントデバイスのタッチスクリーンにおける、スマートデバイスに対応するレンダリングされたグラフィカルユーザインターフェース要素とのインタラクションである。
【０１２９】
いくつかの実装形態では、ユーザインターフェース入力は、クライアントデバイスの少なくとも1つのマイクロフォンを介して受信されたボイス入力であり、ユーザインターフェース入力をローカルに処理することは、音声テキストプロセッサを使用して、ボイス入力をテキストに変換すること、および、テキストにおいて自然言語理解を行って、汎用スマートデバイス制御コマンドを生成することを含む。
【０１３０】
いくつかの実装形態では、方法は、クライアントデバイスの少なくとも1つのマイクロフォンを介して、ボイス入力を受信すること、および、リモート自動アシスタントシステムに、ボイス入力をストリーミングすることをさらに含む。それらの実装形態のいくつかのバージョンでは、汎用スマートデバイス制御コマンドを識別することは、リモート自動アシスタントシステムへのボイス入力のストリーミングに応答して、リモート自動アシスタントシステムから、汎用スマートデバイス制御コマンドを受信することを含む。
【０１３１】
いくつかの実装形態では、自動アシスタントクライアントを実行するクライアントデバイスの1つまたは複数のプロセッサによって実施される方法が提供され、クライアントデバイスにおいてローカルに、対応するサードパーティ(3P)によって各々生成された複数の3Pアダプタの各々をプリエンプティブに実行することを含む。3Pアダプタの各々は、複数の対応する汎用スマートデバイス制御コマンドの各々を、対応する固有のコマンドに変換し、対応する固有のコマンドが、3Pの少なくとも1つの対応するスマートデバイスにローカルに送信されるとき、対応するスマートデバイスにおいて、または対応するスマートデバイスによって直接制御された対応する追加のスマートデバイスにおいて、状態変化を実施するために、対応するスマートデバイスによって直接解釈可能であるように、各々調整される。複数の3Pアダプタは、場合によっては、クライアントデバイスのための3Pのスマートデバイスの以前の登録に応答して、クライアントデバイスにおいてローカルに、プリエンプティブに実行される。方法は、少なくとも1つの特定のスマートデバイスと、特定のスマートデバイスにおいて変更されることになる少なくとも1つの状態とを指定する、特定の汎用スマートデバイス制御コマンドを識別することをさらに含む。方法は、複数の3Pアダプタから、特定のスマートデバイス制御コマンドに基づいて、特定の3Pアダプタを選択すること、選択された特定の3Pアダプタを使用して、特定のスマートデバイス制御コマンドを処理して、スマートデバイス制御コマンドに対応する、固有のコマンドのうちの特定の固有のコマンドを生成すること、自動アシスタントクライアントにおいて利用可能な複数の通信チャネルから、特定の3Pアダプタに割り当てられた特定の通信チャネルを選択すること、および、特定のスマートデバイスにおいて少なくとも1つの状態が変更されることを引き起こすために、選択された特定の通信チャネルを使用して、特定の固有のコマンドを送信することをさらに含む。
【０１３２】
この技術のこれらおよび他の実装形態は、場合によっては、以下の特徴のうちの1つまたは複数を含み得る。
【０１３３】
いくつかの実装形態では、クライアントデバイスにおいてプリエンプティブに実行する複数の3Pアダプタは、クライアントデバイスにおいて記憶された利用可能な3Pアダプタのサブセットである。それらの実装形態のうちのいくつかでは、方法は、クライアントデバイスにおいてプリエンプティブに実行するために、利用可能な3Pアダプタから、特定の3Pアダプタを選択することをさらに含む。選択は、クライアントデバイスにおける特定の3Pアダプタの対応する利用の新しさ、クライアントデバイスと特定の3Pアダプタに対応する特定のスマートデバイスとの間の通信チャネルのための信号強度、時刻、および/または曜日など、1つまたは複数の動的基準に基づき得る。
【０１３４】
いくつかの実装形態では、方法は、プリエンプティブに実行することより前に、クライアントデバイスにおいて、リモートサーバから、場合によっては、クライアントデバイスのための、特定のスマートデバイス、または3Pの追加のスマートデバイスの登録に応答して、特定の3Pアダプタを受信することをさらに含む。
【０１３５】
いくつかの実装形態では、クライアントデバイスにおいてプリエンプティブに実行された3Pアダプタのうちの追加の3Pアダプタが、特定の通信チャネルとは異なる追加の特定の通信チャネルに割り当てられる。それらの実装形態のうちのいくつかでは、特定の通信チャネルは、クライアントデバイスの第1の無線チャネルであり、追加の特定の通信チャネルは、クライアントデバイスの第2の無線チャネルである。たとえば、第1の無線チャネルは、Bluetoothチャネルであり得、第2の無線チャネルは、Wi-Fi無線チャネルであり得る。
【０１３６】
いくつかの実装形態では、3Pアダプタによって生成された特定の固有のコマンドは、3Pアダプタの特定のプロトコルスイートに適合し、クライアントデバイスにおいてプリエンプティブに実行された3Pアダプタのうちの追加の3Pアダプタは、特定のプロトコルスイートとは異なる追加のプロトコルスイートに適合するコマンドを生成する。それらの実装形態のうちのいくつかでは、追加の3Pアダプタおよび3Pアダプタの両方が、特定の通信チャネルに割り当てられる。それらの実装形態のいくつかのバージョンでは、3Pアダプタの特定のプロトコルスイートは、業界によって採用された標準(industry adopted standard)に適合せず、場合によっては、3Pにとって独自仕様であり得る。
【０１３７】
いくつかの実装形態では、特定の汎用スマートデバイス制御コマンドが、追加のクライアントデバイスにおいて受信されたユーザインターフェース入力に応答して生成され、特定の汎用スマートデバイス制御コマンドを識別することは、ローカルネットワーク通信を介して、追加のクライアントデバイスから、特定の汎用スマートデバイスコマンドを受信することを含む。それらの実装形態のいくつかでは、方法は、特定の汎用スマートデバイス制御コマンドを識別するより前に、クライアントデバイスと特定のスマートデバイスとの間の特定の通信チャネルのための信号強度を決定すること、および、信号強度を示すデータを送信することをさらに含む。特定の汎用スマートデバイスコマンドは、信号強度を示す送信されたデータに基づいて、追加のクライアントデバイスから受信され得る。
【０１３８】
いくつかの実装形態では、複数の3Pアダプタから、特定のスマートデバイス制御コマンドに基づいて、特定の3Pアダプタを選択することは、汎用スマートデバイス制御コマンドが、3Pアダプタのための識別子をさらに指定すること、および/または、汎用スマートデバイス制御コマンドによって指定された特定のスマートデバイスが、クライアントデバイスにおいて3Pアダプタに割り当てられることに基づいて、3Pアダプタを選択することを含む。
【０１３９】
いくつかの実装形態では、方法は、汎用スマートデバイス制御コマンドに基づいて、特定のスマートデバイスのためのアドレスを識別すること、および、特定の固有のコマンドが、特定のスマートデバイスのためのアドレスのみにアドレス指定されることを検証することをさらに含む。選択された特定の通信チャネルを使用して、特定の固有のコマンドを送信することは、検証することを条件とし得る。
【０１４０】
いくつかの実装形態では、1つまたは複数のプロセッサによって実施される方法が提供され、インターネットアクセスを提供するセキュアWi-Fiネットワークに接続されたアシスタントクライアントデバイスのエコシステムのうちの各アシスタントクライアントデバイスに、セキュアWi-Fiネットワークに接続するための資格情報を欠いているスマートデバイスによってブロードキャストされているアクセスポイントの利用可能性について、1つまたは複数の通信チャネルをスキャンすることを行わせることを含む。方法は、スキャンすることによって生成されたデータに基づいて、クライアントデバイスのエコシステムのうちの複数のアシスタントクライアントデバイスの各々が、アクセスポイントの利用可能性を検出したと決定することをさらに含む。方法は、アクセスポイントの利用可能性を検出した複数のアシスタントクライアントデバイスから、単一のアシスタントクライアントデバイスを選択することをさらに含む。複数のアシスタントクライアントデバイスからの、単一のアシスタントクライアントデバイスの選択は、場合によっては、単一のアシスタントクライアントデバイスのためのヒューマンインタラクションデータに少なくとも部分的に基づき得る。方法は、単一のアシスタントクライアントデバイスに、セキュアWi-Fiネットワークとの接続を切断すること、接続を切断した後、アクセスポイントを介して、スマートデバイスへの接続を確立すること、およびセキュアWi-Fiネットワークに接続するための資格情報を、接続を介してスマートデバイスとセキュアに共有することを行わせることをさらに含む。
【０１４１】
本明細書で開示する技術のこれらおよび他の実装形態は、以下の特徴のうちの1つまたは複数を含み得る。
【０１４２】
いくつかの実装形態では、単一のアシスタントクライアントデバイスを選択することは、単一のアシスタントクライアントデバイスのためのヒューマンインタラクションデータに少なくとも部分的に基づき得、ユーザインターフェース入力が、しきい値時間量内に単一のアシスタントクライアントデバイスにおいて受信されていないことを、ヒューマンインタラクションデータが示すことに基づいて、単一のアシスタントクライアントデバイスを選択すること、前に受信されたユーザインターフェース入力に応答して、可聴出力がアシスタントクライアントデバイスによってレンダリングされていないことを、ヒューマンインタラクションデータが示すことに基づいて、単一のアシスタントクライアントデバイスを選択すること、および/または、単一のアシスタントクライアントデバイスが、アクセスポイントを検出した複数のアシスタントクライアントデバイスのうちのいずれかの他のものよりも低い頻度で利用されることを、ヒューマンインタラクションデータが示すことに基づいて、単一のアシスタントクライアントデバイスを選択することを含み得る。
【０１４３】
いくつかの実装形態では、方法は、セキュアWi-Fiネットワークを介して、スマートデバイスから登録データを受信すること、および、登録データを使用して、アシスタントクライアントデバイスのエコシステムに関連付けられた、記憶されたホームグラフ内で、スマートデバイスを割り当てることをさらに含む。それらの実装形態のうちのいくつかでは、登録データを使用して、記憶されたホームグラフ内でスマートデバイスを割り当てることは、エコシステムのアシスタントクライアントデバイスのうちの1つまたは複数を介して検出された、バイオメトリックデータが、記憶されたホームグラフに関連付けられたアカウントに対応するとの決定に基づいて、記憶されたホームグラフ内でスマートデバイスを割り当てることを含む。たとえば、記憶されたホームグラフは、アシスタントクライアントデバイスのエコシステムに関連付けられ、かつ追加のアカウントに関連付けられた、追加のホームグラフの代わりに、バイオメトリックデータに基づいて選択され得る。様々な実装形態では、バイオメトリックデータは、エコシステムのアシスタントクライアントデバイスのうちの1つまたは複数の、1つまたは複数のマイクロフォンを介して検出された、ボイスデータを含む。
【０１４４】
いくつかの実装形態では、1つまたは複数のプロセッサによって実施される方法が提供され、対応する短距離無線を各々有する複数のアシスタントクライアントデバイスの各々から、短距離無線を介した、スマートデバイスへの、対応する接続のための対応する信号強度を受信することを含む。方法は、受信された信号強度に基づいて、複数のアシスタントデバイスのうちの所与のアシスタントデバイスが、スマートデバイスをローカルに制御するために好ましいと決定することをさらに含む。方法は、少なくとも1つのスマートデバイスと、スマートデバイスにおいて変更されることになる少なくとも1つの状態とを指定する、汎用スマートデバイス制御コマンドを識別することをさらに含む。方法は、所与のアシスタントデバイスがスマートデバイスをローカルに制御するために好ましいとの決定に基づいて、所与のアシスタントデバイスに汎用スマートデバイス制御コマンドを送信することであって、送信が、所与のアシスタントデバイスに、汎用スマートデバイス制御コマンドをローカルに処理して、固有のコマンドを生成することであって、固有のコマンドが、汎用スマートデバイス制御コマンドに対応し、スマートデバイスにおいて状態の変更を実施するために、スマートデバイスによって直接解釈可能である、こと、および、スマートデバイスにおいて状態の変更を実施するために、短距離無線上で、固有のコマンドを送信することを行わせるためのものである、ことをさらに含む。
【０１４５】
いくつかの実装形態では、1つまたは複数のプロセッサによって実施される方法が提供され、いずれかのプロビジョニングされていないスマートデバイスについて、1つまたは複数の通信チャネルをスキャンすることを、アシスタントクライアントデバイスのエコシステムのうちの各アシスタントクライアントデバイスに行わせることを含む。方法は、スキャンすることによって生成されたデータに基づいて、クライアントデバイスのエコシステムのうちの少なくとも所与のアシスタントクライアントデバイスが、プロビジョニングされていない所与のスマートデバイスを検出したと決定することをさらに含む。方法は、ローカルに記憶されたサードパーティ(3P)アダプタを利用して、3Pのためのフォーマットにおいて所与のスマートデバイスによって与えられた登録データを処理して、アシスタントクライアントデバイスに関連付けられた自動アシスタントのためのスキーマにおけるものである登録情報を生成することを、所与のアシスタントクライアントデバイスに行わせることをさらに含む。方法は、登録情報を利用して、アシスタントクライアントデバイスのエコシステムに関連付けられたアカウントに関連して、所与のアシスタントクライアントデバイスを登録することをさらに含む。
【０１４６】
いくつかの実装形態では、1つまたは複数のプロセッサによって実施される方法が提供され、対応する短距離無線を各々有する複数のアシスタントクライアントデバイスの各々から、短距離無線を介した、スマートデバイスへの、対応する接続のための対応する信号強度を受信することを含む。方法は、受信された信号強度に基づいて、複数のアシスタントデバイスのうちの所与のアシスタントデバイスが、スマートデバイスをローカルに制御するために好ましいと決定することをさらに含む。方法は、所与のアシスタントデバイスがスマートデバイスをローカルに制御するために好ましいとの決定に基づいて、スマートデバイスに対応する、特定のサードパーティ(3P)アダプタが、所与のアシスタントデバイスにおいてダウンロードされ、ローカルに記憶されることを引き起こすことをさらに含む。特定の3Pアダプタは、たとえば、汎用スマートデバイス制御コマンドをローカルに処理して、固有のコマンドを生成することであって、固有のコマンドが、汎用スマートデバイス制御コマンドに対応し、スマートデバイスにおいて状態の変更を実施するために、スマートデバイスによって直接解釈可能である、ことを行うように構成され得る。
【０１４７】
本明細書で開示する技術のこれらおよび他の実装形態は、以下の特徴のうちの1つまたは複数を含み得る。
【０１４８】
方法は、所与のアシスタントデバイスがスマートデバイスをローカルに制御するために好ましいとの決定に基づいて、特定の3Pアダプタが所与のアシスタントデバイスにおいてプリエンプティブに実行されることを引き起こすことをさらに含み得る。
【０１４９】
いくつかの実装形態では、所与のアシスタントデバイスがスマートデバイスをローカルに制御するために好ましいとの決定に基づいて、特定の3Pアダプタが、スマートデバイスのうちの他のものを除外して、所与のアシスタントデバイスのみにダウンロードされる。
【符号の説明】
【０１５０】
101  ワイヤレスルータ、セキュアワイヤレスルータ
103  ユーザ
1051、1052、1053  ワイドエリアネットワーク
1101〜N  クライアントコンピューティングデバイス、クライアントデバイス、アシスタントクライアントデバイス
110、110N、1101〜3  クライアントデバイス
1101  クライアントデバイス、第1のクライアントデバイス
1102  第2のクライアントデバイス、クライアントデバイス、アシスタントクライアントデバイス
1102〜N  代替クライアントデバイス
1103  第3のクライアントデバイス
111、1111〜N  I/O構成要素
112A〜N  無線
113A〜N  アダプタ、ローカルアダプタ
113A、113B  3Pアダプタ
1141〜N  アダプタインタラクションエンジン
1141  アダプタインタラクションエンジン、インタラクションエンジン
1151〜N、1151  ルーティングエンジン
1161〜N、1161  登録エンジン
117、117N  自動アシスタントクライアント
1171、1171〜N  自動アシスタントクライアント、アシスタントクライアント
120  クラウドベース自動アシスタント構成要素、クラウドベース自動構成要素、リモート自動アシスタント構成要素、リモートクラウドベース自動アシスタント構成要素
121  音声テキスト(STT)プロセッサ、STTモジュール
122  NLUエンジン、NLUモジュール
123  TTSモジュール
125  クラウドルーティングエンジン
127  クラウド登録エンジン
140  スマートデバイスシステム、第2のスマートデバイスシステム、システム
140A〜N  スマートデバイスシステム、第1のスマートデバイスシステム
145  スマートデバイス
145A〜N  スマートデバイス、デバイス
145A1  第1のスマートデバイス、スマートライト
145B1  第2のスマートデバイス、スマートライト
145B2  第3のスマートデバイス、スマートライト
145B3  スマートドアベル
145C1  スマート洗濯機
145D1  スマートサーモスタット
147B  ハブ、スマートハブ
150  3Pアダプタデータベース
152、1521、1521〜N  ホームグラフ
250、252、254、256、258、260、262  部屋
300、400  例示的な状態図
810  コンピューティングデバイス
812  バスサブシステム
814  プロセッサ
816  ネットワークインターフェースサブシステム
820  ユーザインターフェース出力デバイス
822  ユーザインターフェース入力デバイス
824  記憶サブシステム
825  メモリサブシステム、メモリ
826  ファイル記憶サブシステム
830  メインランダムアクセスメモリ(RAM)
832  読取り専用メモリ(ROM)
【図１】
2021530762.tif 000003
【図２】
2021530762.tif 000004
【図３】
2021530762.tif 000005
【図４】
2021530762.tif 000006
【図５】
2021530762.tif 000007
【図６】
2021530762.tif 000008
【図７】
2021530762.tif 000009
【図８】
2021530762.tif 000010
【国際調査報告】
2021530762.tif 000011
2021530762.tif 000012