接続されたスマートホームデバイスのネットワークは、家庭内の複数のユーザによって使用される共用デバイスを含み得る。デバイスが複数のユーザを有する共用デバイスであるため、デバイスの任意の所与のユーザに固有の個人情報を記憶することを防止することが有益であり得る。更に、共用デバイスの他のユーザの個人データに関する無許可のクエリをユーザが芳香することを防止することが有益であり得る。共用デバイスの各ユーザに関連付けられた例示的な個人的又は私的ユーザ情報としては、連絡先リスト、カレンダ項目、テキストメッセージ、電子メール、通話履歴、警報、リマインダ、及び個人データ又は私的ユーザデータとみなされ得る他の電子データを挙げることができるが、これらに限定されない。様々な実施形態では、追加の個人的又は私的情報としては、位置情報、家族関係、ユーザの好み、アプリケーション情報、個人デバイス上に記憶されたデータ、デバイス位置、家族のデバイス位置、医療情報、又は健康情報を含み得るが、これらに限定されない。いくつかの実施形態では、いくつかのユーザデータは、本質的に個人的又は私的であるとみなされるが、他の情報は、ユーザによって個人情報又は私的情報として指定することができる。
本明細書に記載される実施形態は、ペアリングされたユーザデバイスを介して共用デバイス上の仮想アシスタントが個人ドメイン機能にアクセスすることを可能にする、システム及び方法を提供する。ペアリングされたユーザデバイスは、共用デバイスに対するコンパニオンデバイスとして使用することができる。共用デバイスとコンパニオンデバイスとの間のペアリングは、デバイスがセキュアデータチャネルを介して信頼でき、かつ、セキュアな通信を確立することを可能にすることができる。共用デバイス上の仮想アシスタントが、共用デバイス上に記憶されていない、かつ共用デバイスにアクセス可能でない個人ユーザ情報へのアクセスを必要とするクエリを受信したイベントにおいて、共用デバイスは、コンパニオンデバイスに接続し、コンパニオンデバイスに個人ユーザデータに関連する動作を実行するように要求することができる。
共用デバイスとコンパニオンデバイスとの間の通信は、コンパニオンリンクと呼ばれるセキュアデータチャネル上で実行することができる。コンパニオンリンクは、ホームネットワーク環境内の接続されたデバイス用の永続的な低遅延メッセージングシステムを提供する。いくつかの実施形態では、コンパニオンリンクは、ホーム内の個人モバイルデバイスを有する、又はインターネットを介して到達可能なスピーカデバイスなどの、ホーム内の固定型共用デバイスのリンクをサポートする。コンパニオンリンクは、共用デバイスが個人要求を1つ以上の個人デバイスにリダイレクトすることを可能にするが、共用デバイスはそうしなければ、個人要求をプライバシーの懸念に起因して取り扱うことができない。ユーザに関連付けられた個人デバイスへの個人要求のリダイレクトにより、共用デバイス上の仮想アシスタントがプライバシー保持方式で受信及び要求することを可能にすることができる。
コンパニオンデバイスへの個人クエリのリダイレクトを可能にすることに加えて、一実施形態では、コンパニオンリンクはまた、ホームネットワーク環境内のデバイス用の汎用メッセージングシステムを提供する。汎用メッセージングシステムは、コンパニオンリンクを介してメッセージを交換することによって、複数のホームデバイスが協調して機能することを可能にする。例えば、複数のスマートスピーカデバイス間のオーディオ再生を調整して、メディアアイテムの再生を調整すること、ユーザに最も近いスピーカを介してユーザにオーディオ通知を選択的に提供すること、複数のスピーカをマルチチャネルオーディオシステムに構成すること、又は発話要求及び応答の持続時間中にスピーカでオーディオダッキングを調整すること、などであるがこれらに限定されない動作を、デバイスが実行することを可能にすることができる。
共用デバイスは、発見プロトコルを介して、コンパニオンリンクサービス用のサポートをアドバタイズすることができる。共用デバイスと同じネットワーク上の個人ユーザデバイスは、共用デバイスによって、アドバタイズされたコンパニオンリンクサービスを発見し、アドバタイズされた情報を使用して、共用デバイスと接続することができる。個人デバイスは、共用デバイスとのペアリングプロセスを実行して、ユーザ用のコンパニオンデバイスになることができる。一実施形態では、ペアリングプロセスは、ユーザデバイスが近距離無線通信機構を介してコンパニオンデバイスと識別子、鍵、又はシークレットを交換する近接要素を含む。ペアリングプロセスはまた、コンパニオンリンクを介した共用デバイスとコンパニオンデバイスとの間のその後の接続を容易にすることができる、存在情報及び到達可能情報の交換を含むことができる。
以下の図及び説明では、参照番号は、参照番号がN00である要素が図Nで最初に紹介されるように、参照される要素が導入されている図を示す。例えば、100と199との間の参照番号を有する要素が図1に最初に示され、一方、200と299との間の参照番号を有する要素が図2に最初に示される、などである。所与の図の説明内では、以前に導入された要素が参照される場合とされない場合がある。
以下の図に示されるプロセス及び動作は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(非一時的機械可読記憶媒体上の命令として)、又はハードウェア及びソフトウェアの両方の組み合わせを含む処理ロジックを介して実行することができる。以下でプロセスのいくつかについてシーケンシャルな動作の観点で述べるが、説明する動作のいくつかは、異なる順序で実施できることを理解すべきである。更には、一部の動作は、逐次的にではなく、並列して実行することができる。加えて、いくつかの動作は、任意選択的に示されてもよく、全ての実施形態によって実行されない。
システム及び環境
図1A~図1Bは、実施形態による、仮想アシスタント及び個人データドメインを可能にする電子デバイスシステムのブロック図を示す。図1Aは、本明細書に記載される実施形態による、仮想アシスタントシステム100のブロック図を示す。図1Bは、実施形態による、仮想アシスタントシステム100内のデバイス間の通信を可能にするコンパニオンリンクシステム130のブロック図を示す。図1Bのコンパニオンリンクシステム130は、仮想アシスタントシステム内の個人データドメインを確立して、共用デバイス上に記憶されていない個人ユーザデータへのアクセスを必要とするクエリに、共用デバイス上の仮想アシスタントが回答することを可能にする。図1A~図1Bのブロック図は、部分的にロジカルであり、つまり、例示されるいくつかの構成要素が、同じ物理サーバ又はデバイス内に常駐するロジック構成要素を分離してもよい。
図1Aは、発話及び/又はテキスト形式で受信された自然言語入力を解釈してユーザ意図を推測する処理システムを提供する仮想アシスタントシステム100を示す。次いで、仮想アシスタントシステム100は、推測されたユーザ意図に基づいてアクションを実行することができる。様々な実施形態では、システムは、推測されたユーザ意図を達成するように設計されたステップ及びパラメータを有するタスクフローを特定することと、推測されたユーザ意図からタスクフローに特定の要件を入力することと、プログラム、方法、サービス、又はAPIなどを呼び出すことによってそのタスクフローを実行することと、可聴(例えば、発話)形式及び/又は視覚形式でユーザに対する出力応答を生成することとを含むがこれらに限定されない、動作のセットを実行することができる。本明細書で使用するとき、用語仮想アシスタントは、用語「デジタルアシスタント」、「インテリジェント自動アシスタント」又は「自動デジタルアシスタント」と互換的に使用することができ、一般に、発話及び/又はテキスト形式の自然言語入力を解釈してユーザの代わりにアクションを実行する任意の情報処理システムを指す。
仮想アシスタントは、自然言語コマンド、要求、ステートメント、叙述、及び/又は照会の形態で、少なくとも部分的にユーザ要求を受け入れることができる。典型的には、ユーザ要求は、仮想アシスタントによる情報回答又はタスクの実行のいずれかを求めることができる。ユーザ要求への満足な応答は、要求された情報回答の提供、要求されたタスクの実行、又はその2つの組み合わせとすることができる。例えば、ユーザは仮想アシスタントに、「私は今どこにいますか?(Where am I right now?)」などの質問をすることができる。ユーザの現在位置に基づいて、仮想アシスタントは、「あなたは西口近くのゴールデンゲートパークにいます。(You are in Golden Gate Park near the west entrance.)」と回答することができる。ユーザはまた、例えば、「私の友人を、来週の私のガールフレンドの誕生日パーティーに招待して下さい。(Please invite my friends to my girlfriend's birthday party next week.)」というタスクの実行を要求してもよい。それに応じて、仮想アシスタントは、「はい、ただ今(Yes,right away.)」と述べることによって、その要求に肯定応答することができ、次いで、そのユーザの電子アドレス帳に列挙されているユーザの友人のそれぞれに、ユーザの代わりに好適なカレンダ招待を送信することができる。要求されたタスクの実行の間、仮想アシスタントは、時に、長時間にわたって情報を複数回交換することを含む連続的なダイアログにおいて、ユーザと対話することができる。情報又は様々なタスクの実行を要求するために仮想アシスタントと対話する方法は、他にも数多く存在する。口頭応答を提供し、プログラムされたアクションを取ることに加えて、仮想アシスタントは、他の視覚形態又はオーディオ形態の応答を、例えば、テキスト、アラート、音楽、ビデオ、アニメーションなどとして提供することもできる。
図1Aに示すように、仮想アシスタントシステム100は、1つ以上のサーバデバイスを有するサーバシステム108を含むことができる。一実施形態では、サーバシステム108は、複数の仮想アシスタントクライアント(VAC)(例えば、VAC101、VAC102)と通信できる仮想アシスタントサーバ106を含む。仮想アシスタントクライアントは、サーバシステム108と接続及び通信することができる複数の電子デバイス上で実行することができる。第1の仮想アシスタントクライアント(例えば、VAC101)は、スマートスピーカデバイスなどのスマートホームデバイス103上で実行することができる。第2の仮想アシスタントクライアント(例えば、VAC102)は、スマートフォンデバイスなどのユーザデバイス104上で実行することができる。仮想アシスタントクライアントは、ローカルエリアネットワークと広域ネットワークとの組み合わせを含み得る1つ以上のネットワーク110を通じて、仮想アシスタントサーバ106と通信することができる。様々な仮想アシスタントクライアントは、ユーザに面する入力及び出力処理などのクライアント側機能を提供することができ、仮想アシスタントサーバ106と通信することができる。仮想アシスタントサーバ106は、1つ以上のネットワーク110を介して接続された任意の数のユーザデバイス上に常駐する多数の仮想アシスタントクライアントに、サーバ側機能を提供することができる。
一実施形態では、仮想アシスタントサーバ106は、VAクライアントへのI/Oインタフェース112、1つ以上の処理モジュール114、データ及び処理モデル116を含むストレージデバイス、並びに外部サービスへのI/Oインタフェース118を含む。VAクライアントへのI/Oインタフェース112は、仮想アシスタントサーバ106用のクライアント向け入出力処理を容易にすることができる。1つ以上の処理モジュール114は、データ及び処理モデル116を利用して、ユーザの意図を推測するために発語入力に対して自然言語処理を実行することができる。次いで、1つ以上の処理モジュール114は、推測されたユーザの意図に基づいてタスク実行を行うことができる。外部サービスへのI/Oインタフェース118は、1つ以上のネットワーク110を介した仮想アシスタントサーバ106と外部サービス120との間の通信を容易にすることができる。一実施形態では、仮想アシスタントサーバ106は、ユーザデバイス104上でVAC102を受信した要求に応じてタスクを完了するために、又はVAC102で受信されたクエリに応じて情報を取得するために、外部サービス120と通信することができる。外部サービス120としては、ナビゲーションサービス(単数又は複数)、メッセージングサービス(単数又は複数)、情報サービス(単数又は複数)、カレンダサービス(単数又は複数)、及び/又は電話サービス(単数又は複数)などを挙げることができる。例えば、1つ以上のナビゲーションサービスを使用して、ユーザデバイス上のVAC102で受信した要求に応じて、ユーザデバイス104上での経路誘導ナビゲーションを可能にすることができる。外部サービスは、位置情報、天気、財務情報、又はアカウント情報を追加的に含むことができる。様々な実施形態では、外部サービス120のいくつかを可能にするロジックは、サーバシステム108内に常駐することができ、ロジックの一部は、ユーザデバイス104内に常駐することができる。
仮想アシスタントサーバ106は、仮想アシスタントクライアントから受信した発語入力に応じてメッセージを送信するために、1つ以上のメッセージングサービスと通信することができる。インターネット検索エンジン又は情報データベースなどの情報サービス(単数又は複数)は、仮想アシスタントサーバ106によってアクセスされて、情報クエリに応じてユーザに情報を提供することができる。一実施形態では、仮想アシスタントサーバ106は、1つ以上のカレンダサービスにアクセスして、タスク若しくはイベントをスケジュールし、又はタスク若しくはイベントに関するクエリを満たすことができる。仮想アシスタントサーバ106はまた、1つ以上の電話サービスにアクセスして、ユーザに対する通話を開始することができる。
様々な実施形態では、仮想アシスタントサーバ106は、ユーザによってクライアントに提供された発話入力の処理によってVAC101、102を支援することができる。一実施形態では、発話処理及び自然言語処理へのテキストは、VAC101、102によって部分的に、及び仮想アシスタントサーバ106上で部分的に、実行することができる。仮想アシスタントサーバ106のデータ及び処理モデル116は、VAC101、102にローカルでアクセス可能である対応するモデルよりも複雑かつ高性能であり得る。したがって、仮想アシスタントサーバ106は、いくつかのコマンドを処理するためにより好適であり得、処理されたコマンドの結果を1つ以上のネットワーク110を介してVAC101、102に送り戻すことができる。ユーザに提示された仮想アシスタント対話フローを構築する動作は、仮想アシスタントサーバ106とVAC101、102との間で共有することができる。一実施形態では、ユーザ入力の初期処理、発話出力の提示、及び大部分のユーザデータへのアクセスは、VAC101、102によって実行することができる。そのような実施形態では、発話認識及び自然言語処理は、仮想アシスタントサーバ106によって少なくとも部分的に実行することができる。
スマートホームデバイス103及びユーザデバイス104は、1つ以上のネットワーク110ローカルエリアネットワーク(LAN)及び/又は広域ネットワーク(WAN)、例えばインターネットを介して、互いに、及びサーバシステム108と通信することができる。1つ以上のネットワークは、様々な有線又は無線プロトコルを含む、任意の既知の相互接続又はネットワークプロトコルを使用して、実装することができる。例示的な相互接続及び/又はネットワークプロトコルとしては、イーサネット、ユニバーサルシリアルバス(USB)、FIREWIRE(登録商標)、移動通信用グローバルシステム(GSM)、拡張データGSM環境(EDGE)、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、ロングタームエボリューション(LTE)、Bluetooth(登録商標)、Wi-Fi、ボイスオーバーインターネットプロトコル(VoIP)、Wi-MAX、又は任意の他の好適な通信プロトコルが挙げられる。
様々な実施形態では、サーバシステム108は、スタンドアロンデータ処理装置、又はコンピュータの分散ネットワーク上に実装することができる。いくつかの実施例では、サーバシステム108はまた、サーバシステム108の基礎的なコンピューティングリソース及び/又はインフラストラクチャリソースを提供するために、様々な仮想デバイス、及び/又はサードパーティサービスプロバイダ(例えば、サードパーティクラウドサービスプロバイダ)のサービスを利用することができる。
様々な実施形態では、スマートホームデバイス103は、スマートスピーカデバイス、スマートホームハブデバイス、又は別のタイプのインテリジェント電子機器であり得る。例えば、一実施形態では、スマートホームデバイス103は、分散メディア再生システムの一部であるように構成できるスマートスピーカデバイスである。スマートスピーカデバイスの具体例は、Apple Inc.(Cupertino,California)による、HomePod(登録商標)スマートスピーカデバイスである。一実施形態では、スマートホームデバイス103は、スマートサーモスタット又はスマート照明システムなどのインテリジェント及び/又はデジタル接続デバイスを含むがこれらに限定されない、デジタル接続されたスマートホームシステム内の1つ以上の他のデバイスを管理するように構成されたスマートホームハブデバイスとすることができる。スマートホームデバイス103は、データを交換するためにユーザデバイス104と接続することができる。スマートホームデバイス103とユーザデバイス104との間の接続は、1つ以上のネットワーク110を介して実行することができる。一実施形態では、スマートホームデバイス103及びユーザデバイス104は、ユーザデバイス104がLANとインターネット接続との間で遷移する間、永続的接続を動的に維持することができる。
ユーザデバイス104は、任意の好適な電子デバイスであり得る。例えば、一実施形態では、ユーザデバイス104は、ポータブル多機能デバイス、多機能デバイス、又は個人電子デバイスであり得る。ポータブル多機能デバイスは、例えば、個人データアシスタント、音楽プレーヤ、及び/又はアプリケーション(例えば、appsなど)を実行することができるアプリケーションプロセッサなどの他の機能も含む携帯電話であり得る。ポータブル多機能デバイスの具体的な実施例としては、Apple Inc.(Cupertino,California)による、iPhone(登録商標)、iPod Touch(登録商標)、及びiPad(登録商標)デバイスを挙げることができる。ポータブル多機能デバイスの他の例としては、ラップトップ若しくはタブレットコンピュータ、又はスマートウォッチデバイスなどのウェアラブル電子デバイスを挙げることができるが、これらに限定されない。いくつかの実施形態では、ユーザデバイス104は、デスクトップコンピュータ、ゲームコンソール、テレビ、又はテレビセットトップボックスなどであるが、これらに限定されない、非ポータブル多機能デバイスとすることができる。一実施形態では、ユーザデバイス104は、ホーム、車両、モーターホームなどの備品であり得る。いくつかの実施形態では、ユーザデバイス104は、車両、ホーム、若しくはモバイルホーム用のドア又は別の入口点であり、又はそれらと連携して動作することができる。
ユーザデバイス104には、タッチ感知面(例えば、タッチスクリーンディスプレイ及び/又はタッチパッドインタフェース)、又は物理キーボード、マウス、及び/若しくはジョイスティックなどの1つ以上の物理ユーザインタフェースデバイスを挙げることができる。
一実施形態では、スマートホームデバイス103上のVAC101は、ユーザデバイス104上のVAC102と通信して、発語入力の処理を容易にし、又はスマートホームデバイス103で受信したコマンドの意図の推測を容易にすることができる。例えば、一実施形態では、スマートホームデバイス103は、家庭内の複数のユーザによって使用される共用デバイスであり得る。連絡先情報、カレンダ情報、メッセージデータなど、共用デバイスのユーザに関する特定の個人情報又は私的情報は、所与のユーザ用のプライベートとして分類することができる。共用デバイスであるスマートホームデバイス103上にそのような私的情報を記憶することを防止するために、又は、そのような情報(例えば、仮想アシスタントサーバ106)を含む、或いはアクセスするサーバへの共用デバイスのアクセスを可能にすることを防止するために、スマートホームデバイス103上のVAC101は、そのような情報へのアクセスを容易にし得るユーザデバイス104に関連付けることができる。スマートホームデバイス103上のVAC101が、ユーザに関連付けられた私的情報へのアクセスを必要とするコマンド又はアクションを実行すべき場合、スマートホームデバイス103上のVAC101は、ユーザデバイス104、及び/又はユーザデバイス104上のVAC102と通信して、要求されたコマンド又はアクションを実行するために使用される情報を取得することができる。
単一のユーザは、複数のユーザデバイス104に関連付けることができる。そのような状況において、ユーザデバイス104の単一のインスタンスは、コンパニオンデバイスとして指定されてもよい。次いで、スマートホームデバイス103は、特定の要求の処理を可能にするために、コンパニオンデバイスと通信する。例えば、ユーザは、1つ以上のスマートフォンデバイス、1つ以上のタブレットデバイス、又はラップトップデバイスなどの、ユーザデバイス104の複数のインスタンスを有することができる。ユーザは、スマートホームデバイス103が通信して私的ユーザ情報へのアクセスを取得する先のコンパニオンデバイスとして、そのようなユーザデバイス104のうちの1つを指定することができる。
いくつかの実施形態では、スマートホームデバイス103及びユーザデバイス104は、ユーザデバイス104上のユーザデバイス104及び/又はVAC102にスマートホームデバイス103上のVAC101が私的情報をクエリすることを可能にする、永続的又は半永続的接続であるコンパニオンリンク105を確立及び維持することができる。一実施形態では、コンパニオンリンク105は、ホーム内のデバイス間の通信を可能にする常時接続された低遅延メッセージングシステムである。そのような接続は、LAN上でローカルに維持することができ、又はインターネットなどの広域ネットワーク上で確立することができる。コンパニオンリンク105は、要求がプライバシー保持方式で処理され得るように、ユーザデバイスへの個人要求を共用デバイスがリダイレクトすることを可能にすることができる。
図1Bは、仮想アシスタントシステム100内のデバイス間の通信を可能にする、図1Bのコンパニオンリンクシステム130を示す。様々な実施形態では、コンパニオンリンクシステム130は、複数のデバイス間でのセキュアな、かつ認証されたメッセージ交換を可能にすることができる。複数のデバイスは、それぞれがポータブル多機能デバイスであり得る1つ以上のユーザデバイス(例えば、ユーザデバイス104、ユーザデバイス115)を含むことができる。複数のデバイスはまた、複数のユーザによって使用され得る1つ以上の共用スマートホームデバイス(例えば、スマートホームデバイス103、スマートホームデバイス133)などの1つ以上の固定型デバイスを含むことができる。一実施形態では、コンパニオンリンクのセット105a~105bは、ユーザデバイスと1つ以上の共用スマートホームデバイスとの間のメッセージベースの通信を可能にし得る。コンパニオンリンク105cがまた、共用スマートホームデバイス間に確立されて、それらのデバイス間の通信を可能にすることができる。一実施形態では、コンパニオンリンク105dがまた、ユーザデバイス間に確立されて、デバイスデータのピアツーピア交換を可能にすることができる。
一実施形態では、コンパニオンリンクのセット105a~105bを使用して、ユーザに関連付けられた個人デバイスへの個人要求を共用固定型デバイスがリダイレクトすることを可能にし、プライバシー保持方式でそのような要求を処理することを可能にすることができる。例えば、一実施形態では、ユーザは、「次の会議はいつですか?(When is my next meeting?)」などの個人用クエリを共用デバイスに発話することができる。個人クエリは、スマートホームデバイス103又はスマートホームデバイス133上のVAC101又はVAC131によって受信することができる。そのような要求は発話者のカレンダを使用するため、共用デバイスは、そのような個人データに直接アクセスできない場合がある。そのような要求を満足するために、共用デバイスは、ユーザデバイス104などの指定されたコンパニオンデバイスにクエリをリダイレクトし、それによってクエリの分析を実行し、ユーザへの再生のために共用デバイスに返送できるオーディオ応答を生成することができる。
様々な実施形態では、リダイレクトは、明示的又は暗黙的な方法で実行することができる。明示的なリダイレクトの場合、スマートホームデバイス103上のVAC101又はスマートホームデバイス133上のVAC131は、要求を受信し、処理のために仮想アシスタントサーバ106に少なくとも部分的に要求をサブミットすることができる。仮想アシスタントサーバ106は、要求を満たすために、少なくともいくつかの情報がコンパニオンデバイス(例えば、ユーザデバイス104)から必要とされ得ることを判定することができる。一実施形態では、仮想アシスタントサーバ106が、要求を処理するのに使用される個人情報を取り出すために1つ以上のネットワーク110を介してユーザデバイス104に要求を送信できるという判定に応じて、明示的なリダイレクトを実行することができる。一実施形態では、共用スマートホームデバイスは、スマートホームデバイス103上の仮想アシスタントクライアントが仮想アシスタント要求をユーザデバイス104上のVAC102にリダイレクトできる、暗黙的なリダイレクトを使用することができる。次いで、ユーザデバイス104上のVAC102は、要求がユーザデバイス104で直接受信されたかのように要求を処理することができる。次に、ユーザデバイス104は、共用デバイス上で再生するためのオーディオ応答を構成することができる。
プライバシー保持方式でのクエリの処理を可能にすることに加えて、一実施形態では、コンパニオンリンク105cは、スマートホームデバイス103及びスマートホームデバイス133などの共用デバイス間の通信を可能にする汎用メッセージングを可能にすることができる。そのようなリンクにより、共用デバイスが協調して働き、動作を調整できる。例えば、スマートホームデバイス103及びスマートホームデバイス133は、音楽又は他のメディアを再生することができる分散メディア再生システムの一部として構成することができる。スマートホームデバイス103とスマートホームデバイス133との間に確立されたコンパニオンリンク105cを使用して、メディア再生を調整し、又は複数のデバイスを介してマルチチャネルオーディオ再生を調整することができる。ユーザがスマートホームデバイスのうちの1つにクエリを発話すると、デバイスは、メッセージを交換して、発話要求及び任意の関連するオーディオ応答の持続時間の間、オーディオ再生のダッキングを調整することができる。コンパニオンリンクシステム130を使用すると、任意の数の共用スマートホームデバイス及びユーザデバイスは、通信して、オーディオデータ、メディアプレイリスト、構成データ、及び接続されたデジタルホームシステムを可能にするために使用される他の情報を交換することができる。
一実施形態では、コンパニオンリンク105a~105dは、ローカル有線及び/又は無線ネットワーク接続を介してローカルネットワーク接続(例えば、LAN)上で確立することができる。一実施形態では、コンパニオンリンク105a~105dはまた、インターネット接続などのWAN接続を介して確立され得るが、ポリシー及び構成判定は、任意選択的に、スマートホームデバイス103、133間のコンパニオンリンク105cを単一ネットワークに制限するように構成されてもよい。一実施形態では、仮想アシスタントサーバ106に加えて、サーバシステム108は、ユーザデバイス104、115及びスマートホームデバイス103、133が1つ以上のネットワーク110を介して接続できるオンラインアカウントサーバ136を含むことができる。オンラインアカウントサーバ136は、様々なデバイスに関連付けられたユーザのオンラインアカウントに関連する情報を含むことができる。いくつかの実施形態では、オンラインアカウントサーバ136はまた、オンラインストレージ、メッセージング、電子メール、メディア及びストリーミングサービス、又はナビゲーションサービスを含むオンラインサービスを提供するために、サーバハードウェア及びソフトウェアロジックを含むか、又はそれに関連付けることができる。一実施形態では、オンラインアカウントサーバ136はまた、図1Bの外部サービス120のうちの1つ以上へのアクセスを提供又は容易にすることができる。一実施形態では、オンラインアカウントサーバ136はまた、オンラインアプリケーションストア(例えば、アップストア)、及び/又は音楽、ビデオ、若しくは電子ブックストアなどのオンラインメディアストアなどの、オンラインストアへのアクセスを提供又は容易にすることができる。
一実施形態では、ユーザデバイス104及び115間のコンパニオンリンク105dを使用して、ピアツーピアデータ交換を可能にすることができる。一実施形態では、デバイス間の自動データ交換は、コンパニオンリンク105dを介して実行されるように構成され得る。例えば、ユーザデバイス104及びユーザデバイス115がそれぞれ、オンラインアカウントサーバ136上の同じアカウントに関連付けられている場合、デバイスが直接通信範囲内にあるときはいつも、オンラインアカウントサーバを介してクレデンシャル交換を実行して、デバイス間の暗号化通信チャネルの自動確立を可能にすることができる。一実施形態では、オンラインアカウントサーバ136に関連付けられたクラウドサービス用のデータは、1つ以上のネットワーク110を介する代わりに、コンパニオンリンク105dを介してデバイス間で交換することができる。一実施形態では、オンラインアカウントサーバ136は、単一のアカウントに関連付けられたデバイスのリスト、又は関連するアカウントのファミリーに関連付けられたデバイスのリストを維持することができる。アカウントのファミリーアカウントに関連付けられたデバイスのリストを使用して、デバイスの発見、及びデバイス間のコンパニオンリンク接続の確立を容易にすることができる。オンラインアカウントサーバ上のアカウントは、認証クレデンシャルの交換を介して電子デバイス間の相互認証を可能にすることができる。
一実施形態では、オンラインアカウントサーバ136は、登録サーバを含み、又は登録サーバに関連付けられており、各デバイスに関連付けられた一意のデバイス識別子をユーザに関連付けられたオンラインアカウントで登録する。いったんデバイスがユーザのオンラインアカウントに登録されると、ネットワーク110を介してデバイスが特定され識別されることを可能にする識別子トークンを作成することができる。識別子トークンは、1つ以上の暗号鍵、トークン、証明書、又は仮想アシスタントサーバ106、オンラインアカウントサーバ136、及びサーバシステム108内の他のサーバが1つ以上のネットワーク110にわたってデバイスを特定及び識別することを可能にする他のデータを含むことができる。いくつかの実施形態では、スマートホームデバイス103、133は、ユーザデバイスが、ホームの外部にあるか、又はスマートホームデバイスのホームネットワークに接続されていない場合、識別子トークンを使用して、ユーザデバイス104とのリモート接続を確立することができる。スマートホームデバイス103、133は、識別子トークンを使用して、モバイル無線ネットワーク上でユーザデバイス104を特定し、ユーザデバイス104とのセキュアなリモートコンパニオンリンク接続を確立することができる。ユーザデバイス104を特定し、ユーザデバイスへの接続を確立することは、仮想アシスタントサーバ106及びオンラインアカウントサーバ136を介して、部分的に容易にすることができる。そのような実施形態では、ユーザデバイス104のコンパニオンデバイス機能の少なくともサブセットは、ユーザデバイス104がホームから離れているとき、又はユーザがホームにいるがホームネットワークに接続されていない場合に動作し続けることができる。
いくつかの実施形態では、デバイス上で実行する各仮想アシスタントクライアント(VAC101、VAC102、VAC131)は、仮想アシスタント識別子に関連付けることができる。様々な実施形態では、仮想アシスタント識別子は、ホストデバイスの識別子トークン、デバイスのユーザのオンラインアカウントに関連付けられたアカウント識別子、及び/又はアカウント若しくはデバイス識別子に関連付けられた若しくはそこから導出される別のトークン、に関連付けられ得るか、又はそこから導出され得る。仮想アシスタントクライアントの仮想アシスタント識別子は、仮想アシスタントクライアントが互いに通信しているとき又は仮想アシスタントサーバ106と通信しているときに、様々なデバイス上のVAC101、102、131を一意に又は準一意に識別することができる。仮想アシスタント識別子は、ホストデバイスの識別トークンなどの、仮想アシスタントのホストデバイスの識別情報又は位置情報に関連付けることができる。スマートホームデバイス103、133とユーザデバイス104との間にペアリング関係が作成された後、スマートホームデバイス上の仮想アシスタントクライアント(VAC101、VAC131)は、仮想アシスタント識別子を記憶し、仮想アシスタント識別子を使用してユーザデバイス104上のVAC102を特定し、識別し、及び通信することができる。VAC102の仮想アシスタント識別子はまた、仮想アシスタントサーバ106に送信され、コンパニオン仮想アシスタント識別子として記憶され得る。仮想アシスタントサーバ106が、スマートホームデバイス103、133のVAC101、131において受信した要求の処理動作を実行するためにユーザの私的情報へのアクセスを必要とする場合、仮想アシスタントサーバ106は、VAC101、131の代わりにユーザデバイス104のVAC102にコンタクトすることができる。次いで、仮想アシスタントサーバ106は、様々な実施形態では、ユーザデバイス104上のVAC102から、ユーザデバイス104からの私的情報、ユーザデバイス104にディスパッチされた情報処理タスクの処理結果、又はユーザデバイス104の代わりに私的データにアクセスするための許可及び/若しくはアクセスクレデンシャルを受信することができる。
いくつかの実施形態では、サーバシステム108は、スマートホームデバイス103、133とユーザデバイス104との間のリモート接続を容易にするために使用できる中継サーバ126を含む。中継サーバ126は、ローカル接続、又はリモートピアツーピア接続などの別の形態のリモート接続が確立できないイベントにおいて、デバイス間でコンパニオンリンクメッセージを中継できる中継サービスを可能にすることができる。中継サーバ126は、スマートホームデバイス103、133とユーザデバイス104との間に確立された中継ペアリングに基づいて、リモートコンパニオンリンクメッセージパッシングを可能にすることができる。様々なデバイスに関連付けられた鍵、証明書、並びに他の識別データ及び検証データは、デバイス間の中継ペアリングを確立するために使用できるローカルペアリングプロセス中に交換することができる。いったん中継ペアリングがデバイス間に確立されると、スマートホームデバイス103、133は、ユーザデバイス104に関連付けられた一意の中継識別子を用いてメッセージを中継サーバ126に送信することができる。
中継サーバ126と接続できる各デバイスは、関連する中継識別子を有することができ、中継識別子は、接続しているデバイスを識別及び認証するために使用できる永続的なペアリングトークンである。中継識別子は、デバイスを一意に識別するデバイス識別子又は識別子トークンであるか、それを含むか、又はそれから導出することができ、中継トークンの検証を可能にする証明書及び/又は署名を含むことができる。次いで、中継サーバ126は、メッセージをユーザデバイス104に中継することができる。一実施形態では、永続的及び双方向接続を確立することができ、中継サーバ126を介してスマートホームデバイス103、133にユーザデバイス104が戻りメッセージを送信することを可能にする。一実施形態では、ユーザデバイス104はまた、デバイスに関連付けられた中継識別子を使用して、スマートホームデバイス103、133との接続を開始することができる。一実施形態では、中継サーバ126を介して交換される各メッセージに対して中継識別子が使用され、サーバを介して中継される各メッセージの信頼性を中継サーバ126が検証し、確立された中継サーバ接続を介して無許可のデバイスがメッセージを送信するのを防止することを可能にする。
図2は、実施形態による、複数のスマートホームデバイスを含むホームネットワーク環境200を示す。ホームネットワーク環境200は、ホームネットワーク環境にサービスする無線ネットワークへのアクセスを提供するための無線アクセスポイント212を含むことができる。複数のスマートホームデバイス204、206、214、216、222A~222Bは、無線ネットワーク、又は任意選択的に有線ネットワーク接続を介して、ホームネットワーク環境200に接続することができる。様々な実施形態では、ホームネットワーク環境は、様々なタイプのスマートホームデバイスを含むことができる。例えば、スマートホームデバイス204、206、214は、分散メディア再生を行うように構成されたスマートスピーカデバイスであり得る。更に、スマートホームデバイス216は、スマート冷蔵庫デバイスなどのスマートアプライアンスデバイスであり得る。スマートホームデバイス204、206、214、216、222A~222Bのそれぞれは、ホームネットワーク環境200のネットワークを使用して、相互接続するコンパニオンリンクを確立してデバイスが構成情報を交換することを可能にすることができる。例えば、スマートホームデバイス222A~222Bは、マルチチャネルスマートスピーカデバイスとして構成することができ、マルチチャネルスマートスピーカデバイスは、コンパニオンリンクを使用してマルチチャネル(例えば、ステレオ、サラウンドなど)オーディオ再生を構成することができる。更に、スマートホームデバイス204、206、214、216、222A~222Bのそれぞれは、私的ユーザ情報へのアクセスを必要とする要求のイベントにおいて、要求の処理を容易にするために、コンパニオンリンクを介して指定されたコンパニオンデバイスと対話することができる仮想アシスタントクライアントを含むことができる。ユーザデバイス104のモバイルインスタンス、又は接続された車両インフォテインメントシステムなどのユーザデバイスはまた、無線アクセスポイント212に近接したときに、ホームネットワーク環境に接続するように構成することができる。一実施形態では、ユーザデバイス104はまた、ホームネットワーク環境200に接続され得る、又はユーザデバイス104の直接無線範囲内の任意の他のユーザデバイスへのコンパニオンリンク接続を作成することができる。
デバイス及びコンパニオンの発見
ユーザデバイス104と、スマートホームデバイス204、206、214、216、222A~222Bとの間にコンパニオンリンク通信チャネルが確立される前に、コンパニオン発見及びペアリングプロセスが実行される。コンパニオン発見プロセスにより、スマートホームデバイス上の仮想アシスタントクライアント(例えば、図1A~図1BのVAC101、131)がユーザ要求を処理及び/又は応答するために使用され得る私的ユーザ情報にアクセスすることになるコンパニオンデバイスを、スマートホームデバイスが特定することを可能にする。いくつかの例では、コンパニオン発見プロセスはまた、スマートホームデバイスとコンパニオンデバイスとの間に通信が生じるべきであることのユーザ検証を含むことができる。いくつかの実施形態では、コンパニオン発見は、UPnPフォーラムによって開発されたシンプルサービス発見プロトコル((SSDP)、又はApple Inc.によって開発されたBonjourネットワーキング技術(IETF RFC 6762及びIETF RFC 6763として公開され、本明細書では「Bonjour」と呼ばれる)などの無線又は他のネットワーク上のデバイス及び/又はサービスの特定を容易にする既存のサービス発見プロトコルを活用することができる。デバイス発見サービスにおいて、デバイスは、その存在、アドレス、及び任意選択的なその能力に関する追加情報を示す情報をアドバタイズすることができる。他のスマートホームデバイス又はユーザデバイスを含む他のデバイスは、アドバタイズをブラウズし、ブロードキャストされた情報に基づいて目的のデバイスを識別することができる。アドバタイズされたアドレスを使用すれば、ブラウジングデバイスは、アドバタイズ主との通信を開始することができる。
ネットワーク及び発見サービスに応じて、アドバタイズは、任意選択的に、情報のリアルタイムブロードキャスト(例えば、マルチキャスト若しくはビーコン信号を介して)を含むことができ、及び/又は他のデバイスが情報を取り出せる中央リポジトリ(例えば、ネットワークアクセスポイント)にアドバタイズ情報を提供することができる。アドバタイズのブラウジングは、ブロードキャストアドバタイズを検出すること、及び/又は中央リポジトリからアドバタイズ情報を取り出すことを含むことができる。いくつかの実施形態では、電気コンセントなどの電源に取り付けられた共用スマートホームデバイスは、コンパニオンリンクサービスのアドバタイズ及び発見を継続的に実行することができる。モバイルユーザデバイスは、ユーザデバイスの位置に基づいて、コンパニオンリンクサービスの発見を可能にすることができる。例えば、一実施形態では、地理的フェンス境界203は、モバイルデバイスがユーザデバイス104のホームロケーションとして指定された位置に地理的近接内にあるときにコンパニオンリンク発見が可能になるように、モバイルデバイス上に構成される。
共用スマートホームデバイスがコンパニオンデバイス(例えば、ユーザデバイス104)として作用するユーザデバイスによって発見されると、共用スマートホームデバイスとコンパニオンデバイスとの間に、ネットワークデータ接続(例えば、TCP、UDPなど)を確立することができる。ネットワークデータ接続は、任意のネットワークレイヤ(例えば、レイヤ3)プロトコルを使用して確立することができる。アドバタイズ及び発見の両方であるデバイス間の接続競争を防止するために、辞書学的により低い永続的識別子を有するデバイスは、デバイス間の接続を開始する。デバイスの永続的識別子は、発見サービスを介してアドバタイズされる、匿名識別子から導出される。一実施形態では、アドバタイズされた情報に基づいて永続的識別子を導出することは、以前に実行されたペアリングプロセスを介して交換されたデータを使用する。そのような実施形態では、スマートホームデバイスがユーザデバイスとペアリングされるまでスマートホームデバイスとのデータ接続を確立することができず、それは、共用スマートホームデバイスとの接続に使用される永続的識別子がそうしなければ不明であるためである。いったんデータ接続が確立されると、共用スマートホームデバイスとコンパニオンデバイスとの間に、セキュアな通信セッションを確立することができる。共用スマートホームデバイス及び接続されたコンパニオンデバイスは、次いで、存在情報及び到達可能情報を交換することができる。コンパニオンデバイスがモバイルデバイスである場合、コンパニオンデバイスは次いで、データがコンパニオンリンクを介して交換されていないときに、必要に応じてウェイクオン無線(WoW)状態に入ることができ、一方、電源に接続された共用デバイスは、第1のメッセージ遅延を低減するためにアクティブなままであり得る。
デバイス間の接続性が失われたイベントにおいて、発見サービスは再び可能にされ、ローカルネットワーク上のデバイスを検索するために使用され得る。不明デバイスが再発見された場合、デバイス間のデータ接続を再確立することができる。不明デバイスが発見できない場合、不明デバイスの記録内の状態発見サービス情報が再確認され、クリアされる。検索デバイスは、次いで、セキュアインターネットセッションを介して不明デバイスとの通信を確立しようと試みることができる。一実施形態では、データ接続を確立する際に交換される存在情報及び到達可能情報の一部は、例えば、ピアツーピア又は中継インターネット接続を介して、デバイス識別子、識別子トークン、中継識別子、又は不明デバイスとのメッセージ交換を達成又は可能にするために使用できる別の形態の識別トークンを含む。セキュアインターネット接続が以前の不明デバイスと成功裏に確立できる場合、コンパニオンリンクメッセージがセキュアインターネット接続を介して交換され得る。
コンパニオンデバイスがインターネットベース接続を介してスマートホームデバイスに接続され、ローカル接続が利用可能となるイベントにおいて、コンパニオンリンク接続はローカル接続に切り替えることができる。例えば、ユーザデバイス104は、地理的フェンス境界203を横切って、発見プロトコル(例えば、SSDP、Bonjourなど)がデバイス(例えば、スマートホームデバイス204、206、214、216、222A~222B)を検索することを可能にすることができる。ユーザデバイス104が、インターネット接続を介してユーザデバイス104が接続されているスマートホームデバイスへのローカル接続の利用可能性を発見した場合、ユーザデバイスは、インターネット接続をローカル(例えば、Wi-Fi)接続に遷移させることができる。一実施形態では、接続スイッチングは、接続されたデバイス間で接続性が失われた(例えば、ユーザデバイス104がホームネットワーク環境200を離れた)とき、又はデバイスがより良好な接続が利用可能であると判定した(例えば、ユーザデバイス104がホームネットワーク環境200に戻る)ときには、いつでも実行することができる。ローカル接続は恐らくは遅延がより短いため、インターネット接続にはローカル接続が好ましい場合がある。加えて、インターネット接続の代わりにローカル接続を維持することにより、デバイス及びインフラストラクチャの観点から、リソースの集中をより少なくすることができる。
図3は、本明細書に記載される実施形態による、コンパニオンデバイスで共用デバイスを発見及びペアリングするために使用される発見プロセス300の動作のフロー図である。示される発見プロセス300は、共用デバイス302及び個人デバイス304上で実行される動作を含む。共用デバイス302は、本明細書に記載される任意のスマートホームデバイス(例えば、図1のスマートホームデバイス103、133、図2のスマートホームデバイス204、206、214、216、222A~222B)であり得る。個人デバイス304は、スマートフォンデバイス、タブレットコンピュータデバイス、又はコンパニオンリンクを介して共用デバイス302によってアクセス可能であり得る個人データを記憶する別のユーザデバイスなど、本明細書に記載される任意の個人ユーザデバイス(例えば、ユーザデバイス104)であり得るが、これらに限定されない。発見プロセス300は、共用デバイス302と個人デバイス304との間で実行されるものとして図示及び説明されているが、例示されたプロセスの変形例もまた、共用デバイス302の複数のインスタンス間、又は個人デバイス304の複数のインスタンス間で実行することもできる。
一実施形態では、ブロック310に示されるように、共用デバイス302は、デバイスが現在ペアリングされていないこと、又はそうでなければペアリングすべきコンパニオンデバイスを探していることを示すための状態ビットを設定することができる。状態ビットは、共用デバイス302によってアドバタイズされる状態情報に列挙された状態フラグインジケータ内のビットであり得る。ブロック312において、共用デバイス302は、コンパニオンリンクサービス用のサポートを有するように、発見プロトコル(例えば、SSDP、Bonjourなど)を介してその存在をアドバタイズすることができる。例えば、Bonjourを使用して、共用デバイス302は、名前及びサービスタイプを用いてそれ自身をアドバタイズすることができる。名前は、コンパニオン発見(例えば、「Speaker」)用のユーザ可読な名前であってもよく、いくつかの場合では、アドバタイズされた名前は、デバイス定義記録のコンパニオン発見情報サービスインスタンス内で指定された名前であり得る。サービスタイプは、均一なアクセサリプロトコル(例えば、サービスタイプ「_companion-link._tcp」)に対して定義することができる。アドバタイズはまた、追加情報を含むことができる。同様の情報は、他のサービス発見プロトコル及び技術を使用して分散され得る。例えば、SSDPを使用して、コンパニオン発見は、マルチキャストHTTP NOTIFYメッセージを使用して、名前及びサービスタイプURIをアドバタイズすることを含み得る。URIは、個人デバイス304によって使用されて、共用デバイス302へのユニキャスト要求を介して追加情報を取り出すことができる。
共用デバイス302がサービス発見プロトコルを介してコンパニオンリンクサービスのアドバタイズを開始した後、ブロック314に示されるように、個人デバイス304は、ペアリングされていないデバイスのブラウジング時に、共用デバイスを発見することができる。アドバタイズの開始とサービスブラウジングの開始との間に特定のタイミングは必要ではないが、個人デバイス304は、個人デバイス304がブラウズしたときに共用デバイス302の発見アドバタイズが検出可能でない限り、共用デバイス302を発見することができない。
一実施形態では、個人デバイス304は、個人デバイス304上でのアプリケーション実行によって提供されるトリガなどのトリガに応じて、ペアリングされていないデバイスをブラウズすることができる。一実施形態では、個人デバイス304は、個人デバイス304がペアリングされていないデバイスに物理的に近接して配置されたときに、ペアリングされていないデバイスをブラウズすることができる。例えば、共用デバイス用のボックス外近接セットアップは、(例えば、Bluetooth及び/又はBluetooth Low Energy、NFCなどを使用する)近距離無線通信機構を介したデータ交換を含むことができ、これによって、個人デバイス304をトリガして、ペアリングされていないデバイスをブラウズできる。
ブロック316において、個人デバイス304は、例えば、ブロック312において実行されたアドバタイズを検出することによって、発見サービスアドバタイズを介してデバイスを見つけることができる。ブロック318において、個人デバイス304は、アドバタイズに基づいて、発見されたデバイスが、ペアリングされていない共用デバイス302などの接続候補であるかどうかを判定することができる。一実施形態では、個人デバイス304は、発見されたデバイスがコンパニオンリンクサービスをアドバタイズしている場合、発見されたデバイスが接続候補であると判定することができる。個人デバイス304は、発見状態フラグを確認して、共用デバイス302が既に構成されているか、又はコンパニオンデバイスとペアリングされているかどうかを判定することができる。別の例として、個人デバイス304は、アドバタイズされたプロトコルバージョンを確認して、共用デバイス302のコンパニオンリンクプロトコルバージョンが、個人デバイス304によってサポートされるコンパニオンリンクプロトコルと互換性があるかどうかを判定することができる。個人デバイス304が、コンパニオンリンクを確立すべきコンパニオンデバイスに対してアクセサリがアドバタイズしていないと判定した場合、個人デバイス304は、ブロック314に戻ってブラウズし続けることができる。一実施形態では、共用デバイスが発見されなかった期間後、ブラウジング動作がタイムアウトし、未払いデバイスをブラウジングすることが一時的に停止する場合がある。
ブロック322において、個人デバイス304は、個人デバイス304の表示デバイスなどのユーザインタフェースを介して、ユーザに共用デバイス302に関する情報を提示することができる。ブロック324において、個人デバイス304は、検出されたデバイスで実行するアクションに関して、ユーザインタフェースを介してユーザから入力を受信することができる。例えば、ユーザは、個人デバイス304が共用デバイスとのペアリングを確立するべきかどうかを示す入力を提供することができる。個人デバイス304は、共用デバイスによって提供されたアドバタイズデータから取得された情報のいずれか又は全てを提示し、個人デバイス304が共用デバイス302に接続すべきかどうかを指示するようにユーザに促すことができる。ユーザ確認を要求することは、共用デバイスと個人デバイスとの間の偽性又は不必要なペアリングを防止する助けとなり得る。ブロック326において、個人デバイス304は、ブロック324において受信したユーザ入力を解釈し、共用デバイス302とペアリングするかどうかを判定することができる。ペアリング手順を完了することにより、共用デバイス302が個人デバイス304のユーザに関する個人的な性質のクエリを受け入れることができるため、ペアリング動作を開始するユーザ承認に加えて、他の動作を実行して、個人デバイス304の権利のある所有者/オペレータの承認なしに生じるペアリングのリスクを最小限にするためのペアリング動作を完了する。例えば、個人デバイス304及び/又は共用デバイス302は、個人デバイス304のユーザに既知のパスコードの入力を要求してもよい。一実施形態では、ブロック326においてペアリング動作を完了するために、バイオメトリック検証(例えば、指紋、顔認識など)を、共用デバイス302及び/又は個人デバイス304によって要求することができる。
ユーザが、ペアリング又はユーザ検証動作を拒否するように個人デバイス304に指示する場合、個人デバイス304は、ブロック314に戻って他のアクセサリ又はデバイスを探すことができる。個人デバイス304及び共用デバイス302がペアリングする場合、ブロック328及びブロック330において、個人デバイス304及び共用デバイス302は、ペアリングセットアッププロセスをそれぞれ実行することができる。いくつかの実施形態では、ペアリングセットアッププロセスを使用して暗号鍵を確立し、個人デバイス304と共用デバイス302との間のセキュア通信を容易にすることができる。いくつかの実施形態では、ペアリングセットアッププロセスにユーザ確認を組み込むことができ、ペアリングセットアップを開始する前の別個のユーザ確認は必要とされない。一実施形態では、ペアリングセットアッププロセスは、共用デバイス302と個人デバイス304との間の信頼関係の確立を可能にする。確立された信頼関係は、セキュア通信セッションのセットアップ中に、後に検証することができる。
ペアリングセットアッププロセスが成功裏に完了した場合、共用デバイス302は、ブロック331において、例えば、アドバタイズされたデバイスデータ内の状態フラグインジケータを更新することによって、アクセサリと通信するためにここで認証が必要とされていること、及び/又はアクセサリが少なくとも1つの個人デバイスとここでペアリングされることを示す、デバイス状態情報を更新することができる。
ブロック332において、個人デバイス304は、共用デバイス302からデバイス定義記録を取得しキャッシュすることができ、ブロック334において要求に応じて記録を提供することができる。デバイス定義記録には、デバイスによってサポートされるサービスのセット、及び/又は他の個人デバイス304を可能にし得る他の関連する特性、並びに共用デバイス302を制御、接続、又はそうでなければ対話する方法を判定するための他の接続されたデバイス、を含むことができる。個人デバイス304がデバイス定義記録をキャッシュする場合、情報を使用して、共用デバイス302における状態変化の検出を容易にすることができる。いくつかの実施形態では、個人デバイス304はまた、共用デバイス302によって提供されるアドバタイズデータから情報をキャッシュすることができ、これは、共用デバイスの状態変化を検出するために使用することもできる。
ブロック336及び338において、個人デバイス304及び共用デバイス302は、セキュア通信チャネルを確立するために使用されるデータの交換を開始することができる。データ交換には、デバイス間の鍵又は証明書の交換を含むことができる。鍵交換は、デバイス間で交換された共有シークレットを介して保護することができ、共有シークレットは、アウトオブバンド通信方法を使用して交換することができる。更に、データ交換は、1つ以上の短期鍵によって自身が保護され得る、デバイス間の1つ以上の長期鍵の交換を含むことができる。いったんペアリングが確立されると、ペアリングされたデバイスのみがデバイス間で交換されたメッセージを読み取ることができるように、ペアリングを活用してエンドツーエンドメッセージ暗号化を提供できる。一実施形態では、セキュア通信チャネルは双方向チャネルであり、チャネルと通信していないどちらかのデバイスがメッセージ交換を開始することを可能にする。メッセージ交換中、通信セッションを開始するデバイスは、どれもクライアントデバイスと呼ばれ、セッションを受け入れるデバイスは、サーバデバイスと呼ばれる。一実施形態では、デバイス間で交換される第1のメッセージは、情報交換メッセージである。クライアントデバイスは、特徴フラグ又は他のデバイス情報を含む初期情報メッセージを送信することができる。サーバデバイスは、次いで、サポートされた機能に関する情報メッセージで応答することができる。いったんセキュア通信チャネルが確立され、情報交換が生じると、通信デバイスは、保留中の即時動作がない場合に、アイドル状態に入ることができる。
一実施形態では、共用デバイス302は、ブロック340において追加動作を実行して、接続された個人デバイス304をコンパニオンデバイスとして有効にすることができる。そのような実施形態では、発見プロセス300は、ユーザの正当な個人デバイスであるが、共用デバイス302と共に使用するためにコンパニオンデバイスとして指定されている個人デバイスでなくてもよい複数のデバイスで実行されてもよい。一実施形態では、複数の可能な個人デバイスのセットのうちの1つのみが、共用デバイス302に対するコンパニオンデバイスとして指定されることになる。個人デバイス304は、コンパニオンデバイスとして指定されるユーザのものであり、様々な機構を介して判定することができる。いくつかの実施形態では、ユーザは、個人デバイスがコンパニオンデバイスとして構成され得ることを示す、個人デバイス304上の設定を可能にすることができる。一実施形態では、設定は、接続されたスマートホームデバイス用のコンパニオンデバイスとして使用するために、この特定の個人デバイスをユーザが指定したことを示す、特定のコンパニオンデバイス設定とすることができる。一実施形態では、コンパニオンデバイス選択は、個人デバイス304上の他の設定に基づいて間接的に判定することができる。例えば、個人デバイスがユーザの位置情報のソースであるように構成されている場合、共用デバイス302は、個人デバイス304がコンパニオンデバイスとして指定されていると判断することができる。
本明細書で説明される発見及びペアリングプロセスは例示であり、変形及び修正が可能であることは理解されるであろう。シーケンシャルとして記載された動作は同時並行で行ってもよく、ステップの順序を変更しても、ステップの修正、組み合わせ、追加又は省略をしても構わない。更に、SSDPサービス及びBonjourサービスがデバイス発見サービスの例として使用されているが、同様の概念を他のデバイス発見サービスのコンテキストにおいて適用することができる。いくつかの実施形態では、共用デバイス302又は任意の他の発見されたデバイスとペアリングするかどうかを判定する前に、個人デバイス304は、例えば、HTTP要求を介して要求され得る、ペアリング候補デバイスから定義記録(又はその一部)を要求することができる。構成に応じて、ペアリング候補デバイスは、ペアリングされていない個人デバイスからの要求に応じて、そのアクセサリ定義記録の全て若しくは一部を提供することができ、又は全く提供しないこともできる。あるいは、ペアリングが確立される前に定義記録がアクセス可能であってもよく、ペアリングするかどうかの判定は、ペアリング候補デバイスによって提供されるアドバタイズ情報に基づくことができる。アドバタイズデータは、例えば、デバイスのローカル名、一意のアクセサリ識別子、アクセサリが発見可能であることを示すフラグ、サービスのうちの少なくとも一部に対する汎用一意識別子(UUID)、デバイス状態のインジケータ、及びデバイスが任意の他の個人デバイスとのペアリングセットアップを実行しているかどうかの指標、を含むことができる。
いくつかの実施形態において、発見プロセス300、又は同様のプロセスを使用して、ペアリングされたデバイスでの状態変化を検出することができる。例えば、デバイス状態が変化すると、デバイスによってアドバタイズされる状態番号値をインクリメントすることができる。デバイス(例えば、共用デバイス302)が状態変化をアドバタイズすると、他のペアリングされたデバイス(例えば、個人デバイス304)は、例えば更新されたBonjour TXT記録をブロードキャストすることによって状態変化をアドバタイズすることができ、デバイス記録を以前にキャッシュしたペアリングされた個人デバイスは、状態番号のブロードキャスト値をキャッシュ値と比較することによって変化を検出することができる。
ブロック336及びブロック338においてデバイス間に確立されたセキュア通信チャネルを使用して、コンパニオンリンクメッセージを交換することができる。一実施形態では、コンパニオンリンクメッセージがコンパニオンリンクを介して交換される前に、セキュアセッションが、共用デバイス302と個人デバイス304との間に確立又は再確立される。一実施形態では、セッションを確立することは、デバイス間のペアリングを検証するためのペアリング検証プロセスを実行することを含む。ペアリング検証プロセスは、共用デバイス302と個人デバイス304との間の以前に確立されたペアリング関係に依存する。例えば、一実施形態では、デバイス間のコンパニオンリンクセッションを確立することは、デバイスの永続的識別子を必要とする場合があり、永続的識別子は、発見サービスを介してアドバタイズされる匿名識別子から導出することができる。しかしながら、アドバタイズされた情報に基づいて永続的識別子を導出するために、デバイス間のペアリングプロセス中に交換されたデータのうちの1つ以上の要素を使用できる。一実施形態では、ペア検証プロセスは、検証プロセス中に交換されたメッセージを暗号化又は署名するために使用される短期公開鍵ペアの生成、並びにデバイスの初期ペアリング中に交換された以前交換された長期鍵ペアの検証を含み得る。ペアリング検証プロセスは、コンパニオンリンク接続を使用してデバイス間でセキュアセッションが確立されるたびに実行することができる。
図4A~図4Cは、プライバシー保持方式で共用デバイス上の仮想アシスタントクライアントがクエリを処理することを可能にするプロセス400、430、460の動作のフロー図である。図4A~図4Cは、共用デバイス402及びコンパニオンデバイス404上で実行される動作を示す。様々な実施形態では、共用デバイス402は、図3の共用デバイス302の変形例であり得る。コンパニオンデバイス404は、共用デバイス402とのペアリングプロセスを受けた図3の個人デバイス304であり得る。
図4Aは、本明細書に記載されるいくつかの実施形態による、共用デバイス402上の仮想アシスタントクライアントが、コンパニオンデバイス404と接続して個人ユーザデータとして分類されるデータにアクセスする仮想アシスタント要求の処理を容易にすることができるプロセス400を示す。図4Bは、本明細書に記載されるいくつかの実施形態による、共用デバイス402上の仮想アシスタントクライアントが、仮想アシスタントクエリをコンパニオンデバイス404に暗黙的にリダイレクトすることができるプロセス450を示す。図4Cは、本明細書に記載されるいくつかの実施形態による、共用デバイスへの発話要求を介して連絡先にメッセージを送信するためのプロセス460を示す。特定のプロセスが使用される状況は、ポリシー、構成、及びネットワーク状態に基づいて変化し得る。一実施形態では、特定のプロセスが選択される状況は、実行される動作のタイプに基づいて判定することができる。例えば、受信メッセージを読み取る要求は、図4Aのプロセス400に基づいて実行することができ、一方、メッセージを送信する要求(例えば、図4Cのプロセス460)は、図4Bのプロセス430に基づいて実行することができる。
図4Aに示すように、共用デバイス402は、ブロック410に示されるように、共用デバイス上で実行されている仮想アシスタントクライアントにおいて要求を受信することができる。ブロック412において、共用デバイス402は、要求を少なくとも部分的に処理して、要求がユーザの私的データにアクセスすることになるかどうかを判定することができる。要求は、テキストベース要求、又は自然言語処理を介して解釈される発話口頭要求であり得る。様々な実施形態では、自然言語処理は、共用デバイス402上で部分的に、共用デバイス上で全体的に、又は仮想アシスタントサーバ(例えば、図1A~図1Bの仮想アシスタントサーバ106)上で実行することができる。要求が少なくとも部分的に処理された後、共用デバイス402(又は処理がオフロードされている場合は仮想アシスタントサーバ)は、ブロック414に示すように、要求が私的データへのアクセスを必要とするかどうかを判定することができる。
要求が個人ユーザデータの使用を行うかどうかのブロック414における判定は、要求が処理され、要求の意図が判定された後に実行され得る。例えば、共用デバイス402の位置に対する現在の天気予報の要求は、個人ユーザデータとして分類されるデータへのアクセスを必要としない場合がある。そのような要求は、418において示されるように、要求処理を完了し、要求に対する応答を構成することができる、共用デバイス402によって、少なくとも部分的に更に処理することができる。
ブロック414において、要求の更なる処理が個人ユーザデータへのアクセスを必要とすると共用デバイス402が判定した場合、共用デバイス402は、ブロック415に示すように、処理のために要求に関連付けられたタスクをコンパニオンデバイスにサブミットすることができる。コンパニオンデバイス404は、ブロック422において処理要求を受信することができる。ブロック415において共用デバイス402によってサブミットされ、ブロック422においてコンパニオンデバイスによって受信されたタスクは、共用デバイス402とコンパニオンデバイス404との間に確立されたコンパニオンリンクを介して送信することができる。例えば、一実施形態では、共用デバイス402及びコンパニオンデバイス404上で実行する仮想アシスタントクライアントは、データを交換するために共通のコンパニオンリンクメッセージパッシングアプリケーションプログラミングインタフェース(API)を使用することができる。
一実施形態では、要求が個人ユーザデータを使用するかどうかの、ブロック414における判定は、共用デバイスと通信する仮想アシスタントサーバ(例えば、図1の仮想アシスタントサーバ106)によって実行することができる。共用デバイス402は、共用デバイスの処理動作を実行するときに、コンパニオンデバイス404の仮想アシスタント識別子を提供することができる。仮想アシスタントサーバが私的データへのアクセスを必要とする場合、仮想アシスタントサーバは、コンパニオンデバイスの仮想アシスタント識別子を使用して、共用デバイス402の代わりにコンパニオンデバイス404にコンタクトすることができる。
ブロック424において、コンパニオンデバイス404は、共用デバイス402からの要求に応じて個人ユーザデータにアクセスすることができる。コンパニオンデバイス404によって容易にされ得る例示的な要求は、例えば、イベントを追加する、又は次のカレンダイベントの発生をクエリするための、ユーザのカレンダにアクセスする要求を含む。コンパニオンデバイス404はまた、例えば、ユーザの連絡先のうちの1つの連絡先情報を探すために、ユーザの連絡先内のデータにアクセスすることができる。コンパニオンデバイス404は、デバイス上にローカルに記憶された個人ユーザデータにアクセスすることができる。一実施形態では、コンパニオンデバイス404は、1つ以上のサーバ(例えば、図1Bのオンラインアカウントサーバ136)と通信して、コンパニオンデバイス上に記憶された又はそれに関連付けられたオンラインアカウントクレデンシャルに基づいて、コンパニオンデバイスによってリモートにアクセス可能な私的データにアクセスすることができる。一実施形態では、個人ユーザデータへアクセスする。
ブロック426において、コンパニオンデバイス404は、要求の個人データ部分を処理することができる。例えば、コンパニオンデバイス404は、ユーザのカレンダ上のスケジュールされたタスク若しくはイベントのセット内でルックアップを実行し、又はユーザ用のカレンダにタスク若しくはイベントを追加することができる。コンパニオンデバイス404はまた、共用デバイス402において受信した要求に応じて、ユーザにテキストメッセージ又は電子メールメッセージを送信することができる。例えば、コンパニオンデバイス404は、ユーザのスケジュールされたタスク又はイベントのセットを読み取る又は書き込む要求に応じて、ユーザのカレンダデータにアクセスすることができる。コンパニオンデバイス404はまた、例えば、連絡先の電話番号、電子メールアドレス、又はメッセージング識別子をルックアップし、テキスト又は電子メールメッセージを連絡先に送信するために、ユーザの連絡先内のデータにアクセスすることができる。
要求の個人データ部分を処理することはまた、コンパニオンデバイス404上の1つ以上のアプリケーション、又はそれらの1つ以上のアプリケーションにバックエンドサービスを提供する1つ以上の基礎的なフレームワークと対話することも含み得る。一実施形態では、コンパニオンデバイス404は、仮想アシスタントサーバ(例えば、図1A~図1Bの仮想アシスタントサーバ106)に許可及び/又はクレデンシャルを提供して、コンパニオンデバイス404の代わりに仮想アシスタントサーバが個人ユーザデータを使用して処理タスクを実行することを可能にすることができる。
ブロック428において、コンパニオンデバイス404は、要求された処理タスクの出力を、デバイス間に確立されたコンパニオンリンクを介して、共用デバイス402に提供することができる。共用デバイス402に提供される出力は、実装にわたって、及び/又は共用デバイス402で受信された要求のタイプに基づいて変化し得る。一実施形態では、要求された処理タスクの出力は、次のカレンダイベントの時間及び日付、又は別のタイプの具体的に要求されたデータなどの生情報であり得る。一実施形態では、出力は、共用デバイス402によって提供される最終出力に統合し得る発話出力などの、共用デバイス402を介して出力される発話データのサブセットであり得る。
ブロック416において、共用デバイス402は、デバイス間に確立されたコンパニオンリンクを介して、コンパニオンデバイス404から要求された処理タスクの出力を受信することができる。一実施形態では、コンパニオンデバイス404から受信された個人データは、共用デバイス402上に永続的には記憶又はキャッシュされず、個人データが使用された後に廃棄することができる。共用デバイス402は、ブロック418において、個人データを使用して、仮想アシスタント要求の処理を完了し、要求に対する応答を構成することができる。
一実施形態では、ブロック418における要求処理を完了するために、共用デバイス402と仮想アシスタントサーバとの間のデータ交換を含むことができる。図1Aを更に参照すると、一実施形態では、図4Aの共用デバイス402は、仮想アシスタントクライアント(例えば、VAC101)を有するスマートホームデバイス103である。VAC101は、VAクライアントへのI/Oインタフェース112を介して、仮想アシスタントサーバ106と通信することができる。処理モジュール114は、データ及び処理モデル116を使用して、受信した要求がスマートホームデバイスの領域に対するローカルな気象予報用であると判定することができる。次いで、仮想アシスタントサーバ106は、外部サービスへのI/Oインタフェース118を利用して、1つ以上のネットワーク110を介して外部サービス120にアクセスすることができる。例えば、外部サービス120(例えば、情報サービス(単数又は複数))にアクセスして、要求された天気予報を取り出すことができる。要求に対する応答を構成するために使用され得る情報は、VAクライアントへのI/Oインタフェース112を介して出力することができ、スマートホームデバイス103上のVAC101は、要求に対する応答を構成することができる。あるいは、いくつかの例では、仮想アシスタントサーバ106は、受信した要求に対する応答を構成し、VAクライアントへのI/Oインタフェース112を介した出力に対する応答を提供することができる。スマートホームデバイス103上のVAC101は、出力を最終応答に組み込むことができる。
図4Aに戻ると、一実施形態では、共用デバイス402は、共用デバイスにキャッシュされた、共用デバイス402に関連付けられた仮想アシスタントサーバから取り出した公開情報に基づいて、又はコンパニオンデバイス404から受信した個人情報に基づいて、仮想アシスタントクライアントにおいて受信した要求に対する応答を構成することができる。出力が発話出力である場合、発話出力は、共用デバイス402にローカルな発話エンジンにテキストを使用して、共用デバイス402上で完全に生成することができる。一実施形態では、発話出力のサブセットは、コンパニオンデバイス404によって生成され、共用デバイス402によって構成された応答に組み込まれてもよい。
ブロック420において、共用デバイス402は、要求に対する応答を出力することができる。応答は、共用デバイス402上のスピーカを介して出力される発話構成要素を含むことができる。いくつかの実施形態では、出力は、アニメーション、色変化、又は共用デバイス402によって示され得る他の視覚的表示などの視覚的構成要素を含むことができる。いくつかの実装では、テキスト情報又は他の視覚データは、共用デバイス402に関連付けられたディスプレイ上に表示されてもよいが、共用デバイス402のいくつかの実装では、ディスプレイを欠いていてもよい。
図4Bに示すように、いくつかの実施形態では、共用デバイス402及びコンパニオンデバイス404は、プロセス430を実行することができ、共用デバイスは、着信した仮想アシスタントクライアント要求を処理のためにコンパニオンデバイスにリダイレクトする。一実施形態では、共用デバイス402は、1つ以上の仮想アシスタントクライアント要求の全体の処理をコンパニオンデバイス404に暗黙的にリダイレクトしながら、個人ユーザデータへアクセスできるように見えるように構成することができる。ブロック440において、共用デバイス402は、個人ユーザデータへのアクセスを必要とするデバイスの仮想アシスタントクライアントで要求を受信することができる。ブロック442において、共用デバイス402は、次いで、コンパニオンデバイスと確立されたコンパニオンリンクを介して、コンパニオンデバイス404への要求をリダイレクトすることができる。一実施形態では、仮想アシスタント要求の処理の全て又は実質的に全ては、共用デバイスのユーザに対してわかりやすい様式で、コンパニオンデバイス404上で実行することができる。コンパニオンデバイス上での仮想アシスタント要求の処理はまた、本明細書に記載される仮想アシスタントサーバ(例えば、図1A~図1Bの仮想アシスタントサーバ106)上で部分的に実行することができる。例えば、発話認識及び自然言語処理は、仮想アシスタントサーバによって少なくとも部分的に実行することができる。
ブロック452において、コンパニオンデバイス404は、コンパニオンデバイス上で実行されている仮想アシスタントクライアントにおいて、共用デバイスからの要求を受信することができる。次いで、コンパニオンデバイス404は、ブロック454において共用デバイスの代わりに要求を処理し、ブロック456において共用デバイス上の仮想アシスタントクライアントによって出力される応答を構成することができる。一実施形態では、コンパニオンデバイス404上での処理及び応答の生成は、コンパニオンデバイスではない仮想アシスタントクライアントにおいて要求が直接受信されたかのように実行することができる。ブロック458において、コンパニオンデバイスは次いで、出力用に、共用デバイス402への応答を提供することができる。一実施形態では、共用デバイス402に提供される応答は、共用デバイス402によって配信される特定の発話出力を含むことができる。あるいは、提供された応答は、共用デバイス上の発話エンジンを介して、共用デバイスによって発話出力にレンダリングできる他のデータであってもよい。
ブロック459において、要求がそのようなデータの変更を含む場合、コンパニオンデバイス404は、個人ユーザデータに対して1つ以上の仮想アシスタント動作を実行することができる。例えば、ユーザのカレンダ、アラーム、又はリマインダデータを要求に基づいてコンパニオンデバイス上で更新することができ、アプリケーションをコンパニオンデバイス上で開くことができ、構成設定をコンパニオンデバイス上で調整することができ、又はコンパニオンデバイス404上の仮想アシスタントによって要求が直接受信されたかのように、任意の他の仮想アシスタント動作を実行することができる。ブロック459はブロック478の後に実行されるものとして例示されているが、要求された仮想アシスタント動作は、ブロック458における出力のために共用デバイスへ応答を提供することに対して、任意の順序で実行することができる。例えば、アプリケーションを開く要求は、要求を確認応答するオーディオ応答が再生のために共用デバイスに提供された後に実行することができる。あるいは、スケジュール及びイベント又はアラームの要求は、共用デバイスへの出力のための確認応答を提供する前に、又はそれと並行して実行することができる。
ブロック444において、共用デバイス402は、リダイレクト要求に対する応答を受信することができる。次いで、共用デバイス402は、ブロック446において要求に対する応答を出力することができる。応答出力は、図4Aのブロック420において実行される出力と同様の方法で実行することができ、コンパニオンデバイス404によって生成される発話データの出力、又はコンパニオンデバイス404から受信した出力に基づいて共用デバイス402上でローカルに生成された発話データの出力を含むことができる。要求を完了するために複数回の対話を要求が必要とするイベントにおいて、デバイス間に確立されたコンパニオンリンクを使用して、共用デバイス402とコンパニオンデバイス404との間で複数回の要求リダイレクトを実行することができる。
図4Cに示すように、いくつかの実施形態では、共用デバイス402及びコンパニオンデバイス404は、プロセス460を実行することができ、ここで、共用デバイスは、仮想アシスタントクライアント要求をリダイレクトして、メッセージ(例えば、テキストメッセージ、電子メールメッセージ、又は別の直接メッセージ)をコンパニオンデバイスに送信する。共用デバイス402は、メッセージを連絡先に送信するために、共用デバイス上の仮想アシスタントクライアントで発話要求を受信することができる。メッセージは、テキストメッセージ、電子メールメッセージ、又はユーザデバイス間で送信され得る別のタイプの直接メッセージであってもよい。様々な実施形態では、テキストメッセージは、Apple Inc.(Cupertino,California)によって提供されるiMessage(登録商標)システムを介して送信されるメッセージなどの、ショートメッセージングサービス(SMS)メッセージ及び/又は別のタイプのテキストベースのメッセージであり得る。いくつかの実施形態は、テキストメッセージが、他のタイプの非SMSテキストメッセージングサービスを介して送信されることを可能にする。一実施形態では、メッセージは、記録されたボイスメッセージであり得る。メッセージが送信される連絡先は、連絡先リストに列挙された連絡先とすることができ、連絡先リストは、ユーザの個人ドメインの一部とみなすことができる。様々な実施形態では、共用デバイス402は、発話要求を少なくとも部分的に処理することができ、また、図4Aのブロック412における動作と同様の方法で、処理の少なくとも一部を仮想アシスタントサーバ(例えば、図1の仮想アシスタントサーバ106)にオフロードすることもできる。一実施形態では、仮想アシスタントサーバ上の自然言語処理動作は、ブロック470において受信した発話要求を処理するために個人ユーザデータを使用するかどうかを判定することができる。例えば、仮想アシスタントサーバは、発話要求を処理することが、ユーザの連絡先情報及び関連付けられたメッセージングサービスなどのユーザの個人ドメイン内にあるデータ又はサービスにアクセスすることを判定することができる。ユーザのメッセージングサービスにアクセスすることは、ユーザに関連付けられたメッセージングサービスアカウントにアクセスすることを含み得る。ブロック470において受信した発話要求の処理を容易にするために、共用デバイス402は、ブロック472において、メッセージング要求をコンパニオンデバイス404に送信することができる。ブロック480において、コンパニオンデバイス404は、デバイスの仮想アシスタントクライアントでメッセージング要求を受信することができる。一実施形態では、メッセージング要求は、ブロック482において、発話要求の一部で処理された仮想アシスタントサーバを介して、共用デバイス402から間接的に受信することができる。
共用デバイス402から直接的又は間接的にメッセージング要求を受信したコンパニオンデバイス404は、コンパニオンデバイス404上の仮想アシスタントクライアントを介してメッセージング要求を処理することができる。メッセージング要求を処理することは、ブロック482に示すように、共用デバイスの代わりに特定された連絡先にメッセージを送信することを含み得る。コンパニオンデバイス404上でメッセージを送信することは、SMSサービスを介してテキストメッセージを送信すること、電子メールクライアントを介してメッセージを送信すること、又は別のメッセージングサービス若しくはコンパニオンデバイス404上のアプリケーションを介してメッセージを送信すること、を含み得る。一実施形態では、送信するメッセージのタイプは、ブロック470において共用デバイス402によって受信された発話要求内で指定することができる。一実施形態では、メッセージを送信することは、ユーザのオンラインアカウント、例えば、図1Bのオンラインアカウントサーバ136に関連付けられたオンラインアカウントに基づいて容易にすることができる。例えば、メッセージが連絡先に送信されるメッセージングサービスは、ユーザのオンラインアカウントに関連付けられたメッセージングサービスであり得る。
コンパニオンデバイス404は、ブロック484において送信されたメッセージに対する応答を受信することができる。一実施形態では、ブロック484に示されるように、メッセージに対する応答は、ある期間内に受信されるべきであり、コンパニオンデバイス404は、ブロック486において共用デバイス402への応答の通知を送信することができる。受信されたメッセージのために通知が送信される期間は、仮想アシスタントシステムに関連付けられた構成若しくはポリシー内で指定することができ、又はユーザと関連付けられた好み、共用デバイス402、又はコンパニオンデバイス404のユーザ設定に基づいて構成することができる。
一実施形態では、コンパニオンデバイス404は、ブロック486において、メッセージング要求の受信先である共用デバイス402に通知を送信する。一実施形態では、コンパニオンデバイス404が共用デバイス402の複数のインスタンスと接続される場合、ブロック486における通知の送信先である特定の共用デバイスは、複数の技術のうちの1つを使用して判定することができる。上述のように、1つの技術では、メッセージング要求の受信先である共用デバイスに通知を送信する。追加的な技術では、ユーザが直近に対話した共用デバイスに通知を送信する。例えば、ユーザは、第1の位置の第1の共用デバイスに要求して、メッセージを連絡先に送信することができる。ユーザは次いで、第2の位置に移動し、第2の共用デバイスと対話することができる。メッセージへの応答が一定期間内に受信され、ユーザが第2の共用デバイスと直近に対話した場合、第2の共用デバイスに通知を送信することができる。使用できる追加的な技術では、ユーザが最も近い共用デバイスに通知を送信する。一実施形態では、コンパニオンデバイス404と共用デバイス402との間の範囲を周期的に判定するために、1つ以上の測距技術を使用することができる。最近送信されたメッセージへの応答が受信されると、コンパニオンデバイス404は、1つ以上の測距技術に従って、コンパニオンデバイス又は関連するウェアラブル電子デバイスが最も近い共用デバイス402に通知を送信することができる。
ブロック476において、ブロック474で応答の通知を受信した共用デバイス402は、ブロック476において受信した応答の通知を出力することができる。一実施形態では、通知の出力は、共用デバイス402の1つ以上のスピーカデバイスを介して再生される発話通知を介して提供されてもよい。一実施形態では、視覚通知技術を含む他の通知技術を使用することができる。一実施形態では、発話通知は、発話連絡先名などの、受信メッセージの1つ以上の構成要素の発話変換に対するテキストを含むことができる。一実施形態では、発話通知は、受信メッセージの発話コンテンツを含むことができる。受信メッセージが記録メディアを含む一実施形態では、受信メッセージに関連付けられた記録メディア(例えば、オーディオ、ビデオ)を出力することができる。いくつかの実施形態では、受信テキストメッセージの発話コンテンツ、又は記録メディアの再生は、ユーザによって提供された要求に応じてのみ実行することができる。そのような実施形態では、応答のコンテンツを再生するための発話要求は、図4Aのプロセス400又は図4Bのプロセス430による要求を処理できる、コンパニオンデバイスに送信することができる。
図5は、本明細書に記載される実施形態による、ペアリングされたデバイスとのコンパニオンリンク接続を確立するためのプロセス500を示す。プロセス500は、共用デバイスが、コンパニオンリンク(例えば、図4の共用デバイス402及びコンパニオンデバイス404)を介してコンパニオンデバイスとの接続を開始する動作を示す。しかしながら、コンパニオンデバイスが共用デバイスとの接続を開始する、同様の動作を実行することができる。一実施形態では、コンパニオンリンクを介したメッセージ交換の間、通信セッションを開始するいずれのデバイスもコンパニオンリンクに対するクライアントデバイスであるが、セッションを受け入れるデバイスは、コンパニオンリンクに対するサーバデバイスであり、したがって、共用デバイス402及びコンパニオンデバイス404はそれぞれ、コンパニオンリンク接続を開始又は受け入れることができる。更に、一実施形態では、ホームネットワーク環境(例えば、図2のホームネットワーク環境200)内の複数の共用デバイス間に、コンパニオンリンク接続を確立することができる。加えて、図1のように、ユーザデバイス104とユーザデバイス114との間などの複数のコンパニオンデバイス間に、コンパニオンリンク接続を確立することができる。
ブロック502において、コンパニオンリンクを介して共用デバイスとコンパニオンデバイスとの間に通信セッションを確立すべきとの判定がなされ得る。この判定は、共用デバイス又はコンパニオンデバイスのいずれかによって行うことができる。例示的な目的のために、プロセス500は、クライアントとしての共用デバイス、及びサーバとしてのコンパニオンデバイスを用いて例示されているが、実施形態はそのようには限定されない。
ブロック504において、共用デバイスは、ローカルネットワークを介して、コンパニオンデバイスの発見を試みることができる。発見は、Bonjour又はSSDPを含むがこれらに限定されない、本明細書に記載された発見サービスを使用して実行することができる。デバイスがブロック506においてローカルに発見された場合、プロセス500がブロック516において続行され、ここで共用デバイスは、コンパニオンデバイスとのローカルネットワーク接続の確立を試みることができる。ローカルネットワーク接続は、伝送制御プロトコル(TCP)などであるがこれらに限定されないネットワークプロトコルを介して確立することができる。デバイスがローカルに発見されない場合、共用デバイスは、ブロック508においてリモート識別子が利用可能であるかどうかを判定することができる。リモート識別子は、同じネットワーク上に常駐しない又はそうしなければ発見サービスプロトコルを介して発見できないペアリングされたデバイスとのコンパニオンリンクセッションを、共用デバイス又は別のコンパニオンリンククライアントが特定、接続、及び確立することを可能にする、識別子又は識別トークンであり得る。1つ以上のリモート識別子は、ローカルデバイス発見及び/又はペアリングプロセス(例えば、図3の発見プロセス300)の間に生じる、存在情報及び到達可能情報の交換中に、コンパニオンリンクデバイス間で交換することができる。例示的なリモート識別子は、仮想アシスタントサーバ(例えば、図1Bの仮想アシスタントサーバ106)を介して通信するために使用され得る、コンパニオンデバイス上の仮想アシスタントクライアントに関連付けられた仮想アシスタント識別子と、オンラインアカウントサーバ(例えば、図1Bのオンラインアカウントサーバ136)での登録を介して確立された識別子トークンと、中継サーバ(例えば、図1Bの中継サーバ126)に関連付けられた中継識別子と、を含む。共用デバイスは、インターネットIPアドレスなどのネットワークアドレスのクエリに利用可能なリモート識別子を使用することができ、リモート識別子を使用して、コンパニオンデバイスに接続し、又は中継サービスを介してコンパニオンデバイスとの中継メッセージ交換を可能にすることができる。ブロック518において、共用デバイスは、リモート識別子を使用して、コンパニオンデバイスとのリモートネットワーク接続を確立することができる。
ブロック516においてローカルネットワーク接続を介して、又はブロック518においてリモートネットワーク接続を介して接続が確立されたかどうかにかかわらず、共用デバイスは、ブロック520においてコンパニオンデバイスとのペアリングを検証することができる。ペアリングを検証することにより、コンパニオンリンクを介してコメントしているデバイス間に真のペアリング関係が存在し、以前のローカルペアリング中に交換されたデータを利用することが確立される。一実施形態では、ペアリング検証プロセスが実行され、各デバイスは、ペアリングのセットアップ中に交換された長期公開鍵に対応する長期シークレット鍵の所有を実証する。ペア検証プロセスは、ペアリング検証セッション中に生じる通信を暗号化するために使用できる、新しい共有シークレット又はセッション鍵を確立することを更に含み得る。
ブロック522において、コンパニオンデバイスは、ペア検証プロセスが成功したかどうかを判定することができる。ブロック520におけるペアリング検証プロセスが、共用デバイスとコンパニオンデバイスとの間のペアリング関係を検証できなかった場合、コンパニオンデバイスは、少なくともコンパニオンデバイスに関連付けられたユーザの個人情報への仮想アシスタントアクセスが利用できなくなる、ブロック510に向けられる。
ブロック508において判定されたように、共用デバイスがコンパニオンデバイスにアクセスするために使用するリモート識別子が利用できない場合、個人情報への仮想アシスタントアクセスもまた利用できなくなる。そのような状況下で、ペアリングされた及び/又は有効なコンパニオンデバイスなしでユーザの個人情報へのアクセスを必要とするクエリが与えられると、共用デバイス上の仮想アシスタントは、クエリを処理することができなくなる。
ブロック522において、ペアリングが成功裏に検証されたと共用デバイスが判定した場合、共用デバイスは、ブロック524においてコンパニオンデバイスのユーザ用のシークレットデータにアクセスするクエリをサービスするために、コンパニオンデバイスとの検証されたコンパニオンリンクセッションを、共用デバイス上の仮想アシスタントクライアントに確立することができる。検証されたセッションは、メッセージ及びデータがプライバシー保持方式でデバイス間で交換され得るように、デバイス間のエンドツーエンド暗号化メッセージ交換を可能にすることができる。暗号化メッセージ交換は、例えば、個人又は個人のユーザデータに対する仮想アシスタント用のコマンド又は応答の中継を可能にするように実行することができる。暗号化メッセージ交換はまた、デバイスデータ、アプリケーションデータ、又はクラウドサービスアカウントに関連付けられた構成データなどの、電子デバイス間のデバイスデータを同期させるように実行することもできる。
上述のように、プロセス500は、接続を開始するデバイスとして、共用デバイスと共に図示されているが、コンパニオンデバイスはまた、共用デバイスとのローカル又はリモートセッションを開始することもできる。一実施形態では、検証されたコンパニオンリンクセッションは、いったん確立されると双方向接続であり、デバイス間の双方向メッセージ交換を可能にする。更に、セッションに参加する任意のモバイルデバイスは、無線機及び関連するプロセッサがセッションに関連付けられた接続を維持しながらデバイスが低電力状態に入り得るように、データがコンパニオンリンクを介して交換されていないときにウェイクオン無線状態に入ることができる。
いくつかの実施形態では、本明細書に記載されるコンパニオンデバイスは、デフォルトで、個人データの1つ以上の要素へのアクセスを制限するように構成することができる。一実施形態では、制限は、仮想アシスタントの使用がコンパニオンデバイス上で可能になるまで、個人データの特定の要素上に実施されなくてもよい。一実施形態では、制限は、デバイスがロック状態にある間、特定の要素の個人データ上に実施されてもよい。一実施形態では、制限は、デバイスパワーオン以降に少なくとも1つの成功裏のロック解除許可が生じるまで、所定の位置にあってもよい。例えば、一実施形態では、ユーザデバイス上の個人データを暗号化することができ、そのような個人データのアクセスに使用される鍵へのアクセスは、デバイスがロックされている間に制限することができる。したがって、コンパニオンデバイスの構成に応じて、コンパニオンデバイスは、コンパニオンデバイスがロックされている間に要求を受信した場合、共用デバイスからの要求を処理するために使用され得る個人データへのアクセスを有さなくてもよい。一実施形態では、個人データへのアクセスは、図6に示すプロセスを使用して、コンパニオンデバイス上で可能にすることができる。
図6は、本明細書に記載される実施形態による、コンパニオンデバイス上の個人データへのアクセスを可能にするためのプロセス600を示す。プロセス600は、本明細書に記載されるコンパニオンデバイス内のロジックによって実行することができ、コンパニオンデバイスは、本明細書に記載される任意の指定された個人ユーザデバイスであり得る。コンパニオンデバイスは、ブロック602に示すように、個人ユーザデータへのアクセスを必要とする要求を処理するために、共用デバイスからの要求を受信することができる。コンパニオンデバイスは、個人データアクセスが個人デバイス上で可能であるかどうかを判定することができる。様々な実施形態では、コンパニオンデバイス上の個人データアクセスは、様々な方法で制限され得る。一実施形態では、デバイスは、デバイスがロック状態にある間に、個人ユーザデータへのプログラム的アクセスを制限するように構成することができる。ブロック603において判定されたように、個人データアクセスが制限されている(例えば、有効でない)場合、コンパニオンデバイスは、ブロック604に示すように、ユーザに個人データへのアクセスを促すことができる。個人データへのアクセスのためのプロンプトは、アクセスのためのブランケットプロンプトであり得、又はアクセスされる個人データのタイプに固有であり得る。様々な実施形態において、ブロック604におけるプロンプトは、様々な形態で提示され得る。一実施形態では、プロンプトは、コンパニオンデバイスのユーザインタフェース上に提示されるポップアップ通知又は別のタイプの通知である。一実施形態では、プロンプトは、コンパニオンデバイスによって発話され得る口頭プロンプトである。
ブロック605においてユーザによって個人データアクセスが可能になった場合、コンパニオンデバイスは、ブロック608において、共用デバイスから個人データにアクセスし、その要求を処理することができる。個人データアクセスがユーザによって許可される方法は、アクセスプロンプトの性質に依存し得る。例えば、一実施形態では、ユーザは、提示されたユーザインタフェース要素の選択によるアクセスを可能にすることができ、又は、コンパニオンデバイスへの要求の口頭確認応答を提供することができる。ユーザが個人データへのアクセスを許可しなかった場合、コンパニオンデバイスは、ブロック606において、共用デバイスからの要求を拒否することができる。
図7は、一実施形態による、分散メディア再生システムを使用するためのコンピューティングデバイス700のブロック図である。一実施形態では、コンピューティングデバイス700は、共用スマートスピーカデバイス、又はメディア再生機能を有するスマートアプライアンスなど、本明細書で説明されるユーザデバイス又はスマートホームデバイス内での使用に好適であり得るハードウェア及びソフトウェアを含む。コンピューティングデバイス700は、メディア再生を可能にする1つ以上のスピーカデバイス(単数又は複数)701を含む。コンピューティングデバイス700がスマートスピーカデバイスとして実装される場合、スピーカデバイス(単数又は複数)701は、コンピューティングデバイスがユーザデバイス又はスマートアプライアンスとして実装されるときに対して、より高い品質であり得る。
コンピューティングデバイス700は、ネットワーク通信機能を可能にするネットワークインタフェース702を含む。ネットワークインタフェース702は、1つ以上の無線機(単数又は複数)703と結合して、Wi-Fi及びBluetoothなどであるがこれらに限定されない、1つ以上の無線ネットワーキング技術を介して無線通信を可能にすることができる。いくつかの実施態様では、ネットワークインタフェース702はまた、有線ネットワーク接続をサポートすることができる。コンピューティングデバイスはまた、複数のプロセッサデバイスを有する処理システム704、並びに揮発性及び不揮発性メモリを含むアドレス空間を有する仮想メモリシステムであり得るシステムメモリ710を含む。
一実施形態では、処理システム704は、ユーザ用の、及びコンピューティングデバイス上で実行されるシステムアプリケーション用の命令を実行するための1つ以上のアプリケーションプロセッサ(単数又は複数)705を含む。処理システムはまた、動きセンサ、光センサ、近接センサ、バイオメトリックセンサ、オーディオセンサ(例えば、マイクロフォン)、及び画像センサ(例えば、カメラ)を含むがこれらに限定されないセンサを有する一組のセンサデバイス708を処理及び監視するセンサプロセッサを含むことができる。センサプロセッサ706は、センサデバイス708のスイート内の常時オンセンサの低電力監視を可能にすることができる。センサプロセッサ706は、コンピューティングデバイス700がアクティブに使用されていないときに、アプリケーションプロセッサ(単数又は複数)705が低電力状態に留まることを可能にする一方で、コンピューティングデバイス700が仮想アシスタント720へのボイス入力又はジェスチャ入力を介してアクセス可能なままであることを可能にすることができる。一実施形態では、処理システム内のセンサプロセッサ706又は同様の低電力プロセッサは、メディアプレーヤ725によって提供されるメディア命令の低電力処理を可能にすることができる。メディアプレーヤ725は、MPEG-2、MPEG-4、H.264、及びH.265/HEVCを含むがこれらに限定されない、様々な異なるオーディオ及び/又はビデオメディアタイプの再生ができるモジュール式メディアプレーヤであってもよい。一実施形態では、他のフォーマットは、追加のコーデックプラグインを介してサポートされてもよい。
仮想アシスタント720は、コンピューティングデバイス700上で実行されて、本明細書で説明されるインテリジェント自動アシスタントシステムを提供するロジックである。仮想アシスタント720には、ネットワークを介してデータを取り出すためのネットワークインタフェース702、メディアファイルの再生を開始若しくは停止するためのメディア再生アプリケーション、又はカレンダイベント、タスク、リマインダ、若しくはアラームをスケジュールするためのユーザカレンダデータを含むが、これらに限定されない、コンピューティングデバイス内の様々なソフトウェア及びハードウェア構成要素へのアクセスを選択的に与えることができる。仮想アシスタント720が本明細書に記載される共用デバイス上で実行される場合、仮想アシスタントは、コンパニオンリンクモジュール722と対話して、ユーザの個人ドメインデータにアクセスする要求が受信されたイベントでは、コンパニオンデバイス、又はコンパニオンデバイス上で実行されている仮想アシスタントを特定し、接続することができる。
コンピューティングデバイス700が分散再生システムに参加することができるスマートスピーカデバイス内にある場合、分散再生モジュール712は、分散再生システムを介して再生されるメディアのリストを管理する再生キューマネージャ714と、分散再生システムの特定の要素にメディア再生をルーティングする再生ルーティングマネージャ716とを含むがこれらに限定されない、メディア再生の様々な態様を管理するための動作を実行することができる。一実施形態では、再生ルーティングマネージャ716は、コンパニオンリンクモジュール722を使用して確立された接続を介して、分散再生システムの異なる要素と接続することができる。コンパニオンリンクモジュール722は、マルチチャネル再生システム用のチャネル出力を構成する、又は複数の接続されたスピーカにわたって音量調整を調整するなどの動作を実行するために、分散再生システムのスピーカとデバイスとの間に確立されたコンパニオンリンクを介して接続確立及びメッセージ中継を容易にすることができる。
一実施形態では、イベントスケジューラ730は、分散再生モジュール712とデータを交換することができる。データ交換は、コンピューティングデバイス700、又は分散型再生システム内に参加する異なるコンピューティングデバイスのユーザインタフェースを介して受信した入力に応じて実行することができる。データ交換はまた、仮想アシスタント720を介して要求された活動に応じて実行することができる。例えば、一実施形態では、イベントスケジューラ730を介してスケジュールされたイベントは、スケジュールされたイベントの発生時に再生キューマネージャ714を介してプレイリストを再生できるように、メディアプレイリストに関連付けることができる。例えば、アラームは、ユーザを特定の時間に起こすようにスケジュールできる。アラームは、1つ以上のメディア要素がアラーム音に関連して又はアラーム音の代替として再生されるように、プレイリストに関連付けることができる。一実施形態では、プレイリストは、リマインダ又はタイマ失効イベントを含むイベントスケジューラ730を介してスケジュールされた任意のイベントに関連付けることができる。
一実施形態では、再生キューマネージャ714は、複数の同時再生キューを管理することができ、再生キューは、コンピューティングデバイス700を介して再生される1つ以上の過去、現在、又は未来のメディア要素を含む。再生キューは、複数のメディア要素を指定する個々のメディア要素又はプレイリストでロードすることができる。再生キューには、ローカルに記憶されたメディア、メディアサーバ経由で再生するために取り出されるメディア、又はローカル若しくはリモートのメディアストリーミングサーバからストリーミングされるメディア、を含むことができる。再生キューマネージャを介して、音楽、音楽ビデオ、及びオーディオ若しくはビデオポッドキャストを含むポッドキャスト、又は現在のニュース、天気、若しくはスポーツイベントのオーディオ及び/若しくはビデオクリップなどを含むがこれらに限定されない、マルチメディアファイルを含む再生キューマネージャを介して、分散再生システム上で再生されてもよい。
1つ以上のポッドキャストがスケジュールされたイベントの発生に応じて再生用に選択される場合、ポッドキャスト選択ロジックは、ポッドキャストの最新の利用可能なエピソード、又は最新の利用可能な未再生のポッドキャストなど、再生用のポッドキャストの特定のエピソードを選択することができる。そのような選択は、明示的なユーザの好みから、又は学習されたユーザ好み情報に基づいて判定することができる。選択はまた、現在の日付に対する利用可能な未再生のポッドキャストの履歴に基づいて実行することもできる。一実施形態では、ポッドキャストフィードは、ポッドキャストフィードがシリアルポッドキャスト又はニューススタイルポッドキャストに関連付けられているかどうかを示すメタデータを含む。再生されていないエピソードを再生するか、又は最新のエピソードを再生するかは、そのようなメタデータに少なくとも部分的に基づいて判定することができる。
一実施形態では、例えば、ウェイクアラームを設定するときに、ニュース番組又はニュースチャンネルを再生用に選択することができる。ユーザは、ウェイクアラームに応じて再生するための特定のプログラム又はチャネルを選択することができる。あるいは、ユーザは、再生キューマネージャ714に関連付けられた一般的なニュースカテゴリ及びロジックを選択することができ、選択されたユーザの好みに基づいて再生するニュース番組又はニュースチャンネルを選択することができる。一実施形態では、ニュースプログラムの好みは、ユーザデバイス上のニュース番組内で選択されたニューストピックの好みに基づいて判定することができる。
一実施形態では、異なる再生キューの再生を引き起こすスケジュールされたイベント中に既存の再生キューが有効な場合、再生キューマネージャ714は、ユーザによって選択された好みに基づいてキューを管理することができる。一例では、再生キューマネージャ714は、既存の再生キューを新しい再生キューに置き換えるように構成することができ、既存の再生キューのキュー項目を除去し、それらを新しい再生キューの項目と置き換える。そのような場合では、アラーム又は他のスケジュールされたイベントに応じて再生するために選択された項目は、以前のキュー項目を置き換え、包含する。あるいは、再生キューマネージャ714は、スケジュールされたイベントが却下されるまでのみ、効果のある過渡再生キューを実装するように構成することができる。スケジュールされたイベントが却下された後、以前に存在する再生キューの再生項目は、アクティブキューに復元され、以前に存在するキューの再生を再開することができる。スケジュールされたイベントは、仮想アシスタントへのボイスコマンド若しくはテキストコマンドを介して、コンピューティングデバイス700上のユーザインタフェース、又はコンピューティングデバイス700に接続されたユーザデバイスのユーザインタフェースを介して、却下することができる。
一実施形態では、再生ルーティングマネージャ716を使用して、再生キューの再生に使用するための分散再生システム内の再生デバイスを選択することができる。分散再生システム内の再生デバイスの数に応じて、複数の異なるキューを複数の異なる再生デバイス上でアクティブにし、又は分散再生システム内の複数の異なる再生デバイスをグループ化することができる。グループ化された再生デバイスは、共通の再生キューを共有し、同時に同じメディアを再生することができる。スマート再生デバイスがプロビジョニングされると、1人以上のユーザ及び/又は1つ以上のユーザアカウントに、再生デバイスを関連付けることができる。スマート再生デバイスはまた、位置及び/又はデバイスタイプを割り当てることができる。一実施形態では、住居分散再生ネットワークは、複数のユーザデバイスが、住居内の1つ以上のスマート再生デバイスを介してメディアを再生するように構成することができる。スマート再生デバイスが住居ネットワークに追加されると、各再生デバイスの部屋又は位置を指定することができる。スマート再生デバイスが単一のユーザに関連付けられているかどうか、又はスマート再生デバイスが複数のユーザに関連付けられた共用デバイスであるかどうかを示すオーナーシップを、各スマート再生デバイスに対して指定することもできる。
上述のように、本技術の一態様は、本明細書で説明するように、仮想アシスタントで使用するための、特定の正当なソースから利用可能なデータを収集及び使用することである。本開示は、場合によっては、この収集されたデータは、特定の人物を一意的に特定する、又は特定するために使用できる、個人情報データを含み得ることを意図している。そのような個人情報データは、人口統計データ、位置ベースのデータ、オンライン識別子、電話番号、電子メールアドレス、ホームアドレス、ユーザの健康又はフィットネスレベル(例えば、バイタルサイン測定、服薬情報、運動情報)に関するデータ若しくは記録、生年月日、又は任意の他の個人情報を含むことができる。
本開示は、本技術におけるそのような個人情報データの使用がユーザの利益になる使用であり得る点を認識するものである。例えば、個人情報データを使用して、仮想アシスタントを介してカレンダ又はリマインダデータにユーザがアクセスすることを可能にすることができる。仮想アシスタントが連絡先データにアクセスできるようにすることにより、仮想アシスタントがメッセージを送信し、又は通話を開始することを可能にすることができる。更には、ユーザに利益をもたらす、個人情報データに関する他の使用もまた、本開示によって想到される。例えば、ユーザの好みに従って、健康及びフィットネスのデータを使用して、一般的なウェルネスへの洞察を提供し、又はウェルネス目標を追求する技術を使用した個人への肯定的フィードバックとして使用することができる。
本開示は、そのような個人情報データの収集、分析、開示、転送、記憶、又は他の使用に関与するそれらエンティティが、確固たるプライバシーポリシー及び/又はプライバシー慣行を遵守するものとなることを意図している。具体的には、そのようなエンティティは、ユーザのプライバシーを維持するための業界又は政府の要件を満たす又は上回ると一般に認識されるプライバシー慣行を実現し、一貫して適用することが予想されるであろう。個人データの使用に関するそのような情報は、ユーザによって顕著に、容易にアクセス可能であるべきであり、かつ、データの収集及び/又は使用が変化するにつれて更新されるべきである。ユーザからの個人情報は、正当な使用のためのみに収集されるべきである。更に、そのような収集/共有は、ユーザの承諾を受けた後に、又は適用可能な法律に明記された他の正当な根拠に基づいて行われるべきである。更には、そのようなエンティティは、そのような個人情報データへのアクセスを保護して安全化し、その個人情報データへのアクセスを有する他者が、それらのプライバシーポリシー及び手順を遵守することを保証するための、あらゆる必要な措置を講じることを考慮するべきである。更には、そのようなエンティティは、広く受け入れられているプライバシーのポリシー及び慣行に対する自身の遵守を証明するために、第三者による評価を自らが受けることができる。加えて、ポリシー及び慣行は、収集及び/又はアクセスされる具体的な個人情報データのタイプに適合されるべきであり、かつ、より高い基準を課す役割を担い得る管轄権固有の考慮事項を含めた、適用可能な法令及び基準に適合されるべきである。例えば、アメリカ合衆国では、特定の健康データの収集又はアクセスは、医療保険の相互運用性と説明責任に関する法律(Health Insurance Portability and Accountability Act、HIPAA)などの、連邦法及び/又は州法によって管理することができ、その一方で、他国における健康データは、他の規制及びポリシーの対象となり得るものであり、それに従って対処されるべきである。
前述のことがらにもかかわらず、本開示はまた、個人情報データの使用又は個人情報データへのアクセスを、ユーザが選択的に阻止する実施形態も想到する。すなわち、本開示は、そのような個人情報データへのアクセスを防止又は阻止するように、ハードウェア要素及び/又はソフトウェア要素を提供することができると想到する。例えば、個人データにアクセスできる共用スマートホームデバイスの場合、本技術は、サービスの登録中又はその後いつでも、個人情報データの収集への参加の「オプトイン」又は「オプトアウト」をユーザが選択することを可能にするよう構成することができる。別の例では、ユーザは、スマートホームデバイスからの個人的データ又は私的データの特定の要素へのアクセスを可能にしないように選択することができる。「オプトイン」及び「オプトアウト」の選択肢を提供することに加えて、本開示は、個人情報のアクセス又は使用に関する通知を提供することを想到する。例えば、ユーザの個人情報データにアクセスすることとなるアプリのダウンロード時にユーザに通知され、その後、個人情報データがアプリによってアクセスされる直前に再びユーザに注意してもよい。
更には、本開示の意図は、個人情報データを、非意図的若しくは無許可アクセス又は使用の危険性を最小限に抑える方法で、管理及び処理するべきであるという点である。データの収集を制限し、データがもはや必要とされなくなった時点で削除することによって、危険性を最小限に抑えることができる。更には、適用可能な場合、特定の健康関連アプリケーションにおいて、ユーザのプライバシーを保護するために、データの非特定化を使用することができる。非特定化は、適切な場合には、識別子を除去すること、記憶されたデータの量又は特異性を制御すること(例えば、位置データを住所レベルよりも都市レベルで収集すること)、データがどのように記憶されるかを制御すること(例えば、データをユーザ全体にわたって集約すること)、及び/又は差分プライバシーなどの他の方法によって、容易にしてもよい。
それゆえ、本開示は、1つ以上の様々な開示された実施形態を実施するための、個人情報データの使用を広範に網羅するものではあるが、本開示はまた、そのような個人情報データにアクセスすることを必要とせずに、それらの様々な実施形態を実施することもまた可能であることを想到している。すなわち、本技術の様々な実施形態は、そのような個人情報データの全て又は一部分が欠如することにより、実施不可能となるものではない。例えば、いくつかのスマートホームデバイスの機能は、ユーザのデバイス上でのみ取り扱われるコンテンツ、又は利用可能な他の非個人情報などの、集計された非個人情報データ、又は裸の最小限の個人情報に基づいて可能にされ得る。
本明細書に記載される実施形態は、1つ以上のプログラミングインタフェースを介して呼び出される他のプログラムコードとコーリングプログラムコードとが相互作用する環境内の1つ以上のアプリケーションプログラミングインタフェース(API)を含む。様々な機能呼び出し、メッセージ、又は他のタイプの呼び出しは、様々な種類のパラメータを更に含んでもよく、呼び出しプログラムと呼び出されているコードとの間でAPIを介して転送することができる。加えて、APIは、API内で定義され、呼び出されたプログラムコード内に実装されるデータタイプ又はクラスを使用する能力を、呼び出しプログラムコードに提供することができる。
APIは、API呼び出し構成要素の開発者(サードパーティ開発者であってもよい)がAPI実装構成要素によって提供される特定の機能を利用することを可能にする。1つのAPI呼び出し構成要素が存在してもよく、又はこのような構成要素は2つ以上存在してもよい。APIは、アプリケーションからのサービスの要求をサポートするためにコンピュータシステム又はプログラムライブラリが提供するソースコードインタフェースであり得る。オペレーティングシステム(OS)は複数のAPIを有し、そのOS上で動作するアプリケーションがそれらのAPIのうちの1つ以上を呼び出すことを可能にすることができ、サービス(プログラムライブラリ等)は複数のAPIを有し、そのサービスを利用するアプリケーションがそれらのAPIのうちの1つ以上を呼び出すことを可能にすることができる。APIは、アプリケーションの構築時に解釈実行又はコンパイルすることができるプログラミング言語において指定することができる。
いくつかの実施形態では、API実装構成要素は、API実装構成要素によって実装される機能の異なる態様にアクセスする異なる観点又は異なる態様をそれぞれが提供する、2つ以上のAPIを提供してもよい。例えば、API実装構成要素の1つのAPIは、第1の組の関数を提供することができ、かつサードパーティー開発者に開示され、API実装構成要素の他のAPIは、隠されており(開示されない)、かつ第1の組の関数のサブセットを提供するとともに、第1のセットの関数に含まれていないテスト又はデバッグ関数などの他のセットの関数を提供することもできる。他の実施形態では、API実装構成要素自身が、基礎的なAPIを介して1つ以上の他の構成要素を呼び出すため、API呼び出し構成要素、及びAPI実装構成要素の両方であり得る。
APIは、API呼び出し構成要素がAPI実装構成要素の指定された機能にアクセスして利用する際に用いる言語及びパラメータを定義する。例えば、API呼び出し構成要素は、APIによって公開される(例えば関数又はメソッド呼び出しによって具体化される)1つ以上のAPI呼び出し又は起動を通じてAPI実装構成要素の指定された機能にアクセスし、API呼び出し又は起動を介してパラメータを用いてデータ及び制御情報を渡す。API実装構成要素は、API呼び出し構成要素からのAPI呼び出しに応じてAPIを通じて値を返してもよい。APIは、API呼び出しの構文及び結果(例えば、どのようにAPI呼び出しを起動するのか、及びAPI呼び出しは何をするのか)を定義するが、APIは、API呼び出しはどのようにAPI呼び出しによって指定された関数を完遂するのかは明らかにしなくてもよい。呼び出し(API呼び出し構成要素)とAPI実装構成要素との間では、1つ以上のアプリケーションプログラミングインタフェースを介して種々のAPI呼び出しが転送される。API呼び出しの転送は、発行、開始、起動、呼び出し、受信、返信、又は関数呼び出し若しくはメッセージへの応答を含み得る。換言すれば、転送は、API呼び出し構成要素又はAPI実装構成要素のいずれかによるアクションとして説明することができる。APIの関数呼び出し又はその他の起動は、パラメータリスト又はその他の構造を通じて1つ以上のパラメータを送信するか又は受信してもよい。パラメータは、定数、鍵、データ構造、オブジェクト、オブジェクトクラス、変数、データ型、ポインタ、配列、リスト、あるいはAPIを介して渡されるデータ若しくはその他の項目を参照するための関数若しくはメソッド又は別の手段へのポインタであり得る。
更に、データ型又はクラスがAPIによって提供され、API実装構成要素によって実装されてもよい。それゆえ、API呼び出し構成要素は、API内で提供される定義を利用することによって、このような型若しくはクラスの変数を宣言するか、定数値へのポインタを用いるか、定数値を使用するか、又はインスタンス生成してもよい。
一般的に、APIは、API実装構成要素によって提供されるサービス又はデータにアクセスするため、あるいはAPI実装構成要素によって提供される演算又は計算の実行を開始するために用いることができる。例として、API実装構成要素及びAPI呼び出し構成要素はそれぞれ、オペレーティングシステム、ライブラリ、デバイスドライバ、API、アプリケーションプログラム、又はその他のモジュールのうちのいずれかのものであってもよい(API実装構成要素及びAPI呼び出し構成要素は、互いに同じ又は異なる種類のモジュールであってもよいことを理解されたい)。API実装構成要素は、場合によっては、ファームウェア、マイクロコード、又はその他のハードウェア論理の形で少なくとも部分的に具体化されてもよい。実施形態によっては、APIは、クライアントプログラムが、ソフトウェア開発キット(SDK)ライブラリによって提供されるサービスを利用することを可能としてもよい。他の実施形態では、アプリケーション又は他のクライアントプログラムは、アプリケーションフレームワークによって提供されるAPIを利用してもよい。これらの実施形態では、アプリケーション又はクライアントプログラムは、SDKによって提供され、APIによって提供される関数若しくはメソッドに対する呼び出しを組み込むか、又はSDK内で定義され、APIによって提供されるデータタイプ若しくはオブジェクトを使用してもよい。これらの実施形態では、アプリケーションフレームワークが、フレームワークによって定義される種々のイベントに応答するプログラムのためのメインイベントループを提供してもよい。APIは、アプリケーションがアプリケーションフレームワークを利用して、イベント、及びイベントへの応答を特定することを可能にする。いくつかの実装形態では、API呼び出しは、入力能力及び状態、出力能力及び状態、処理能力、電力状態、記憶容量及び状態、通信能力などの側面に関するものを含む、ハードウェアデバイスの能力又は状態をアプリケーションに報告することができ、APIは、ファームウェア、マイクロコード、又はハードウェア構成要素上で部分的に実行するその他の低レベルロジックによって部分的に実装されてもよい。
API呼び出し構成要素は、ローカル構成要素(すなわち、API実装構成要素と同じデータ処理システム上にある)、又はAPIを介してネットワークを通じてAPI実装構成要素と通信するリモート構成要素(すなわち、API実装構成要素と異なるデータ処理システム上にある)であってもよい。API実装構成要素はまた、API呼び出し構成要素の役割も果たしてよく(すなわち、それは、異なるAPI実装構成要素によって公開されたAPIへのAPI呼び出しを行ってもよい)、API呼び出し構成要素はまた、APIを実装することによって、異なるAPI呼び出し構成要素に公開されたAPI実装構成要素の役割も果たしてよいことを理解されたい。
APIにより、異なるプログラミング言語で書かれている複数のAPI呼び出し構成要素は、API実装構成要素と通信することができるが(したがって、APIは、API実装構成要素とAPI呼び出し構成要素との間で呼び出しと戻りを翻訳するための機能を備えることができる)、APIは、特定のプログラミング言語に関して実装されてもよい。API呼び出し構成要素は、一実施形態では、あるAPIのセットはOS提供者から、かつ別のAPIのセットはプラグイン提供者から、かつ別のAPIのセットは別の提供者(例えばソフトウェアライブラリの提供者)又は別のAPIのセットの作成者からなどの、異なる提供者からのAPIを呼び出すことができる。
図8は、本発明のいくつかの実施形態において使用され得る、例示的なAPIアーキテクチャを示すブロック図である。図8に示すように、APIアーキテクチャ800は、API820を実装するAPI実装構成要素810(例えば、オペレーティングシステム、ライブラリ、デバイスドライバ、API、アプリケーションプログラム、ソフトウェア、又は他のモジュール)を含む。API820は、API呼び出し構成要素830によって使用され得るAPI実装構成要素の1つ以上の関数、メソッド、クラス、オブジェクト、プロトコル、データ構造、フォーマット、及び/又は他の機能を指定する。API820は、API実装構成要素の関数がAPI呼び出し構成要素からパラメータをどのように受け取るか、及び関数がAPI呼び出し構成要素に結果をどのように返すかを指定する少なくとも1つの呼び出し規約を指定することができる。API呼び出し構成要素830(例えば、オペレーティングシステム、ライブラリ、デバイスドライバ、API、アプリケーションプログラム、ソフトウェア、又は他のモジュール)は、API820を通じてAPI呼び出しを実行して、API820によって指定されているAPI実装構成要素810の機能にアクセスし、使用する。API実装構成要素810は、API呼び出しに応じて、API呼び出し構成要素830にAPI820を通じて値を返すことができる。
API実装構成要素810は、追加の関数、メソッド、クラス、データ構造、及び/又はAPI820を通じて指定されておらず、かつ、API呼び出し構成要素830に利用可能ではない他の機能を含む得ることが理解されるであろう。API呼び出し構成要素830は、API実装構成要素810と同じシステム上にあるか、又はリモートに特定することができ、ネットワークを経由してAPI820を使用してAPI実装構成要素810にアクセスすることができることを理解されたい。図8は、API820と相互に作用する単一のAPI呼び出し構成要素830を示しているが、API呼び出し構成要素830と異なる言語(又は同じ言語)で書くことが可能な他のAPI呼び出し構成要素がAPI820を用いることができることを理解されたい。
API実装構成要素810、API820、及びAPI呼び出し構成要素830は、機械可読媒体に記憶することができ、これは機械(例えば、コンピュータ又は他のデータ処理システム)によって読み取ることができる形式で情報を記憶するための任意のメカニズムを含む。例えば、機械可読媒体には、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリデバイスなどが挙げられる。
図9A~図9Bは、実施形態による、例示的なAPIソフトウェアスタック900、910のブロック図である。図9Aは、アプリケーション902が、サービスAPIを使用してサービスA又はサービスBへの呼び出しを行い、OS APIを使用してオペレーティングシステム904への呼び出しを行うことができる、例示的なAPIソフトウェアスタック900を示す。更に、サービスA及びサービスBは、いくつかのOS APIを使用してオペレーティングシステム904への呼び出しを行うことができる。
図9Bは、アプリケーション1、アプリケーション2、サービス1、サービス2、及びオペレーティングシステム904を含む例示的なAPIソフトウェアスタック910を示す。示されるように、サービス2は、2つのAPIを有し、それらの一方(サービス2API1)が、アプリケーション1から呼び出しを受信して、アプリケーション1に値を返し、他方(サービス2API2)が、アプリケーション2から呼び出しを受信して、アプリケーション2に値を返す。サービス1(例えば、ソフトウェアライブラリとすることができる)は、OS API1への呼び出しを行い、OS API1から戻り値を受信し、サービス2(例えば、ソフトウェアライブラリとすることができる)は、OS API1及びOS API2の双方への呼び出しを行い、双方から戻り値を受信する。アプリケーション2は、OS API2への呼び出しを行い、OS API2から戻り値を受信する。
追加の例示的コンピューティングデバイス
図10は、一実施形態による、モバイルデバイス又は組み込みデバイス用のデバイスアーキテクチャ1000のブロック図である。デバイスアーキテクチャ1000は、メモリインタフェース1002と、1つ以上のデータプロセッサ、画像プロセッサ、及び/又はグラフィックス処理ユニットを含む処理システム1004と、周辺機器インタフェース1006とを含む。様々な構成要素は、1つ以上の通信バス又は信号線によって結合することができる。様々な構成要素は、別個のロジック構成要素若しくはデバイスであってもよく、又はチップ集積回路上のシステムなどの1つ以上の集積回路に統合することができる。
メモリインタフェース1002は、スタティックランダムアクセスメモリ(SRAM)若しくはダイナミックランダムアクセスメモリ(DRAM)などの高速ランダムアクセスメモリ、及び/又はフラッシュメモリ(例えば、NANDフラッシュ、NORフラッシュなど)などであるがこれに限定されない不揮発性メモリ、を含むことができるメモリ1050に結合することができる。
センサ、デバイス、及びサブシステムは、周辺機器インタフェース1006と結合することにより、多機能を容易にすることができる。例えば、動きセンサ1010、光センサ1012、及び近接センサ1014を周辺機器インタフェース1006に結合して、モバイルデバイス機能を容易にすることができる。指紋認識用の指紋スキャナ又は顔認識用の画像センサなど、1つ以上のバイオメトリックセンサ(単数又は複数)1015も存在してもよい。他のセンサ1016はまた、測位システム(例えば、GPS受信器)、温度センサ、又は他の検出デバイスなどの周辺機器インタフェース1006に結合して、関連する機能を容易にすることができる。カメラサブシステム1020及び光学センサ1022(例えば、電荷結合素子(CCD)又は相捕型金属酸化膜半導体(CMOS)光学センサを利用して、写真及びビデオクリップの記録等のカメラ機能を容易にすることができる。
1つ以上の無線通信サブシステム1024を通じて、通信機能を容易にすることができ、それらのサブシステムとしては、無線受信器及び送信器、並びに/又は光(例えば、赤外線)受信器及び送信器を挙げることができる。無線通信サブシステム1024の具体的な設計及び実装は、このモバイルデバイスが動作することを目的とする、通信ネットワーク(単数又は複数)次第であり得る。例えば、図示されたデバイスアーキテクチャ1000を含むモバイルデバイスは、GSMネットワーク、CDMAネットワーク、LTEネットワーク、Wi-Fiネットワーク、ブルートゥースネットワーク、又は任意の他の無線ネットワーク上で動作するように設計された無線通信サブシステム1024を含むことができる。特に、無線通信サブシステム1024は、メディア再生アプリケーションが、リモートメディアサーバからリソースを、又はリモートカレンダ若しくはイベントサーバからスケジュールされたイベントを取り出せる、通信機構を提供することができる。
オーディオサブシステム1026をスピーカ1028及びマイクロフォン1030に結合することにより、ボイス認識機能、ボイス複製機能、デジタル録音機能、及び電話機能等のボイスを使用可能な機能を容易にすることができる。本明細書に記載されるスマートメディアデバイスでは、オーディオサブシステム1026は、仮想サラウンドサウンド用のサポートを含む高品質オーディオシステムであり得る。
I/Oサブシステム1040は、タッチスクリーンコントローラ1042及び/又は他の入力コントローラ(単数又は複数)1045を含むことができる。表示デバイスを含むコンピューティングデバイスの場合、タッチスクリーンコントローラ1042は、タッチ感知ディスプレイシステム1046(例えば、タッチスクリーン)に結合することができる。タッチ感知ディスプレイシステム1046及びタッチスクリーンコントローラ1042は、例えば、容量性、抵抗性、赤外線、及び表面弾性波技術、並びに他の近接センサアレイ、又はタッチ感知ディスプレイシステム1046との1つ以上の接触点を判定するための他の要素を含むがこれらに限定されない、複数のタッチ及び圧力感知技術のうちのいずれかを使用して、接触及び動き並びに/又は圧力を検出することができる。タッチ感知ディスプレイシステム1046用の表示出力は、ディスプレイコントローラ1043によって生成することができる。一実施形態では、ディスプレイコントローラ1043は、フレームデータをタッチ感知ディスプレイシステム1046に可変フレームレートで提供することができる。
一実施形態では、センサコントローラ1044は、動きセンサ1010、光センサ1012、近接センサ1014、又は他のセンサ1016のうちの1つ以上から受信したデータを、監視、制御、及び/又は処理するために含まれる。センサコントローラ1044は、センサデータを解釈して、センサからのセンサデータの分析によって、より多くのモーションイベント又は活動のうちの1つの発生を判定するためのロジックを含むことができる。
一実施形態では、I/Oサブシステム1040は、1つ以上のボタン、ロッカスイッチ、サムホイール、赤外線ポート、USBポート、及び/若しくスタイラスなどのポインタデバイス、又はスピーカ1028及び/若しくはマイクロフォン1030の音量制御用のアップ/ダウンボタンなどの制御デバイス、などの他の入力/制御デバイス1048に結合できる他の入力コントローラ(単数又は複数)1045を含む。
一実施形態では、メモリインタフェース1002に結合されたメモリ1050は、ポータブルオペレーティングシステムインタフェース(POSIX)適合及び非適合オペレーティングシステム又は組み込みオペレーティングシステムを含む、オペレーティングシステム1052用の命令を記憶することができる。オペレーティングシステム1052は、基本システムサービスを処理するし、及びハードウェア依存タスクを実行する命令を含むことができる。いくつかの実装形態では、オペレーティングシステム1052は、カーネルであり得る。
メモリ1050はまた、例えば、リモートウェブサーバからウェブリソースを取り出すために、通信命令1054を記憶して、1つ以上の追加デバイス、1つ以上のコンピュータ、及び/又は1つ以上のサーバとの通信を容易にすることができる。メモリ1050はまた、グラフィックユーザインタフェースの処理を容易にするグラフィカルユーザインタフェース命令を含むユーザインタフェース命令1056を含むことができる。
加えて、メモリ1050は、センサ関連の処理及び機能を容易にするためのセンサ処理命令1058、電話関連の処理及び機能を容易にするための電話命令1060、電子メッセージング関連の処理及び機能を容易にするためのメッセージング命令1062、ウェブブラウジング関連の処理及び機能を容易にするためのウェブブラウザ命令1064、メディア処理関連の処理及び機能を容易にするためのメディア処理命令1066、GPS及び/又はナビゲーション命令1068、並びに位置ベースの機能を容易にするためのWi-Fiベースの位置命令を含む位置サービス命令、カメラ関連の処理及び機能を容易にするためのカメラ命令1070、並びに/又は他の処理及び機能、例えば、セキュリティ処理及び機能、及びシステム関連の処理及び機能を容易にするための他のソフトウェア命令1072、を記憶することができる。メモリ1050はまた、ウェブビデオ関連の処理及び機能を容易にするためのウェブビデオ命令などの他のソフトウェア命令、及び/又はウェブショッピング関連の処理及び機能を容易にするためのウェブショッピング命令、を記憶することができる。いくらかの実装形態では、メディア処理命令1066を、オーディオ処理関連の処理及び機能を容易にするためのオーディオ処理命令と、ビデオ処理関連の処理及び機能を容易にするためのビデオ処理命令とに、それぞれ分割することができる。国際移動体装置識別番号(IMEI)1074又は同様のハードウェア識別子などの移動体装置識別子もまた、メモリ1050に記憶することができる。
上記の識別された命令及びアプリケーションのそれぞれは、上記1つ以上の機能を実行する命令セットに対応し得る。これらの命令は、別個のソフトウェアプログラム、手順、又はモジュールとして実装する必要がない。メモリ1050に追加の命令を含めてもよいし、又は含まれている命令を減らしてもよい。更にまた、様々な機能は、1つ以上の信号処理及び/又は特定用途向け集積回路を含むハードウェア及び/又はソフトウェアに実装できる。
図11は、コンピューティングシステム1100の一実施形態のブロック図である。図11に示されるコンピューティングシステムは、例えば、デスクトップコンピュータシステム、ラップトップコンピュータシステム、タブレットコンピュータシステム、セルラー電話、セルラー対応PDAを含む個人デジタルアシスタント(PDA)、セットトップボックス、娯楽システム若しくは他の消費者向け電子デバイス、スマート家電デバイス、又はスマートメディア再生デバイスの1つ以上の実装を含む、様々なコンピューティングシステム(有線又は無線)を表すことを目的としている。代替的なコンピューティングシステムは、より多く、より少ない、及び/又は異なる構成要素を含み得る。図11のコンピューティングシステムは、コンピューティングデバイス、及び/又はコンピューティングデバイスが接続し得るサーバデバイスを提供するために使用されてもよい。
コンピューティングシステム1100は、情報を通信するためのバス1135又は他の通信デバイス、及び情報を処理し得るバス1135に結合されたプロセッサ(単数又は複数)1110を含む。コンピューティングシステム1100は単一のプロセッサで例示されているが、コンピューティングシステム1100は、複数のプロセッサ及び/又はコプロセッサを含んでもよい。コンピューティングシステム1100は、バス1135に結合されたランダムアクセスメモリ(RAM)又は他のダイナミックストレージデバイスなどのメモリ1120を更に含んでもよい。メモリ1120は、プロセッサ(単数又は複数)1110によって実行され得る情報及び命令を記憶してもよい。メモリ1120はまた、プロセッサ(単数又は複数)1110による命令の実行中に一時的変数又は他の中間情報を記憶するために使用されてもよい。
コンピューティングシステム1100はまた、プロセッサ(単数又は複数)1110に対する情報及び命令を記憶し得るバス1135に結合された読み出し専用メモリ(ROM)1130及び/又は別のデータ記憶デバイス1140を含んでもよい。データ記憶デバイス1140は、フラッシュメモリデバイス、磁気ディスク、又は光ディスクなどの様々な記憶デバイスであってもよく、又はそれを含むことができ、バス1135を介して、又はリモート周辺インタフェースを介して、コンピューティングシステム1100に結合されてもよい。
コンピューティングシステム1100はまた、バス1135を介してディスプレイデバイス1150に結合されて、ユーザに情報を表示することができる。コンピューティングシステム1100はまた、情報及びコマンド選択をプロセッサ(単数又は複数)1110に通信するためにバス1135に結合され得る、英数字及び他のキーを含む英数字入力デバイス1160を含むことができる。別のタイプのユーザ入力デバイスには、タッチパッド、マウス、トラックボール、又はカーソル方向キーなどのカーソル制御デバイス1170が含まれ、方向情報及びコマンド選択をプロセッサ(単数又は複数)1110に通信し、表示デバイス1150上のカーソル移動を制御する。コンピューティングシステム1100はまた、1つ以上のネットワークインタフェース(単数又は複数)1180を介して通信可能に結合されたリモートデバイスからのユーザ入力を受信することができる。
コンピューティングシステム1100は、ローカルエリアネットワークなどのネットワークへのアクセスを提供するために、1つ以上のネットワークインタフェース(単数又は複数)1180を更に含んでもよい。ネットワークインタフェース(単数又は複数)1180は、例えば、1つ以上のアンテナ(e)を表し得るアンテナ(単数又は複数)1185を有する無線ネットワークインタフェースを含んでもよい。コンピューティングシステム1100は、Wi-Fi、Bluetooth(登録商標)、近距離通信(NFC)、及び/又はセルラー電話インタフェースの組み合わせなどの、複数の無線ネットワークインタフェースを含むことができる。例えば、ネットワークインタフェース(単数又は複数)1180はまた、例えば、イーサネットケーブル、同軸ケーブル、光ファイバケーブル、シリアルケーブル、又はパラレルケーブルであり得るネットワークケーブル1187を介してリモートデバイスと通信するための有線ネットワークインタフェースを含んでもよい。
一実施形態では、ネットワークインタフェース(単数又は複数)1180は、例えばIEEE802.11b及び/又はIEEE802.11g規格に準拠することによってローカルエリアネットワークへのアクセスを提供することができ、及び/又は無線ネットワークインタフェースは、例えばBluetooth規格に準拠することによって個人エリアネットワークへのアクセスを提供することができる。他の無線ネットワークインタフェース及び/又はプロトコルもサポートすることができる。無線LAN規格を介した通信に加えて、又はその代わりに、ネットワークインタフェース(単数又は複数)1180は、例えば、時分割多重アクセス(TDMA)プロトコル、移動通信用グローバルシステム(GSM)プロトコル、符号分割多重アクセス(CDMA)プロトコル、ロングタームエボリューション(LTE)プロトコル、及び/又は任意の他のタイプの無線通信プロトコルを使用して、無線通信を提供することができる。
コンピューティングシステム1100は、1つ以上のエネルギー源1105及び1つ以上のエネルギー測定システム1145を更に含むことができる。エネルギー源1105は、外部電源、1つ以上の電池、1つ以上の充電貯蔵デバイス、USB充電器、又は他のエネルギー源に結合されたAC/DCアダプタを含むことができる。エネルギー測定システムは、所定の期間中にコンピューティングシステム1100によって消費されるエネルギーを測定できる、少なくとも1つの電圧又はアンペア数測定デバイスを含む。更に、例えば、表示デバイス、冷却サブシステム、Wi-Fiサブシステム、又は他の頻繁に使用される若しくは高エネルギーの消費サブシステムによって消費されるエネルギーを測定する1つ以上のエネルギー測定システムを含み得る。
図12は、本明細書に記載される実施形態による、仮想アシスタントシステム1200のブロック図を示す。例示される仮想アシスタントシステム1200は、一実施形態の例示であり、本明細書に記載される全ての実施形態に限定されるものではない。本明細書に記載される様々な実施形態によって使用される仮想アシスタントは、図示されたものよりも、追加の、より少ない、及び/若しくは異なる構成要素又は特徴を含み得る。仮想アシスタントシステム1200は、発話又はタイプされた言語などのユーザ入力1204を受け入れ、入力を処理し、及びユーザに出力1208を生成し、及び/又はユーザの代わりに1210のアクションを実行することができる仮想アシスタント1202を含む。仮想アシスタント1202は、コンテキスト情報を使用して、ユーザからの自然言語又はジェスチャ入力を補完することができる。コンテキスト情報は、ユーザの意図を明確にし、ユーザ入力の候補解釈の数を低減するために使用することができる。コンテキスト情報はまた、ユーザが過剰な明確化入力を提供する必要性を低減することができる。コンテキストは、情報処理の問題を制約するため、及び/又は結果をパーソナライズするための明示的なユーザ入力を補足するためにアシスタントによって使用可能な任意の利用可能情報を含むことができる。コンテキストは、例えば、発話認識、自然言語処理、タスクフロー処理、及びダイアログ生成を含む、様々な処理段階中の解決策を制約するために使用することができる。
仮想アシスタント1202は、辞書、ドメインモデル、及び/又はタスクモデルなどの多数の異なる背景知識ソース及びデータのうちのいずれかを描くことができる。本明細書に現に記載されている実施形態の観点から、そのような背景ソースは、仮想アシスタント1202の内部にあってもよく、又は1つ以上のリモートデータベースから収集することができる。ユーザ入力1204及び背景ソースに加えて、仮想アシスタント1202はまた、例えば、デバイスセンサデータ1256、アプリケーションの好み及び使用履歴1272、ダイアログ履歴及びアシスタントメモリ1252、個人データベース1258、個人音響コンテキストデータ1280、現在のアプリケーションコンテキスト1260、並びにイベントコンテキスト1206を含む、いくつかのコンテキストソースからの情報を描くこともできる。
一実施形態では、本明細書に記載されるようなユーザデバイス、再生デバイス、又はスマートメディア再生デバイスなどの仮想アシスタント1202を実行する物理デバイスは、1つ以上のセンサデバイスを有する。そのようなセンサは、デバイスセンサデータ1256の形態のコンテキスト情報のソースを提供することができる。センサ情報の例としては、ユーザの現在位置、ユーザの現在位置におけるローカル時間、ユーザが対話しているデバイスの位置、向き、及び動き、現在の光レベル、温度、及び他の環境測定値、使用中のマイクロフォン及びカメラの特性、使用されている現在のネットワーク、並びにイーサネット、Wi-Fi、及びBluetoothを含む接続されたネットワークの署名が挙げられるが、これらに限定されない。署名には、ネットワークアクセスポイントのMACアドレス、割り当てられたIPアドレス、Bluetooth名、周波数チャネルなどのデバイス識別子、及び無線ネットワークの他の特性が挙げられる。センサは、例えば、加速度計、コンパス、GPSユニット、高度検出器、光センサ、温度計、気圧計、クロック、ネットワークインタフェース、バッテリテスト回路などを含む任意のタイプのものであり得る。
現在のアプリケーションコンテキスト1260は、ユーザの現在の活動に関連するアプリケーション状態又は同様のソフトウェア状態を指す。例えば、ユーザは、特定の人とチャットするためにテキストメッセージアプリケーションを使用することができる。仮想アシスタント1202は、テキストメッセージアプリケーションのユーザインタフェースに固有である必要はなく、又はその一部である必要はない。代わりに、仮想アシスタント1202は、任意の数のアプリケーションからコンテキストを受信することができ、各アプリケーションは、仮想アシスタント1202に通知するようにそのコンテキストに寄与する。仮想アシスタント1202が呼び出されたときにユーザがアプリケーションを現在使用している場合、そのアプリケーションの状態は、有用なコンテキスト情報を提供することができる。例えば、仮想アシスタント1202が電子メールアプリケーション内から呼び出される場合、コンテキスト情報は、送信者情報、受信者情報、送信された日付及び/又は時刻、件名、電子メールコンテンツから抽出されたデータ、メールボックス又はフォルダ名などを含んでもよい。
一実施形態では、ユーザのアプリケーションの好み及び使用履歴1272を説明する情報は、様々なアプリケーション用の好み及び設定、並びにそれらのアプリケーションに関連付けられた使用履歴を含む。アプリケーションの好み及び使用履歴1272は、仮想アシスタント1202のユーザの意図又は他の機能を解釈及び/又は実用化するコンテキストとして使用される。そのようなアプリケーションの好み及び使用履歴1272の例としては、ショートカット、お気に入り、ブックマーク、友人リスト、又は人、企業、住所、電話番号、場所、ウェブサイト、電子メールメッセージに関するユーザーデータの任意の他のコレクション、又は任意の他の好み、すなわち、デバイス上で行われた最近の呼び出し、会話への当事者を含む最近のテキストメッセージ会話、地図又は方向に対する最近の要求、最近のウェブ探索及びURL、株価アプリケーションに列挙された株価、最近の歌若しくはビデオ若しくは再生された他のメディア、アラートアプリケーションに設定されたアラーム名、デバイス上のアプリケーション若しくは他のデジタルオブジェクトの名前、及びユーザの好みの言語若しくはユーザの位置で使用する言語、が挙げられるが、これらに限定されない。
コンテキストデータの別のソースは、例えば、名前及び電話番号を含むアドレス帳など、電話などのデバイス上のユーザの個人データベース1258である。一実施形態では、個人データベース1258から取得されたユーザの個人情報は、仮想アシスタント1202のユーザの意図又は他の機能を解釈及び/又は実用化するためのコンテキストとして使用される。例えば、ユーザの連絡先データベース内のデータを使用して、ユーザがファーストネームのみで誰かを参照したときのユーザのコマンドを解釈する際の曖昧性を低減することができる。個人データベース1258から取得できるコンテキスト情報の例としては、人、企業、組織、場所、ウェブサイト、及びユーザが参照し得る他のエンティティ、すなわち、ユーザ自身の名前、好ましい発音、アドレス、電話番号など、母、父、姉妹、上司などのユーザの名前付き関係、カレンダイベント、特別の日の名前、又はユーザが参照し得る任意の他の名前付きエントリを含む、ユーザのカレンダデータ、ユーザが参照し得る、やるべきこと、覚えておくべきこと、又は入手すべきもののリストを含む、ユーザのリマインダ又はタスクリスト、ユーザが参照し得る、ユーザの音楽ライブラリに関連付けられた歌、ジャンル、プレイリスト、及び他のデータの名前、ユーザのメディアライブラリ内の写真若しくはビデオ又は他のメディア上の人、場所、カテゴリ、タグ、ラベル、又は他の記号名、ユーザの個人ライブラリ内の本又は他の文学における、タイトル、著者、ジャンル、又は他の記号名、に関する、(名前、電話番号、物理アドレス、ネットワークアドレス、アカウント識別子、重要な日付に関する情報を含む)ユーザの連絡先データベース(アドレス帳)が挙げられるが、これらに限定されない。
コンテキストデータの別のソースは、仮想アシスタント1202とのユーザのダイアログ履歴である。そのような履歴は、例えば、ドメイン、人々、場所などへの言及を含み得る。例えば、ユーザは、「ニューヨークでは何時ですか?(What's the time in New York?)」と尋ねることができる。仮想アシスタント1202は、ニューヨーク市における現在時間を提供することによって応答することができる。次いで、ユーザは、「天気はどうですか?(What's the weather?)」と尋ねることができる。仮想アシスタント1202は、以前のダイアログ履歴を使用して、天気クエリ用の意図された位置が、ダイアログ履歴内で言及された最後の位置であると推測することができる。
ダイアログ履歴及び仮想アシスタントメモリからのコンテキスト情報の例としては、ダイアログで言及された人、ダイアログで言及された場所及び位置、フォーカスされている現在の時間フレーム、電子メール又はカレンダなどの、フォーカスされている現在のアプリケーションドメイン、電子メールを読むこと又はカレンダエントリを作成することなどの、フォーカスされている現在のタスク、読んだばかりの電子メールメッセージ、又は作成したばかりのカレンダエントリなどの、フォーカスされている現在のドメインオブジェクト、質問が尋ねられているかどうか、及びどのような可能な回答が期待されているかなどの、ダイアログ又はトランザクションフローの現在の状態、ユーザ要求の履歴、返されたレストランのセットなどの、ユーザ要求の結果の履歴、アシスタントがダイアログで使用したフレーズの履歴、及びユーザがアシスタントに伝えた事実、が挙げられるが、これらに限定されない。
一実施形態では、個人音響コンテキストデータ1280を使用して、ユーザ発語を理解するために使用され得る、可能性のある統計言語モデルから選択するか、又はそうでなければ認識された音響コンテキストを最適化するために発語認識を調整する。発語入力を解釈すると、仮想アシスタント1202は、発語が入力された音響環境を考慮するために、発語をテキストサービスに同調させることができる。例えば、静かなオフィスのノイズプロファイルは、自動車又は公共の場所のそれとは異なる。発話認識システムが、音響プロファイルデータを識別及び記憶することができる場合、これらのデータはまた、コンテキスト情報として提供することができる。使用中のマイクロフォンの特性、現在位置、及び現在のダイアログ状態などの他のコンテキスト情報と組み合わせると、音響コンテキストは、入力の認識及び解釈を支援することができる。
前述の明細書では、本発明をその特定の実施形態に関して説明してきた。しかしながら、より広範な本発明の趣旨及び範囲から逸脱することなく、それらの実施形態に様々な修正及び変更を加えることができる点が明白となるであろう。したがって、明細書及び図面は、限定的でなく、例示的な意味で考慮されるべきである。提供される説明及び実施例における詳細は、1つ以上の実施形態において任意の場所で使用され得る。異なる実施形態又は実施例の様々な特徴は、含まれるいくつかの特徴と様々に組み合わされてもよく、他の特徴は、様々な異なるアプリケーションに適合するように除外されてもよい。例には、方法、その方法の動作を実行するための手段などの主題が含まれる場合があり、少なくとも1つの機械可読媒体は、機械によって実行されるときに、その方法の動作、又は本明細書に記載される実施形態及び実施例による装置若しくはシステムの動作を機械に実行させる命令を含む。加えて、本明細書に記載される様々な構成要素は、一実施形態により説明される動作又は機能を実行するための手段とすることができる。
本明細書に記載される実施形態は、私的データへのアクセスが要求されているユーザに関連付けられた個人ユーザデバイスであるコンパニオンデバイスに、スマートスピーカデバイス又は別のスマートホームデバイスなどの共用電子デバイスが、個人ユーザデータを含む仮想アシスタント要求を中継又はリダイレクトすることを可能にする通信機構を提供する。通信機構はまた、スマートホームデバイスが構成データを含むデータを交換することを可能にする汎用通信機構として使用することもできる。
共用デバイスとコンパニオンデバイスとの間の通信は、コンパニオンリンクと呼ばれるセキュアデータチャネル上で実行することができる。コンパニオンリンクは、ホームネットワーク環境内で接続されたデバイスのための永続的な低遅延メッセージングシステムを提供する。いくつかの実施形態では、コンパニオンリンクは、ホーム内の個人モバイルデバイスを有する、又はインターネットを介して到達可能な、スピーカデバイスなどのホーム内の固定型共用デバイスのリンク化をサポートする。コンパニオンリンクは、共用デバイスが個人要求を1つ以上の個人デバイスにリダイレクトすることを可能にするが、共用デバイスは、そうしなければ、プライバシーの懸念に起因して、個人要求を取り扱うことができない。ユーザに関連付けられた個人デバイスへの個人要求のリダイレクトは、プライバシー保持方式で共用デバイス上の仮想アシスタントが受信及び要求することを可能にし得る。
コンパニオンデバイスへの個人クエリのリダイレクトを可能にすることに加えて、一実施形態では、コンパニオンリンクはまた、ホームネットワーク環境内のデバイス用の汎用メッセージングシステムも提供する。汎用メッセージングシステムは、コンパニオンリンクを介してメッセージを交換することによって、複数のホームデバイスが協調して働くことを可能にする。例えば、複数のスマートスピーカデバイス間のオーディオ再生を調整して、メディアアイテムの再生を調整すること、ユーザに最も近いスピーカを介してユーザにオーディオ通知を選択的に提供すること、複数のスピーカをマルチチャネルオーディオシステムに構成すること、又は発話要求及び応答の持続時間中にスピーカでオーディオダッキングを調整すること、などであるがこれらに限定されない動作を、デバイスが実行することを可能にすることができる。
共用デバイスは、発見プロトコルを介して、コンパニオンリンクサービス用のサポートをアドバタイズすることができる。共用デバイスと同じネットワーク上の個人ユーザデバイスは、共用デバイスによってアドバタイズされるコンパニオンリンクサービスを発見し、アドバタイズされた情報を使用して共用デバイスと接続することができる。個人デバイスは、共用デバイスとのペアリングプロセスを実行して、ユーザ用のコンパニオンデバイスになることができる。一実施形態では、ペアリングプロセスは、ユーザデバイスが近距離無線通信機構を介してコンパニオンデバイスと識別子、鍵、又はシークレットを交換する近接要素を含む。ペアリングプロセスはまた、コンパニオンリンクを介した共用デバイスとコンパニオンデバイスとの間の後続の接続を容易にすることができる、存在情報及び到達可能情報の交換を含むことができる。
本明細書に記載される実施形態は、個人ユーザデータを含む仮想アシスタント要求を、スマートスピーカデバイス又は別のスマートホームデバイスなどの共用電子デバイスが処理のために個人ユーザデバイスに中継又はリダイレクトすることを可能にする通信機構を提供する。通信機構はまた、スマートホームデバイスが構成データを含むデータを交換することを可能にする汎用通信機構として使用することもできる。しかしながら、より広範な本発明の趣旨及び範囲から逸脱することなく、それらの実施形態に様々な修正及び変更を加えることができる点が明白となるであろう。したがって、明細書及び図面は、限定的でなく、例示的な意味で考慮されるべきである。提供される説明及び実施例における詳細は、1つ以上の実施形態において任意の場所で使用され得る。異なる実施形態又は実施例の様々な特徴は、含まれるいくつかの特徴と様々に組み合わされてもよく、他の特徴は、様々な異なるアプリケーションに適合するように除外されてもよい。例には、方法、その方法の動作を実行するための手段などの主題が含まれる場合があり、少なくとも1つの機械可読媒体は、機械によって実行されるときに、その方法の動作、又は本明細書に記載される実施形態及び実施例による装置若しくはシステムの動作を機械に実行させる命令を含む。加えて、本明細書に記載される様々な構成要素は、一実施形態により説明される動作又は機能を実行するための手段とすることができる。
一実施形態は、共用電子デバイス上のデータ処理システムを提供し、データ処理システムは、命令を記憶するためのメモリデバイスと、メモリデバイス上に記憶された命令を実行するための1つ以上のプロセッサとを備える。命令は、1つ以上のプロセッサに、共用電子デバイスにおいてコマンドを受信する仮想アシスタントを提供させ、仮想アシスタントは、1つ以上のプロセッサを介して、共用電子デバイスにおいてコマンドを受信し、共用電子デバイスに関連付けられたユーザの個人データにそのコマンドがアクセスすることになるかどうかを判定するように構成されている。コマンドがユーザの個人データにアクセスすることになるとの判定に応じて、仮想アシスタントは、コマンドの少なくとも一部を処理するためにユーザの個人電子デバイスに要求を送信することができる。
本明細書に記載される実施形態では、ユーザの個人データは、連絡先リスト、テキストメッセージ、電子メール、通話履歴、アラーム、リマインダ、通信履歴、設定、好み、又は位置履歴を含み、共用電子デバイスは、スマートスピーカデバイスを含む。個人データは、ユーザの個人電子デバイス上に記憶することができ、仮想アシスタントは、共用電子デバイスの代わりに個人データにアクセスするように個人電子デバイスに要求することができる。次いで、仮想アシスタントは、ユーザの個人電子デバイスに送信された要求の出力を受信し、その出力に基づいてコマンドの処理を完了することができる。コマンドは、ユーザによって発話されたボイスコマンド、又は共用デバイスに送信されたテキストコマンドであってもよい。一実施形態では、ユーザの個人電子デバイスに要求を送信することは、ユーザの個人電子デバイスにコマンドをリダイレクトすることを含み、個人電子デバイスは、共用電子デバイスの代わりにコマンドを処理する。仮想アシスタントは、個人電子デバイスによって生成されたオーディオ応答を受信し、コマンドに対する応答としてオーディオ応答を再生することができる。コマンドがユーザの連絡先にメッセージを送信するコマンドである場合、オーディオ応答は、メッセージに対する受信した応答の通知であり得る。
一実施形態では、共用電子デバイスは、共用電子デバイスが個人電子デバイスに要求を送信することが可能になる前に、個人電子デバイスとのペアリング及び/又は信頼関係を確立することができる。仮想アシスタントは、個人電子デバイスとの検証されたデータ接続を介して、ユーザの個人電子デバイスに要求を送信することができる。検証されたデータ接続は、個人電子デバイスとの信頼関係に基づいて確立することができ、検証されたデータ接続は、信頼関係の確立中に交換されたデータを介して検証される。一実施形態では、検証されたデータ接続は、インターネットなどの広域ネットワークを介して確立されたリモートデータ接続を介して確立される。ユーザの個人データは、ユーザに固有のデータであり、本質的に個人的若しくは私的であるデータ、又は個人的若しくは私的として指定されるデータを含むことができる。個人データはまた、ユーザを具体的に識別するために使用できるデータを含み得る。
一実施形態は、1つ以上のプロセッサに動作を実行させる命令を記憶する非一時的機械可読媒体を提供し、命令は、共用デバイスとコンパニオンデバイスとの間に通信セッションを確立すべきと判定することを含み、コンパニオンデバイスは、ユーザに関連付けられた個人データにアクセスできる電子デバイスである。動作は、コンパニオンデバイスとのデータ接続を確立することと、共用電子デバイスとコンパニオンデバイスとの間の信頼関係を検証することと、信頼関係を検証した後に共用デバイスとコンパニオンデバイスとの間に暗号化通信セッションを確立することと、暗号化通信セッションを介して共用電子デバイスにおいて受信したコマンドをコンパニオンデバイスに中継することと、を更に含む。
一実施形態は、1つ以上のネットワークに接続するためのネットワークインタフェースと、命令、及び電子デバイスのユーザに関連付けられた個人データを記憶するためのメモリデバイスとを備える電子デバイスを提供する。電子デバイスは、メモリデバイス上に記憶された命令を実行するための1つ以上のプロセッサを含み、命令は、1つ以上のプロセッサにコマンドを受信するための仮想アシスタントを提供させる。仮想アシスタントは、1つ以上のプロセッサによって、ネットワークインタフェースを介して、共用電子デバイスからリダイレクトされたコマンドを受信することができる。コマンドは、電子デバイスのユーザに関連付けられた個人データにアクセスする要求を含むか、又は指定することができる。次いで、仮想アシスタントは、共用電子デバイスの代わりにコマンドの少なくとも一部を処理し、共用電子デバイスの代わりに実行された処理の出力を、ネットワークインタフェースを介して共用電子デバイスに送信することができる。
コンパニオンリンク接続は、スマートスピーカデバイスなどの共用の電子デバイスと、スマートフォンデバイスなどのコンパニオンデバイスとの間で説明されているが、コンパニオンリンク接続はまた、複数のスマートフォンデバイス、テーブルコンピューティングデバイスなどの複数のコンパニオンデバイス間、又はスマートフォンデバイスとテーブルコンピューティングデバイスとの間でも確立できる。
一実施形態は、電子デバイス上のデータ処理システムを提供し、データ処理システムは、命令を記憶するためのメモリデバイスと、メモリデバイス上に記憶された命令を実行するための1つ以上のプロセッサとを備える。命令は、実行されると、1つ以上のプロセッサに、電子デバイス間の暗号化データチャネルを有効にさせる。暗号化データチャネルを有効にするために、1つ以上のプロセッサは、第1の電子デバイスと第2の電子デバイスとの間に通信セッションを確立すべきと判定するように構成され、第1の電子デバイス及び第2の電子デバイスは、それぞれクラウドサービスアカウントに関連付けられる。1つ以上のプロセッサは、第1の電子デバイスと第2の電子デバイスとの間にピアツーピアデータ接続を確立し、第1の電子デバイスと第2の電子デバイスとの間の信頼関係を検証し、かつ、信頼関係の検証後に、第1の電子デバイスと第2の電子デバイスとの間に暗号化通信セッションを確立する、ように更に構成することができる。次いで、暗号化通信セッションを使用して、暗号化通信セッションを介して第1の電子デバイスと第2の電子デバイスとの間でデータを交換することができる。
更なる実施形態では、データ処理システムの1つ以上のプロセッサは、第1の電子デバイスと第2の電子デバイスとの間の近距離無線接続を介してピアツーピアデータ接続を確立し、及び/又は無線ネットワーク接続を介してネットワークレイヤプロトコルによって暗号化通信セッションを確立することができる。第1の電子デバイスと第2の電子デバイスとの間の信頼関係を検証することは、以前に確立された信頼関係を検証することを含むことができ、信頼関係は、短距離無線接続を介した第1の電子デバイスと第2の電子デバイスとの間のクレデンシャルの交換、及び/又は第1の電子デバイス及び第2の電子デバイスに関連付けられたクラウドサービスアカウントを介したクレデンシャルの交換、のうちの1つ以上を介して確立することができ、クレデンシャルは、第1の電子デバイスと第2の電子デバイスとの間の相互認証を可能にする。
更なる実施形態では、1つ以上のプロセッサは、デバイス発見プロトコルを介して第1の電子デバイスにおいて第2の電子デバイスを発見したことに応じて、第1の電子デバイスと第2の電子デバイスとの間に通信セッションを確立するべきと判定し、第2の電子デバイスを発見した後に、第1の電子デバイスと第2の電子デバイスとの間にピアツーピアデータ接続を確立する、するように構成することができる。通信セッションはまた、第1のデバイス及び第2のデバイスが関連付けられているクラウドサービスアカウントに関連付けられたデバイスのリストに基づいて確立することができる。一実施形態では、通信セッションは、クラウドサービスアカウントのファミリーに関連付けられたデバイスのリストに基づいて確立することができ、第1の電子デバイスは第1のアカウントに関連付けられ、第2の電子デバイスは第2のアカウントに関連付けられ、クラウドサービスアカウントのファミリーは、第1のアカウント及び第2のアカウントを含む。一実施形態では、第1の電子デバイスは、第1の電子デバイスが第2の電子デバイスへのデータ交換の要求を送信することを可能にする前に、第2の電子デバイスとの信頼関係を確立する。
一実施形態は、1つ以上のプロセッサに第1の電子デバイスと第2の電子デバイスとの間に通信セッションを確立することを判定することを含む動作を実行させる命令を記憶する非一時的機械可読媒体を提供し、第1の電子デバイス及び第2の電子デバイスはそれぞれ、クラウドサービスアカウントに関連付けられている。命令は、1つ以上のプロセッサに、第1の電子デバイスと第2の電子デバイスとの間にピアツーピアデータ接続を確立することと、第1の電子デバイスと第2の電子デバイスとの間の信頼関係を検証することと、信頼関係を検証した後に、第1の電子デバイスと第2の電子デバイスとの間に暗号化通信セッションを確立することと、暗号化通信セッションを介して第1の電子デバイスと第2の電子デバイスとの間でデータを交換することと、を含む、追加の動作を、更に実行させることができる。
一実施形態は、本明細書に記載されるコンピューティングデバイス又はデータ処理システム上で実行される方法を提供する。方法は、第1の電子デバイスと第2の電子デバイスとの間に通信セッションが確立すべきと判定することであって、第1の電子デバイス及び第2の電子デバイスがそれぞれ、クラウドサービスアカウントに関連付けられている、ことと、無線機を介して、第1の電子デバイスと第2の電子デバイスとの間にピアツーピアデータ接続を確立することと、第1の電子デバイスと第2の電子デバイスとの間の信頼関係を検証することであって、第1の電子デバイスと第2の電子デバイスとの間の信頼関係を検証することが、以前に確立された信頼関係を検証することを含む、ことと、を含む。方法は、無線ネットワーク接続上で、ネットワークレイヤプロトコルを介して、第1の電子デバイスと第2の電子デバイスとの間に暗号化通信セッションを確立することを更に含み、暗号化通信セッションは信頼関係を確認した後に確立され、暗号化通信セッションを介して第1の電子デバイスと第2の電子デバイスとの間でデータが交換される。データは、例えば、第1の電子デバイスと第2の電子デバイスとの間でデバイスデータを同期させるために交換することができ、デバイスデータは、クラウドサービスアカウントに関連付けられる。
更なる実施形態では、方法は、クラウドサービスアカウントのファミリーに関連付けられたデバイスのリストに基づいて、第1の電子デバイスと第2の電子デバイスとの間に通信セッションが確立すべきと判定することを更に含み、第1の電子デバイスは第1のアカウントに関連付けられ、第2の電子デバイスは第2のアカウントに関連付けられ、クラウドサービスアカウントのファミリーは、第1のアカウント及び第2のアカウントを含む。第1の電子デバイスは、デバイス発見プロトコルを介して第2の電子デバイスを発見でき、第2の電子デバイスの発見後に、第2の電子デバイスとのピアツーピアデータ接続を確立することができる。
本発明の他の特徴は、添付図面から、及び上記の「発明を実施するための形態」から、明らかとなるであろう。したがって、本発明の真の範囲は、図面、明細書、及び以下の特許請求の範囲を研究すると、当業者には明らかになるであろう。