(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスによって、前記コンピューティングデバイスのユーザに関連する情報に基づいて、前記ユーザと前記コンピューティングデバイスにおいて実行されるアシスタントとの間の対話を開始するためのイベントを決定するステップであって、前記アシスタントが、複数のアクションを実施するように構成される、ステップと、
前記コンピューティングデバイスによって、前記イベントに基づいて、前記複数のアクションから、前記イベントに関連する少なくとも1つのアクションを選択するステップと、
前記コンピューティングデバイスによって、前記少なくとも1つのアクションに基づいて、前記イベントの通知を出力するかどうかを決定するステップであって、前記通知が、前記イベントの指示、および前記イベントに関連する前記少なくとも1つのアクションを実施するようにとの要求を含む、ステップと、
前記イベントの前記通知を出力するとの決定に応答して、前記コンピューティングデバイスによって、前記アシスタントに、前記ユーザと前記アシスタントとの間の前記対話中に出力するための前記イベントの前記通知を送るステップとを含み、
前記イベントに関連する前記少なくとも1つのアクションを選択するステップは、特定のタイプのイベントについて他のコンピューティングデバイスのユーザの代わりに以前に実行されたアクションのタイプに関するフィードバックに基づいて、前記コンピューティングデバイスで、前記複数のアクションの各々をスコア付けすることを含む、
方法。
【請求項２】
前記コンピューティングデバイスによって、しきい値を満足させるそれぞれのスコアをもつ前記少なくとも1つのアクションを選択するステップをさらに含む、
請求項1に記載の方法。
【請求項３】
前記イベントの前記通知を出力するかどうかを決定するステップが、
どのくらい最近に前記ユーザと前記アシスタントとの間で以前の対話が行われたかに基づいて、前記イベントの前記通知を出力するかどうかを決定するステップを含む、
請求項1または2に記載の方法。
【請求項４】
前記イベントの前記通知を出力するかどうかを決定するステップが、
前記コンピューティングデバイスによって、前記イベントに関連する前記少なくとも1つのアクションを実施するようにとの前記要求を前記ユーザが受け付ける可能性の程度を決定するステップと、
前記コンピューティングデバイスによって、前記イベントに関連する前記少なくとも1つのアクションを実施するようにとの前記要求を前記ユーザが受け付ける可能性の程度に基づいて、前記イベントの前記通知を出力するかどうかを決定するステップとを含む、
請求項1〜3のいずれか一項に記載の方法。
【請求項５】
前記コンピューティングデバイスによって、前記イベントの重大度を決定するステップと、
前記コンピューティングデバイスによって、前記イベントの前記重大度にさらに基づいて、前記イベントの前記通知を出力するかどうかを決定するステップとをさらに含む、
請求項4に記載の方法。
【請求項６】
前記イベントの前記通知を出力するかどうかを決定するステップが、
前記コンピューティングデバイスによって、どのくらい最近に前記ユーザと前記アシスタントとの間で以前の対話が行われたかと、前記ユーザと前記アシスタントとの間の以前の対話の頻度との組合せに基づいて、前記イベントの前記通知を出力するかどうかを決定するステップを含む、
請求項1〜5のいずれか一項に記載の方法。
【請求項７】
前記イベントに関連する前記少なくとも1つのアクションが、前記少なくとも1つのアクションを実施するように構成されたアプリケーションに関連付けられ、
前記アプリケーションが、前記アシスタントとは異なる、
請求項1〜6のいずれか一項に記載の方法。
【請求項８】
前記少なくとも1つのアクションが単一のアクションである、
請求項1〜7のいずれか一項に記載の方法。
【請求項９】
前記少なくとも1つのアクションが複数のアクションを含む、
請求項1〜8のいずれか一項に記載の方法。
【請求項１０】
出力デバイスと、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに以下の動作を行うように構成されたアシスタントを実行させるための命令を記憶する少なくとも1つのメモリとを備えたコンピューティングデバイスであって、前記動作が、
前記コンピューティングデバイスのユーザに関連する情報に基づいて、前記ユーザと前記アシスタントとの間の対話を開始するためのイベントを決定することであって、前記アシスタントが、複数のアクションを実施するように構成される、ことと、
前記イベントに基づいて、前記複数のアクションから、前記イベントに関連する少なくとも1つのアクションを選択することと、
前記少なくとも1つのアクションに基づいて、前記イベントの通知を出力するかどうかを決定することであって、前記通知が、前記イベントの指示、および前記イベントに関連する前記少なくとも1つのアクションを実施するようにとの要求を含む、ことと、
前記イベントの前記通知を出力するとの決定に応答して、前記ユーザと前記アシスタントとの間の前記対話中に前記出力デバイスを介して前記イベントの前記通知を出力することとを含み、
前記イベントに関連する前記少なくとも1つのアクションを選択することは、特定のタイプのイベントについて他のコンピューティングデバイスのユーザの代わりに以前に実行されたアクションのタイプに関するフィードバックに基づいて、前記コンピューティングデバイスで、前記複数のアクションの各々をスコア付けすることを含む、
コンピューティングデバイス。
【請求項１１】
前記コンピューティングデバイスが、
入力デバイスをさらに備え、
前記アシスタントが、
前記入力デバイスを介して、前記少なくとも1つのアクションを実施するようにと前記アシスタントに指令するユーザ入力を受け取ることと、
前記ユーザ入力を受け取ったことに応答して、前記少なくとも1つのアクションを実施することとを行うようにさらに構成される、
請求項10に記載のコンピューティングデバイス。
【請求項１２】
前記アシスタントは、前記少なくとも1つのプロセッサにおいて実行される、前記少なくとも1つのアクションを実施するように構成されたアプリケーションを起動することによって、前記少なくとも1つのアクションを実施するようにさらに構成され、
前記アプリケーションが、前記アシスタントとは異なる、
請求項10または11に記載のコンピューティングデバイス。
【請求項１３】
前記少なくとも1つのアクションが、複数のアクションを含む、
請求項10〜12のいずれか一項に記載のコンピューティングデバイス。
【請求項１４】
前記コンピューティングデバイスが、
入力デバイスをさらに備え、
前記アシスタントが、
前記入力デバイスを介して、前記複数のアクションからの特定のアクションを実施するようにと前記アシスタントに指令するユーザ入力を受け取ることと、
前記ユーザ入力を受け取ったことに応答して、前記特定のアクションを実施することとを行うようにさらに構成される、
請求項13に記載のコンピューティングデバイス。
【請求項１５】
前記アシスタントが、
前記ユーザと前記アシスタントとの間の対話を開始するための前記イベントを決定するように構成されたリモートコンピューティングシステムから、前記イベントを受け取るようにさらに構成される、
請求項10〜14のいずれか一項に記載のコンピューティングデバイス。
【請求項１６】
前記出力デバイスが、オーディオを出力するように構成され、
前記通知が、音声通知である、
請求項10〜15のいずれか一項に記載のコンピューティングデバイス。
【請求項１７】
前記アシスタントが、
前記対話を開始するための前記イベントの前記通知を出力することと、
前記イベントの前記通知を出力した後に、前記コンピューティングデバイスの入力デバイスを介して、前記少なくとも1つのアクションを実施するようにと前記アシスタントに指令するユーザ入力を受け取ることと、
前記ユーザ入力を受け取ったことに応答して、前記少なくとも1つのアクションを実施することとを行うようにさらに構成される、
請求項10〜16のいずれか一項に記載のコンピューティングデバイス。
【請求項１８】
デジタルアシスタントシステムの少なくとも1つのプロセッサに以下の動作を行わせるための命令を記憶するコンピュータ可読記憶媒体であって、前記動作が、
コンピューティングデバイスのユーザに関連する情報に基づいて、前記ユーザと前記コンピューティングデバイスにおいて実行されるアシスタントとの間の対話を開始するためのイベントを決定することであって、前記アシスタントが、複数のアクションを実施するように構成される、ことと、
前記イベントに基づいて、前記複数のアクションから、前記イベントに関連する少なくとも1つのアクションを選択することと、
前記少なくとも1つのアクションに基づいて、前記イベントの通知を出力するかどうかを決定することであって、前記通知が、前記イベントの指示、および前記イベントに関連する前記少なくとも1つのアクションを実施するようにとの要求を含む、ことと、
前記イベントの前記通知を出力するとの決定に応答して、前記アシスタントに、前記ユーザと前記アシスタントとの間の前記対話中に出力するための前記イベントの前記通知を送ることとを含み、
前記イベントに関連する前記少なくとも1つのアクションを選択することは、特定のタイプのイベントについて他のコンピューティングデバイスのユーザの代わりに以前に実行されたアクションのタイプに関するフィードバックに基づいて、前記コンピューティングデバイスで、前記複数のアクションの各々をスコア付けすることを含む、
コンピュータ可読記憶媒体。
【請求項１９】
前記命令が、前記デジタルアシスタントシステムに、どのくらい最近に前記ユーザと前記アシスタントとの間で以前の対話が行われたかに基づいて前記イベントの前記通知を出力するかどうかを決定することによって、前記イベントの前記通知を出力するかどうかを決定させる、
請求項18に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記少なくとも1つのアクションが、前記コンピューティングデバイスおよび前記デジタルアシスタントシステムとは異なる第3のデバイスに関連付けられる、
請求項18または19に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピューティングデバイスのユーザに関連する情報に基づいて、ユーザとコンピューティングデバイスにおいて実行されるアシスタントとの間の対話を開始するためのイベントを決定するシステムに関する。
【背景技術】
【０００２】
一部のコンピューティングプラットフォームは、ユーザがそこから(例えば「インテリジェントパーソナルアシスタント」または単に「アシスタント」とも呼ばれる)コンピュータによる仮想アシスタントとチャットし、話し、またはその他の形で通信して、アシスタントに情報を出力させ、ユーザの必要性に応えさせ、またはその他の形でユーザがタスクを完了するのを助けるある特定の動作を実施させることのできる、ユーザインターフェースを提供することができる。一部のアシスタントは、かなり洗練されており、多様な現実世界タスクまたは仮想タスクを実施するように構成されていることがあるが、ユーザは、アシスタントが提供する全ての能力を常に認識しているとは限らないことがある。ユーザは、情報を要求するだけ、またはアシスタントに、アシスタントが扱えることをユーザが知っているある特定のタスクを実施させるだけである場合がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
一般に、本開示の技法は、アシスタントが、ユーザとの既存の会話を促進するために、アシスタントが開始することのできる1つまたは複数のさらなるアクションについての情報を、アシスタントにそのような情報を求めるようにユーザに要求することなく、出力することを可能にすることができるものである。すなわち、アシスタントは、そのような情報を求める明示的なユーザ要求がなかった場合でさえ、ユーザとの既存の会話に関係するアシスタントのさらなる能力に、ユーザを積極的に案内することができる。例えば、アシスタントは、ユーザに関連する情報を維持するかまたはそれにアクセスできる承諾を受けた後は、ユーザ情報に基づいて、ユーザの予約したフライトの出発時間が遅延したとの決定をすることができる。ユーザにフライト遅延について通知する出力を生成することに加えて、かつユーザ入力を受け取ることなく、アシスタントは、遅延に合わせるように夕食の予約または地上輸送手段のスケジュール変更をするように提案する、さらなる出力も生成することができる。このようにして、アシスタントは、ダイアログを開始するように、さらなる情報を出力するように、またはユーザとの既存の会話を促進するためのさらなるアクション(例えば夕食もしくは地上輸送手段のスケジュール変更をすること)を実施するという関係する提案を出力するように、構成される。したがって、説明する技法は、ユーザがさまざまなアクションを発見し、それをアシスタントに実施させるのに必要となるユーザ入力の数を低減させることによって、アシスタントに付随する利便性を高めることができる。
【０００４】
一例では、本開示は、コンピューティングデバイスのユーザに関連する情報に基づいて、ユーザとコンピューティングデバイスにおいて実行されるアシスタントとの間の対話を開始するためのイベントを決定することであって、アシスタントが、複数のアクションを実施するように構成される、決定することと、イベントに基づいて、複数のアクションから、イベントに関連する少なくとも1つのアクションを選択することと、少なくとも1つのアクションに基づいて、イベントの通知を出力するかどうかを決定することであって、通知が、イベントの指示、およびイベントに関連する少なくとも1つのアクションを実施するようにとの要求を含む、決定することとを含む方法を対象とする。方法は、イベントの通知を出力するとの決定に応答して、アシスタントに、ユーザとアシスタントとの間の対話中に出力するためのイベントの通知を送ることをさらに含む。
【０００５】
別の例では、本開示は、出力デバイスと、少なくとも1つのプロセッサと、少なくとも1つのメモリとを含む、コンピューティングデバイスを対象とする。メモリは、命令を含み、命令は実行されると、コンピューティングデバイスのユーザに関連する情報に基づいて、ユーザとアシスタントとの間の対話を開始するためのイベントを決定することであって、アシスタントが、複数のアクションを実施するように構成される、決定することと、イベントに基づいて、複数のアクションから、イベントに関連する少なくとも1つのアクションを選択することと、少なくとも1つのアクションに基づいて、イベントの通知を出力するかどうかを決定することであって、通知が、イベントの指示、およびイベントに関連する少なくとも1つのアクションを実施するようにとの要求を含む、決定することと、イベントの通知を出力するとの決定に応答して、ユーザとアシスタントとの間の対話中に出力デバイスを介してイベントの通知を出力することとを行うように構成されたアシスタントを、少なくとも1つのプロセッサに実行させる。
【０００６】
別の例では、本開示は、命令を備えるコンピュータ可読記憶媒体であって、命令は実行されると、コンピューティングデバイスのユーザに関連する情報に基づいて、ユーザとコンピューティングデバイスにおいて実行されるアシスタントとの間の対話を開始するためのイベントを決定することであって、アシスタントが、複数のアクションを実施するように構成される、決定することと、イベントに基づいて、複数のアクションから、イベントに関連する少なくとも1つのアクションを選択することと、少なくとも1つのアクションに基づいて、イベントの通知を出力するかどうかを決定することであって、通知が、イベントの指示、およびイベントに関連する少なくとも1つのアクションを実施するようにとの要求を含む、決定することとを、デジタルアシスタントシステムの少なくとも1つのプロセッサに行わせる、コンピュータ可読記憶媒体を対象とする。命令は、実行されると、イベントの通知を出力するとの決定に応答して、アシスタントに、ユーザとアシスタントとの間の対話中に出力するためのイベントの通知を送ることを、デジタルアシスタントシステムの少なくとも1つのプロセッサにさらに行わせる。
【０００７】
別の例では、本開示は、コンピューティングデバイスのユーザに関連する情報に基づいて、ユーザとコンピューティングデバイスにおいて実行されるアシスタントとの間の対話を開始するためのイベントを決定するための手段であって、アシスタントが、複数のアクションを実施するように構成される、決定するための手段と、イベントに基づいて、複数のアクションから、イベントに関連する少なくとも1つのアクションを選択するための手段と、少なくとも1つのアクションに基づいて、イベントの通知を出力するかどうかを決定するための手段であって、通知が、イベントの指示、およびイベントに関連する少なくとも1つのアクションを実施するようにとの要求を含む、決定するための手段とを含む、システムを対象とする。システムは、イベントの通知を出力するとの決定に応答して、アシスタントに、ユーザとアシスタントとの間の対話中に出力するためのイベントの通知を送るための手段をさらに含む。
【０００８】
1つまたは複数の例の詳細が、添付の図面および下の説明中に記載される。本開示の他の特徴、目的、および利点は、説明および図面から、また特許請求の範囲から、明らかとなろう。
【図面の簡単な説明】
【０００９】
【図１】本開示の1つまたは複数の態様による、例示的仮想アシスタントを実行する例示的システムを示す概念図である。
【図２】本開示の1つまたは複数の態様による、例示的仮想アシスタントを実行するように構成された例示的コンピューティングデバイスを示すブロック図である。
【図３】本開示の1つまたは複数の態様による、例示的仮想アシスタントを実行する1つまたは複数のプロセッサによって実施される例示的動作を示すフローチャートである。
【図４】本開示の1つまたは複数の態様による、例示的仮想アシスタントを実行するように構成された例示的デジタルアシスタントサーバを示すブロック図である。
【発明を実施するための形態】
【００１０】
図1は、本開示の1つまたは複数の態様による、例示的仮想アシスタントを実行する例示的システムを示す概念図である。図1のシステム100は、ネットワーク130を介して検索サーバシステム180ならびにコンピューティングデバイス110Aおよび110B(まとめてコンピューティングデバイス110)と通信する、デジタルアシスタントサーバ160を含む。システム100は、デジタルアシスタントサーバ160、検索サーバシステム180、およびコンピューティングデバイス110の間で分散されたものとして示されているが、他の例では、システム100に属するとされる特徴および技法は、内部的に、コンピューティングデバイス110のローカルコンポーネントによって実施されてよい。同様に、デジタルアシスタントサーバ160は、以下の説明においてはそうではなく検索サーバシステム180および/またはコンピューティングデバイス110に属するとされる、ある特定のコンポーネントを含んでよく、また以下の説明においてはそうではなく検索サーバシステム180および/またはコンピューティングデバイス110に属するとされる、さまざまな技法を実施してよい。図1は、2つのコンピューティングデバイス110を示しているが、任意の適切な数の1つまたは複数のコンピューティングデバイス110が使用されてよい。
【００１１】
ネットワーク130は、コンピューティングシステムと、サーバと、コンピューティングデバイスとの間でデータを伝送するための、任意の公衆または私設通信ネットワーク、例として、セルラー、Wi-Fi、および/または他のタイプのネットワークを表す。デジタルアシスタントサーバ160は、仮想アシスタントサービスを提供するために、ネットワーク130を介してコンピューティングデバイス110とデータをやりとりすることができ、この仮想アシスタントサービスは、コンピューティングデバイス110がネットワーク130に接続されたときに、コンピューティングデバイス110にとってアクセス可能となる。デジタルアシスタントサーバ160は、検索サーバシステム180によって提供される検索サービスにアクセスするために、ネットワーク130を介して検索サーバシステム180とデータをやりとりすることができる。コンピューティングデバイス110は、検索サーバシステム180によって提供される検索サービスにアクセスするために、ネットワーク130を介して検索サーバシステム180とデータをやりとりすることができる。
【００１２】
ネットワーク130は、動作可能に相互結合され、それによって、サーバシステム160と、サーバシステム180と、コンピューティングデバイス110との間で情報のやりとりが可能になる、1つまたは複数のネットワークハブ、ネットワークスイッチ、ネットワークルータ、または他の任意のネットワーク機器を含むことができる。コンピューティングデバイス110、デジタルアシスタントサーバ160、および検索サーバシステム180は、任意の適切な通信技法を使用して、ネットワーク130にわたってデータを送信および受信することができる。コンピューティングデバイス110、デジタルアシスタントサーバ160、および検索サーバシステム180はそれぞれ、それぞれに対応するネットワークリンクを使用して、ネットワーク130に動作可能に結合され得る。コンピューティングデバイス110、デジタルアシスタントサーバ160、および検索サーバシステム180をネットワーク130に結合するリンクは、イーサネット(登録商標)または他のタイプのネットワーク接続であってよく、そのような接続は、ワイヤレス接続および/または有線接続であってよい。
【００１３】
デジタルアシスタントサーバ160および検索サーバシステム180は、ネットワーク130などのネットワークに情報を送ることと、そこから情報を受信することとの両方が可能な、1つまたは複数のデスクトップコンピュータ、ラップトップコンピュータ、メインフレーム、サーバ、クラウドコンピューティングシステムなどのような、任意の適切なリモートコンピューティングシステムを表す。デジタルアシスタントサーバ160は、仮想アシスタントサービスをホストする(または少なくとも仮想アシスタントサービスへのアクセスを提供する)。検索サーバシステム180は、検索サービスをホストする(または少なくとも検索サービスへのアクセスを提供する)。いくつかの例では、デジタルアシスタントサーバ160および検索サーバシステム180は、クラウドを通じてそれらのそれぞれに対応するサービスへのアクセスを提供する、クラウドコンピューティングシステムを表す。
【００１４】
コンピューティングデバイス110は、提供される仮想アシスタントサービスにネットワーク130を介してアクセスするように構成された、個々のモバイルまたは非モバイルコンピューティングデバイスを表す。コンピューティングデバイス110の例としては、仮想アシスタントを実行するかまたは仮想アシスタントにアクセスし、ネットワーク130などのネットワークを介して情報を受信するように構成された、モバイル電話、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバ、メインフレーム、セットトップボックス、テレビジョン、ウェアラブルデバイス(例えばコンピュータ化腕時計、コンピュータ化アイウェア、コンピュータ化グローブなど)、ホームオートメーションデバイスもしくはシステム(例えばインテリジェントサーモスタットもしくはセキュリティシステム)、音声インターフェースもしくはカウンタトップホームアシスタントデバイス、パーソナルデジタルアシスタント(PDA)、ゲームシステム、メディアプレーヤ、電子ブックリーダ、モバイルテレビジョンプラットフォーム、自動車ナビゲーションもしくはインフォテイメントシステム、または他の任意のタイプのモバイル、非モバイル、ウェアラブル、および非ウェアラブルコンピューティングデバイスがある。
【００１５】
コンピューティングデバイス110は、デジタルアシスタントサーバ160によって提供される仮想アシスタントサービスにアクセスし、かつ/または検索サーバシステム180によって提供される検索サービスにアクセスするために、ネットワーク130を介してデジタルアシスタントサーバ160および/または検索サーバシステム180と通信することができる。仮想アシスタントサービスを提供する過程で、デジタルアシスタントサーバ160は、タスクを完了させるのに必要となる情報を取得するために、検索サーバシステム180と通信することができる。
【００１６】
図1の例では、デジタルアシスタントサーバ160は、アシスタントモジュール122Bおよびユーザ情報データストア124Bを含む。コンピューティングデバイス110Aは、ユーザインターフェースコンポーネント(UIC)112、ユーザインターフェース(UI)モジュール120、アシスタントモジュール122、およびユーザ情報データストア124Aを含む。検索サーバシステム180は、検索モジュール182を含む。図示していないが、コンピューティングデバイス110Bは、コンピューティングデバイス110Aと同様のコンポーネントおよび/またはモジュールを含んでよい。
【００１７】
モジュール120、122A、122B、および182は、コンピューティングデバイス110A、デジタルアシスタントサーバ160、または検索サーバシステム180のうちの1つに常駐し、かつ/またはそれらのうちの1つにおいて実行される、ソフトウェア、ハードウェア、ファームウェア、またはハードウェアと、ソフトウェアと、ファームウェアとの混合物を使用して、説明する動作を実施することができる。コンピューティングデバイス110A、デジタルアシスタントサーバ160、および検索サーバシステム180は、モジュール120、122A、122B、および182を、複数のプロセッサまたは複数のデバイスを用いて実行することができる。コンピューティングデバイス110A、デジタルアシスタントサーバ160、および検索サーバシステム180は、モジュール120、122A、122B、および182を、基礎をなすハードウェア上で実行される仮想マシンとして実行することができる。モジュール120、122A、122B、および182は、オペレーティングシステムまたはコンピューティングプラットフォームの1つまたは複数のサービスとして実行されてよい。モジュール120、122A、122B、および182は、コンピューティングプラットフォームのアプリケーション層における1つまたは複数の実行可能プログラムとして実行されてよい。
【００１８】
コンピューティングデバイス110のUIC112は、コンピューティングデバイス110Aのための入力および/または出力デバイスとして機能することができる。UIC112は、さまざまな技術を使用して実装され得る。例として、UIC112は、存在感知(presence-sensitive)入力画面、マイクロホン技術、赤外線センサ技術、カメラ、またはユーザ入力を受け取るのに使用する他の入力デバイス技術を使用した入力デバイスとして機能することができる。UIC112は、いずれか1つまたは複数の表示デバイス、スピーカ技術、触覚フィードバック技術、またはユーザに情報を出力するのに使用する他の出力デバイス技術を使用してユーザに出力を提示するように構成された、出力デバイスとして機能することができる。
【００１９】
UIモジュール120は、UIC112、およびコンピューティングデバイス110Aの他のコンポーネントとのユーザ対話を管理することができ、UIC112を介してアシスタントサービスを提供するために、デジタルアシスタントサーバ160と対話することができる。コンピューティングデバイス110AのユーザがUIC112において出力を見るときおよび/または入力を行うときに、UIモジュール120はUIC112に、ユーザインターフェースを出力させることができる。例えば、図1に示すように、UIモジュール120はUIC112に、UIC112にユーザインターフェース114をUIC112の表示画面に表示させる命令を送ることができる。
【００２０】
ユーザインターフェース114は、コンピューティングデバイス110Aのユーザとアシスタントモジュール122Aによって提供されるアシスタントとの間の会話のテキストを含む。図1の例では、ユーザインターフェース114は、グラフィカルユーザインターフェースである。ユーザインターフェース114は、いくつかの例では、可聴ユーザインターフェースであってよい。ユーザインターフェース114は、可聴音、振動、テキスト、グラフィックス、コンテンツカード、画像などのような、さまざまな形態の仮想アシスタント情報を含んでよい。
【００２１】
UIモジュール120およびUIC112は、ユーザがユーザインターフェース114と、さまざまな時間に、ユーザおよびコンピューティングデバイス110Aがさまざまな位置にあるときに対話する際に、ユーザから1つまたは複数の入力指示(例えば音声入力、タッチ入力、非タッチまたは存在感知入力、ビデオ入力、オーディオ入力など)を受け取ることができる。UIモジュール120およびUIC112は、UIC112において検出された入力を解釈することができ、例えばコンピューティングデバイス110Aに機能を実施させるために、UIC112において検出された入力についての情報を、アシスタントモジュール122A、ならびに/またはコンピューティングデバイス110Aにおいて実行される1つもしくは複数の他の関連するプラットフォーム、オペレーティングシステム、アプリケーション、および/もしくはサービスに中継することができる。
【００２２】
UIモジュール120は、コンピューティングデバイス110Aにおいて実行される1つもしくは複数の関連するプラットフォーム、オペレーティングシステム、アプリケーション、および/もしくはサービスから、ならびに/またはサーバシステム160やサーバシステム180など、1つもしくは複数のリモートコンピューティングシステムから、情報および命令を受け取ることができる。加えて、UIモジュール120は、コンピューティングデバイス110Aにおいて実行される1つまたは複数の関連するプラットフォーム、オペレーティングシステム、アプリケーション、および/またはサービスと、コンピューティングデバイス110Aのさまざまな出力デバイス(例えばスピーカ、LEDインジケータ、オーディオまたは触覚出力デバイスなど)との間の仲介物として働いて、コンピューティングデバイス110Aを用いた出力(例えばグラフィック、閃光、音、触覚応答など)を生み出すことができる。例えば、UIモジュール120はUIC112に、UIモジュール120がデジタルアシスタントサーバ160からネットワーク130を介して受信したデータに基づいて、ユーザインターフェース114を出力させることができる。UIモジュール120は、デジタルアシスタントサーバ160および/またはアシスタントモジュール122Aからの入力として、ユーザインターフェース114として提示するための情報(例えばオーディオデータ、テキストデータ、画像データなど)および命令を受け取ることができる。
【００２３】
アシスタントモジュール122Aおよびアシスタントモジュール122Bは、コンピューティングデバイス110を介してアクセスされる仮想アシスタントサービスの一部として、ユーザ情報データストア124Aおよび124Bを共同して維持することができる。アシスタントモジュール122Bおよびユーザ情報データストア124Bは、例示的アシスタントのサーバ側またはクラウド実装形態を表し、一方、アシスタントモジュール122Aおよびユーザ情報データストア124Aは、例示的アシスタントのクライアント側またはローカル実装形態を表す。いくつかの例では、アシスタントモジュール122Aに属するとされる一部または全ての機能が、アシスタントモジュール122Bによって実施されてよく、逆も同様である。
【００２４】
まとめてアシスタントモジュール122と呼ばれるアシスタントモジュール122Aおよびアシスタントモジュール122Bは、自動的に、かつユーザ対話を要求することなく、コンピューティングデバイスのユーザを、ユーザが現時間において関心のある可能性のある有意義なまたはその他の点で有用な情報に積極的に誘導するように構成されたアシスタントを実行することができる。アシスタントモジュール122は、ユーザとの既存の会話を促進するために、アシスタントが実施するように構成された1つまたは複数のさらなるアクションについての情報を、アシスタントにそのような情報を求めるようにユーザに要求することなく、出力するように構成され得る。例えば、アシスタントモジュール122によって提供されるアシスタントは、そのような情報を求める明示的なユーザ要求がなかった場合でさえ、ユーザとの既存の会話に関係するアシスタントのさらなる能力に、ユーザを積極的に案内することができる。
【００２５】
アシスタントモジュール122はそれぞれ、コンピューティングデバイス110のユーザなどの個人向けのタスクまたはサービスを実施することのできるインテリジェントパーソナルアシスタントとして実行されるように構成された、ソフトウェアエージェントを含むことができる。アシスタントモジュール122は、これらのタスクまたはサービスを、(例えばUIC112において検出された)ユーザ入力、(例えば位置などに基づく)コンテキスト認識、および/または(例えばコンピューティングデバイス110、デジタルアシスタントサーバ160にローカルに記憶されているか、またはプッシュ通知サービスを含む、検索サーバシステム180によって提供される検索サービスを介して取得される)多様な情報ソースからの他の情報(例えば気象状況または交通状況、ニュース、株価、スポーツのスコア、ユーザのスケジュール、輸送手段のスケジュール、小売価格など)にアクセスできる能力に基づいて、実施することができる。アシスタントモジュール122は、1つまたは複数のタスクをユーザの代わりに自動的に特定し、完了するために、人工知能技法および/または機械学習技法を実施してよい。アシスタントモジュール122は、1つまたは複数のタスクを実施するために、他のアプリケーション(例えばサードパーティアプリケーション)、サービス、または他のデバイス(例えばテレビジョン、自律自動車を含む自動車、腕時計、ホームオートメーションシステム、エンターテインメントシステムなど)を利用してもよい。
【００２６】
明示的なユーザの同意を得た後、アシスタントモジュール122は、例えば、コンピューティングデバイス110のユーザとの会話をサポートするための動作を実行する過程で、ユーザに関連する情報、あるいは(例えば、コンピューティングデバイス110、サーバシステム160もしくは180に位置する情報ソースによって、またはネットワーク130上のどこかに位置する他の任意のサーバもしくはデバイスによって記憶された)ユーザに関連する情報の位置へのポインタを、自動的に維持することができる。アシスタントモジュール122は、ユーザに関連する情報または情報へのポインタを、ユーザ情報データストア124Aおよび124B(まとめて「ユーザ情報データストア124」)として維持することができる。データストア124は、アシスタントモジュール122によって実行されるアシスタントが、現実世界タスク、仮想タスクを完了するためにアシスタントによって必要とされるユーザ情報に迅速にアクセスすること、またはコンピューティングデバイス110のユーザの即座のかつ/もしくは将来的な必要性にその他の形で応えることを、可能にすることができる。
【００２７】
例えば、ユーザに関連する情報は、ユーザからの承諾を得て、ユーザとアシスタントとの間の会話中に取得される情報、カレンダー情報、連絡先情報、ユーザの関心事項、ユーザの嗜好、およびユーザを有意義な情報に積極的に誘導するためにアシスタントモジュール122によって使用され得る、ユーザに関連する他の任意の情報であってよい。ユーザに関連する情報ソースの例としては、それらに限定されないが、電子メールシステムに組込みの知能、アシスタントモジュール122とのユーザ対話、ユーザに関連するデバイス(例えばコンピューティングデバイス110)上でのユーザ対話およびアプリケーション使用、または他の情報ソースがあり得る。
【００２８】
本明細書全体を通して使用される「会話」という用語は、初回のセットアップ、インストール、初めての使用などの間に行われることのある対話とは対照的に、コンピューティングデバイスのユーザと、コンピューティングデバイスにおいて実行されるかまたはコンピューティングデバイスからアクセス可能なアシスタントとの間の、通常の対話を指す。換言すれば、会話は、ユーザによるアシスタントの日常的な使用中に、ユーザがアシスタントをセットアップすること以外のタスクを実施しているときに行われる。会話は、本明細書では、ユーザが、アプリケーションをセットアップするかまたはユーザインターフェースのプリセットフィールドを埋めるために情報を提供する一環として、質問に答えることを指すのではない。
【００２９】
動作の際には、アシスタントモジュール122が、コンピューティングデバイス110において実行されるかまたはコンピューティングデバイス110からアクセス可能なアシスタントを提供することができる。アシスタントは、ユーザと会話を開始するかまたはダイアログを始めるように、ユーザに情報を求めるように、またアシスタントがユーザの代わりに実施することのできるアクションを、たとえユーザがそのアクションを認識していなくても提案するように、構成され得る。アシスタントは、ユーザとの既存の会話に関係する価値あるアクションを、ユーザがそれを明示的に求めていなくてもユーザに推奨するように構成され得る。例えば、アシスタントモジュール122Bは、ユーザとのダイアログを始めるかどうかを決定し、始めるダイアログを選択することができる。アシスタントモジュール122Bはアシスタントモジュール122Aに、ダイアログを開始させ、アシスタントモジュール122Aがダイアログに関係するアクションを実施するためのユーザ許可を取得させることができる。
【００３０】
アシスタントモジュール122は、コンピューティングデバイス110のユーザに関連する情報に基づいて、コンピューティングデバイス110のユーザとコンピューティングデバイス110において実行されるアシスタントとの間の対話(例えば会話またはダイアログ)をトリガするためのイベントを決定することができる。アシスタントモジュール122は、コンピューティングデバイス110および/またはコンピューティングデバイス110のユーザに関連する情報を、ユーザがそのような情報の使用または収集に対して肯定的に同意した場合は、解析することだけができる。アシスタントモジュール122はさらに、ユーザが同意を撤回する機会を提供することもでき、その場合、アシスタントモジュール122は、コンピューティングデバイス110またはコンピューティングデバイス110のユーザに関連する情報を収集またはその他の形で保持することを、中止することができる。アシスタントモジュール122は、それらに限定されないが、検索履歴およびオンライン対話、アシスタントとの以前の対話(例えば「お母さんに電話して」、「Kathyに電話して」)、ならびにコンピューティングデバイス110において実行されるかまたはコンピューティングデバイス110からアクセス可能な他のアプリケーションおよびサードパーティエンティティとの対話を含む、ユーザの個人情報(例えばデータストア124)を解析することができる。アシスタントモジュール122Bは、どの「サーフェス(surface)」またはデバイスが、ユーザがそこから任意の所与の時間にアシスタントと対話する可能性がより高いかを認識し、その特定のサーフェスにイベントの通知を送ることができる。
【００３１】
例えば、アシスタントモジュール122がユーザに関連する情報を維持するかまたはそれにアクセスできる承諾をユーザから受けた後、アシスタントモジュール122Bは、コンピューティングデバイス110のユーザの来るべき旅行計画についての情報を含むユーザ情報をデータストア124Bに維持することができる。旅行計画は、現時間からおよそ12時間以内に出発することが当初スケジュール設定されていた特定のフライトの座席をユーザが予約していた、ということを示していてよい。アシスタントモジュール122Bにおいて実行されるエージェントは、旅行計画に関連する更新情報を検索サーバシステム180から取得するように構成され得る。例えば、アシスタントモジュール122Bのエージェントは検索モジュール182に、特定のフライトについてのステータス情報を求めるクエリを送ることができ、それに対して、アシスタントモジュール122Bのエージェントは、特定のフライトがその当初スケジュール設定されていた出発時間から30分遅延している、ということを示す情報を受信することができる。
【００３２】
検索モジュール182は、(例えば検索サーバシステム180に対してローカルまたはリモートに記憶された)多様な情報ソースの中から、検索クエリに関係する情報(例えば気象状況または交通状況、ニュース、株価、スポーツのスコア、ユーザのスケジュール、輸送手段のスケジュール、自律車両予約、小売価格など)の検索(例えばインターネット検索)を行うことができる。検索を実行した後、検索モジュール182は、検索から戻された情報(例えば検索結果、検索結果へのリンクなど)を、デジタルアシスタントサーバ160またはコンピューティングデバイス110に出力することができる。検索モジュール182は、検索モジュール182によって(例えばコンピューティングデバイス110Aに関連するコンテキスト情報に基づいて)生成された検索クエリに関連すると決定された情報の検索を実行してよい。検索モジュール182は、(例えば仮想アシスタントがコンピューティングデバイス110のユーザの代わりに完了しつつあるタスクの一環として)検索モジュール182がデジタルアシスタントサーバ160またはコンピューティングデバイス110Aから受信した検索クエリに基づいて、検索を実行してよい。
【００３３】
アシスタントモジュール122Bは、フライト遅延が、コンピューティングデバイス110のユーザとの対話を開始するためのイベントであるとの決定をすることができる。アシスタントモジュール122Bはアシスタントモジュール122Aに、イベントの通知をトリガするための情報を送ることができる。
【００３４】
アシスタントモジュール122Bからイベントトリガを受信したことに応答して、アシスタントモジュール122Aは、イベントに基づいて、アシスタントモジュール122Aが実施するように構成されている複数のアクションから、イベントに関連するかまたは関係する少なくとも1つのアクションを選択することができる。例として、アシスタントモジュール122Aは、それらに限定されないが、さまざまなアクションの中でもとりわけ、サービス(例えば、自律車両予約を含む輸送手段、家または自動車関係の修理/保守、食品配達、ペットの世話、ペットの散歩、家の世話、子守り、配達、旅行の予約、および他の任意のまたは全てのサービス)のスケジュール設定、通信のやりとり(例えば、カレンダー招待、電子メールメッセージ、テキストベースメッセージ、ソーシャルメディアネットワークメッセージ、電話通話またはビデオ通話、および他の任意のまたは全ての通信)、商品の調達(例えば、オンラインショッピング、花の配達、イベントチケットの購入、および他の任意のまたは全ての調達に関係するアクション)を含む、複数のアクションを実施するように構成されてよい。アシスタントモジュール122Aは、複数のアクションを実施するために、コンピューティングデバイス110Aにおいて実行されるかまたはコンピューティングデバイス110Aによってアクセス可能な他のアプリケーションまたはエージェントを利用してもよい。アシスタントモジュール122Aは、複数のアクションを実施するために、コンピューティングデバイス110Aにおいて実行されるかまたはコンピューティングデバイス110Aからアクセス可能な他のアプリケーションまたはエージェントを利用してもよい。
【００３５】
アシスタントモジュール122Aは、複数のアクションのうちのいずれか1つまたは複数を、イベントに関係するものとして選択することができる。例えば、アシスタントモジュール122Aは、特定のタイプのイベントについてのその能力またはアクションに、その特定のタイプのイベントについて他のコンピューティングデバイスのユーザの代わりに他のアシスタントはどのタイプのアクションを実行するかに関して取得したフィードバックに基づいて、スコア付けすることができる。アシスタントモジュール122Aは、複数のアクションの各々にスコア付けし、より高いスコアを得たアクションのうちの1つまたは複数を、イベントに関係する可能性のあるものとして選択することができる。例えば、データストア124Aに記憶された情報に基づいて、アシスタントモジュール122Aは、フライトの予約に加えて、ユーザがフライトの最終目的地における自律車両などの地上輸送手段も予約していたとの決定をすることができる。アシスタントモジュール122Aは、他のユーザが他のアシスタントとどのように対話しているかに基づいて、地上輸送手段のスケジュール設定またはスケジュール変更をする行為が、アシスタントによって一般に実施される、フライト遅延イベントに関係するアクションであるとの決定をすることができる。
【００３６】
全てのイベントがユーザに通知するだけの価値のあるイベントとは限らないことがある。したがって、現時間におけるイベントの通知を出力する前に、アシスタントモジュール122Aは、イベントの通知を出力するかどうかを決定することができる。アシスタントモジュール122Aは、確実にユーザが通知に価値を見出すようにするために、ある特定のイベントの通知を制限することもでき、あるいはある特定のイベントの通知を具体的なコンテキストに合わせることもできる。一例として、アシスタントモジュール122Aは、イベントの通知を出力するかどうかを、少なくとも一部には、どのくらい最近にユーザとアシスタントとの間で以前の対話が行われたかと、ユーザとアシスタントとの間の以前の対話の頻度との組合せに基づいて、決定することができる。
【００３７】
例えば、ユーザ情報データストア124A内に記憶された情報に基づいて、アシスタントモジュール122Aは、ユーザが、起きているときにアシスタントと平均してしきい値間隔またはしきい値頻度(例えばおよそ毎日1時間に1回)で対話するとの決定をすることができる。アシスタントモジュール122Aは、ユーザとアシスタントとの間の最終の会話が、現時間のしきい値間隔未満前(例えばほんの15分前)に行われたので、あと12時間以上出発するスケジュール設定になっていないフライトに関する半時間のフライト遅延の通知を出力することを差し控えることを決定することができる。いくつかの例では、アシスタントモジュール122Aは、ユーザとアシスタントとの間の最終の会話が、現時間のしきい値間隔以上前(例えば1時間前)に行われたので、あと12時間以上出発するスケジュール設定になっていないフライトに関する半時間のフライト遅延の通知を出力することを決定することができる。
【００３８】
イベントの通知を出力するとの決定に応答して、アシスタントモジュール122Aは、イベントの通知を出力することができる。通知は、イベントの指示、およびイベントに関連する、上で選択された少なくとも1つのアクションを実施するようにとの要求を含むことができる。例えば、アシスタントモジュール122Bはアシスタントモジュール122Aに、ユーザとアシスタントとの間の対話中にUIC212を介して出力するためのイベントの通知を送ることができる。アシスタントモジュール122Aは、通知をユーザインターフェース114の一部として出力し、図1に示す会話のテキストの一部分を含めることができる。アシスタントモジュール122Aは通知に、ユーザの代わりにイベントに関係する1つまたは複数のアクションを実施するようにとの要求の指示を含めさせることができる。例として、イベントの指示は、「Topekaへのあなたの今夜のフライトは、悪天候のためキャンセルされました」という、表示または発話されるテキストに対応してよく、少なくとも1つのアクションを実施するようにとの要求の指示は、「あなたが予約された地上輸送手段のスケジュール変更をしましょうか」という、表示または発話されるテキストに対応してよい。
【００３９】
個人情報また機密情報の意図しない出力を防ごうと、アシスタントモジュール122Aは、通知を実際に出力することなく通知の合図を生じさせることができる。例えば、アシスタントモジュール122Bから通知を受信したことに応答して、アシスタントモジュール122AはUIC112に、アシスタントがユーザのための情報を有している、ということを示すアラートを出力させることができる。アラートは、ユーザインターフェース114内に示された「あなたにお伝えしたいことがあります。あなたはここにいますか」というテキストに対応してよい。UIC112による出力は、有意義な情報が利用可能であるということをユーザに積極的に合図することができる。
【００４０】
いくつかの例では、アシスタントモジュール122は、ユーザがそのような合図を受信しそれに対して同意したとの決定をアシスタントモジュール122がするまで、通知を出力することを差し控えることができる。例として、アシスタントモジュール122Bは、アシスタントモジュール122Aが、(例えばUIC112のマイクロホンが「はい、私はここにいます」を示す発話を確認して)ユーザからの同意の指示を受け取ったとき、UIC112の表示装置をユーザがアクティブにしたという指示を受け取ったとき、かつ/または同意を示すためにユーザがコンピューティングデバイス110Aと他の何らかの方途(例えばデバイスを持ち上げること、ボタンを押すことなど)で対話したということを示すデータを受け取ったときに、ユーザが会話に対して同意したとの決定をすることができる。
【００４１】
いずれにせよ、イベントの通知、および少なくとも1つのアクションを実施するようにとの要求を出力した後、アシスタントモジュール122Aは、ユーザが要求に応答するときにユーザ入力を検出することができる。図1の例では、アシスタントモジュール122Aは、UIC112のカメラまたはマイクロホンを介して、「はい、私の乗車のスケジュール変更をお願いします」というテキストに対応する発話または合図されたユーザ入力を受け取ることができる。発話または合図されたユーザ入力が、要求の肯定に対応するとの決定をしたことに応答して、アシスタントモジュール122Aのエージェントは、フライト遅延に合わせるように地上輸送手段予約のスケジュール変更をすることができる。
【００４２】
いくつかの例では、アクションは、アシスタントモジュール122のいずれかを実行するデバイスとは異なる第3のデバイスに関連してよい。アシスタントモジュール122Aは、情報を第3のデバイスに送って、第3のデバイスにアクションを完了させることによって、アクションを実施または実行することができる。例えば、地上輸送手段サービスが、コンピューティングデバイス110Bにおいて実行されるアプリケーションに関連付けられてよい。アシスタントモジュール122Aは、ネットワーク130を介してアプリケーションに、サービスのスケジュール変更をせよとの要求とともにメッセージを送ることができる。コンピューティングデバイス110Bは、地上輸送手段がスケジュール設定されたことをアプリケーションが確認したことに応答して、地上輸送手段の新たな時間を示す通知を出力することができる。
【００４３】
このようにして、アシスタントモジュール122は、必ずしもユーザを取るに足らない情報であふれさせなくても、またはそのようなアクションもしくは能力に関係する入力を行うようにユーザに要求することなく、ユーザをアシスタントのさらなるアクションまたは能力に積極的に誘導することができる。本例示的アシスタントがユーザを有意義な情報に積極的に誘導するので、ユーザは、特定の問合せを使用してアシスタントを誘導して時間を費やさずに済む。したがって、本開示による例示的アシスタントは、他のアシスタントよりも、迅速にタスクを完了しかつ/または速くユーザに応答することができる。ユーザを有意義な情報に積極的に誘導することによって、本アシスタントはユーザにとって、自然で、それほど煩わしさはなく、より望ましいものに思われる可能性がある。
【００４４】
前述の手法によってもたらされるいくつかの恩恵の中には、次のものがある。(1)ユーザからの特定の問合せに、またはユーザが文書もしくは他の方途を通じてアクションもしくは能力を学習することに時間を費やすことに頼るのではなく、ユーザをアシスタントのアクションまたは能力に積極的に誘導することによって、デバイスが機能を果たすための処理の複雑さおよび時間が低減し得る。例えば音声入力を通じた、アシスタントの能力に関しての情報を求める明示的なユーザ要求が回避され得る。これにより、アシスタントがその上に実装されるコンピュータ装置が、そのような要求を処理するように要求されず、それによって、特に経時的な複数の会話を処理するように要求されず、コンピューティング装置が、アシスタントの実装に関連するコンピュータリソースの大幅な節約の恩恵を受け得る。(2)有意義な情報およびユーザに関連する情報がローカルに記憶され、それにより、私的なデータのために、複雑かつメモリを消費する伝送セキュリティプロトコルがユーザのデバイス上にある必要性が低減し得る。(3)本例示的アシスタントがユーザをアクションまたは能力に誘導するので、より少数の特定の問合せがユーザによって要求され、それによって、ユーザデバイスに対するクエリのリライトおよび他の計算的に複雑なデータ取出しの要求が低減し得る。(4)特定の問合せの数が低減するにつれて、アシスタントモジュールが特定の問合せに応答する必要のあるデータが低減し得るので、ネットワーク使用が低減し得る。例えば、アシスタントがそこから情報を出力することのできるクライアントコンピューティングデバイス110と、クライアントデバイスによって情報がそこから探索され得るリモートサーバ180との間のデータトラフィックが低減し得る。そのような低減がより少数の特定の問合せによって生じることに加えて、またはその代わりに、ネットワークデータトラフィックの低減は、特定のクライアントデバイス110とリモートサーバ180との間の通信チャネルが、特定の会話を容易にするために開放したままになっている必要のある時間量の全体的な低減から起こり得る。アシスタントに情報を求めるようにユーザに要求することなく情報を提供することにより、ユーザとの会話を自動的に促進することによって、ユーザは個別の会話アクションを通じて情報を明示的に探索するように要求されないので、技術的リソースの観点からの会話の全体的な効率が上がり得ることを、当業者なら理解するであろう。さらに、会話の時間期間が低減され得、それにより、通信チャネルが普通ならそうであるはずよりも早期に閉鎖されることが可能になり、それによって、ネットワークリソースが解放され得る。
【００４５】
図2は、本開示の1つまたは複数の態様による、例示的仮想アシスタントを実行するように構成された例示的コンピューティングデバイスを示すブロック図である。図2のコンピューティングデバイス210については下で、図1のコンピューティングデバイス110Aおよび/または110Bの一例として説明する。図2は、コンピューティングデバイス210のただ1つの特定の例を示しており、他の場合にはコンピューティングデバイス210の他の多くの例が使用されてよく、それは例示的コンピューティングデバイス210内に含まれるコンポーネントのサブセットを含んでもよく、図2に示していない追加コンポーネントを含んでもよい。
【００４６】
図2の例に示すように、コンピューティングデバイス210は、ユーザインターフェースコンポーネント(UIC)212、1つまたは複数のプロセッサ240、1つまたは複数の通信ユニット242、1つまたは複数の入力コンポーネント244、1つまたは複数の出力コンポーネント246、および1つまたは複数の記憶コンポーネント248を含む。UIC212は、出力コンポーネント202および入力コンポーネント204を含む。コンピューティングデバイス210の記憶コンポーネント248は、UIモジュール220、アシスタントモジュール222、ユーザ情報データストア224、1つまたは複数のアプリケーションモジュール226、およびコンテキストモジュール230を含む。
【００４７】
通信チャネル250が、コンポーネント212、240、242、244、246、および248の各々をコンポーネント間通信のために(物理的に、通信可能に、かつ/または動作可能に)相互接続することができる。いくつかの例では、通信チャネル250は、システムバス、ネットワーク接続、プロセス間通信データ構造、またはデータを通信するための他の任意の方法を含むことができる。
【００４８】
コンピューティングデバイス210の1つまたは複数の通信ユニット242は外部デバイスと、1つまたは複数の有線ネットワークおよび/またはワイヤレスネットワークを介して、1つまたは複数のネットワーク上でネットワーク信号を送信および/または受信することによって、通信することができる。通信ユニット242の例としては、(例えばイーサネット(登録商標)カードなどの)ネットワークインターフェースカード、光トランシーバ、無線周波トランシーバ、グローバルポジショニングサテライト(GPS)レシーバ、または情報を送りかつ/もしくは受信することのできる他の任意のタイプのデバイスがある。通信ユニット242の他の例としては、短波無線機、セルラーデータ無線機、ワイヤレスネットワーク無線機、ならびにユニバーサルシリアルバス(USB)コントローラがあり得る。
【００４９】
コンピューティングデバイス210の1つまたは複数の入力コンポーネント244は、入力を受け取ることができる。入力の例が、触覚入力、オーディオ入力、およびビデオ入力である。コンピューティングデバイス210の入力コンポーネント244は、一例では、存在感知入力デバイス(例えばタッチセンシティブスクリーン、PSD)、マウス、キーボード、音声応答システム、ビデオカメラ、マイクロホン、または人もしくは機械からの入力を検出するための他の任意のタイプのデバイスを含む。いくつかの例では、入力コンポーネント244としては、1つまたは複数のセンサコンポーネント、1つまたは複数の位置センサ(GPSコンポーネント、Wi-Fiコンポーネント、セルラーコンポーネント)、1つまたは複数の温度センサ、1つまたは複数の移動センサ(例えば加速度計、ジャイロ)、1つまたは複数の圧力センサ(例えば気圧計)、1つまたは複数の周囲光センサ、および1つまたは複数の他のセンサ(例えばマイクロホン、カメラ、赤外線近接センサ、湿度計など)があり得る。他のセンサとしては、他の非限定的な例をいくつか挙げてみると、心拍センサ、磁力計、グルコースセンサ、湿度計センサ、嗅覚センサ、コンパスセンサ、ステップカウンタセンサがあり得る。
【００５０】
コンピューティングデバイス210の1つまたは複数の出力コンポーネント246は、出力を生成することができる。出力の例が、触覚出力、オーディオ出力、およびビデオ出力である。コンピューティングデバイス210の出力コンポーネント246は、一例では、PSD、サウンドカード、ビデオグラフィックスアダプタカード、スピーカ、陰極線管(CRT)モニタ、液晶表示装置(LCD)、または人もしくは機械への出力を生成するための他の任意のタイプのデバイスを含む。
【００５１】
コンピューティングデバイス210のUIC212は、コンピューティングデバイス110のUIC112と同様であってよく、出力コンポーネント202および入力コンポーネント204を含む。出力コンポーネント202は、UIC212によって情報が表示される画面などの表示コンポーネントであってよく、入力コンポーネント204は、表示コンポーネント202のところのかつ/またはその付近のオブジェクトを検出する存在感知入力コンポーネントであってよい。出力コンポーネント202および入力コンポーネント204は、スピーカとマイクロホンのペア、または入力コンポーネント244や出力コンポーネント246など、1つもしくは複数の入力コンポーネントと出力コンポーネントとの他の任意の組合せであってよい。図2の例では、UIC212は、(図1のユーザインターフェース114などの)ユーザインターフェースを提示することができる。
【００５２】
UIC212は、コンピューティングデバイス210の内部コンポーネントとして示されているが、入力および出力を送信および/または受信するためにコンピューティングデバイス210とデータ経路を共有する外部コンポーネントを表してもよい。例として、一例では、UIC212は、コンピューティングデバイス210の外部パッケージング内に位置し、そこに物理的に接続された、コンピューティングデバイス210の組込みコンポーネント(例えばモバイル電話上の画面)を表す。別の例では、UIC212は、コンピューティングデバイス210のパッケージングまたはハウジングの外側に位置し、そこから物理的に隔てられた、コンピューティングデバイス210の外部コンポーネント(例えばコンピューティングデバイス210と有線データ経路および/またはワイヤレスデータ経路を共有するモニタ、プロジェクタなど)を表す。
【００５３】
コンピューティングデバイス210内の1つまたは複数の記憶コンポーネント248は、コンピューティングデバイス210の動作中に処理するための情報を記憶することができる(例えば、コンピューティングデバイス210は、コンピューティングデバイス210における実行中にモジュール220、222、230、および226、ならびにデータストア224によってアクセスされるデータを記憶することができる)。いくつかの例では、記憶コンポーネント248は一時メモリであり、つまり記憶コンポーネント248の主目的は長期的記憶ではない。コンピューティングデバイス210上の記憶コンポーネント248は、情報の短期的記憶用に揮発性メモリとして構成されてよく、したがって、電力がオフにされた場合は、記憶された内容を保持することができない。揮発性メモリの例としては、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、および当技術分野で知られる他の形態の揮発性メモリがある。
【００５４】
記憶コンポーネント248は、いくつかの例では、1つまたは複数のコンピュータ可読記憶媒体も含む。記憶コンポーネント248は、いくつかの例では、1つまたは複数の非一時的コンピュータ可読記憶媒体を含む。記憶コンポーネント248は、揮発性メモリによって一般に記憶されるよりも大量の情報を記憶するように構成されてよい。記憶コンポーネント248はさらに、情報の長期的記憶用に不揮発性メモリ空間として構成されてよく、電力オン/オフサイクル後に情報を保持することができる。不揮発性メモリの例としては、磁気ハードディスク、光ディスク、フロッピーディスク、フラッシュメモリ、または電気的プログラマブルメモリ(EPROM)もしくは電気的消去可能プログラマブル(EEPROM)メモリの形態がある。記憶コンポーネント248は、モジュール220、222、230、および226、ならびにデータストア224に関連するプログラム命令および/または情報(例えばデータ)を記憶することができる。記憶コンポーネント248は、モジュール220、222、230、および226、ならびにデータストア224に関連するデータまたは他の情報を記憶するように構成されたメモリを含むことができる。
【００５５】
1つまたは複数のプロセッサ240は、コンピューティングデバイス210に関連する機能を実装し、かつ/またはコンピューティングデバイス210に関連する命令を実行することができる。プロセッサ240の例としては、アプリケーションプロセッサ、表示コントローラ、補助プロセッサ、1つまたは複数のセンサハブ、およびプロセッサ、処理ユニット、または処理デバイスとして機能するように構成された他の任意のハードウェアがある。モジュール220、222、230、および226は、プロセッサ240によって、コンピューティングデバイス210のさまざまなアクション、動作、または機能を実施するように動作可能であってよい。例えば、コンピューティングデバイス210のプロセッサ240は、記憶コンポーネント248によって記憶された、プロセッサ240にモジュール220、222、230、および226の動作を実施させる命令を、取り出して実行することができる。命令は、プロセッサ240によって実行されると、コンピューティングデバイス210に、記憶コンポーネント248内の例えばデータストア224に情報を記憶させることができる。
【００５６】
UIモジュール220は、図1のUIモジュール120の全ての機能を含むことができ、コンピューティングデバイス210の一部としてのアシスタントを実行するために、UIモジュール120と同様の動作を実施することができる。UIモジュール220は、UIC212、およびコンピューティングデバイス210の他のコンポーネントとのユーザ対話を管理することができる。コンピューティングデバイス210のユーザがUIC212において出力を見るときおよび/または入力を行うときに、UIモジュール220はUIC212に、ユーザインターフェースを出力させることができる。
【００５７】
ユーザ情報データストア224は、図1のユーザ情報データストア124Aの一例である。アシスタントモジュール222は、図1のアシスタントモジュール122の全ての機能を含むことができ、コンピューティングデバイス210の一部としてのアシスタントを実行するため、かつユーザ情報データストア224にユーザ情報を維持し、ユーザ情報データストア224におけるユーザ情報にアクセスするために、アシスタントモジュール122と同様の動作を実施することができる。いくつかの例では、アシスタントモジュール222は、アシスタント機能を提供するために、(例えばプロセッサ240において)ローカルに実行されてよい。いくつかの例では、アシスタントモジュール222は、コンピューティングデバイス210にとってアクセス可能な、リモートアシスタントサービスへのインターフェースとして働くことができる。例えば、アシスタントモジュール222は、図1のデジタルアシスタントサーバ160のアシスタントモジュール122Bへのインターフェースまたはアプリケーションプログラミングインターフェース(API)であってよい。
【００５８】
1つまたは複数のアプリケーションモジュール226は、コンピューティングデバイス210において実行され、かつコンピューティングデバイス210からアクセス可能な、さまざまな個々のアプリケーションおよびサービス全体を表しており、それらは、ユーザに情報を提供するために、かつ/またはタスクもしくはアクションを実施するために、アシスタントによってアクセスされ得る。アプリケーションモジュール226の多数の例が存在してよく、多数の例としては、フィットネスアプリケーション、カレンダーアプリケーション、検索アプリケーション、地図もしくはナビゲーションアプリケーション、旅行アプリケーション(例えば計画、予約、発券など)、ソーシャルメディアアプリケーション、ゲームアプリケーション、電子メールアプリケーション、チャットもしくはメッセージングアプリケーション、インターネットブラウザアプリケーション、またはコンピューティングデバイス210において実行され得る他の任意のアプリケーションがあり得る。アシスタントモジュール222など、コンピューティングデバイス210において実行されるアシスタントは、アプリケーション226に、アシスタントに関連する複数のアクションを実施するための命令を実行させることができる。換言すれば、アシスタントは、アシスタントの代わりにアプリケーションモジュール226を利用して、複数のアクションを実施することができる。
【００５９】
個人情報(例えばデータストア224に記憶された情報)を記憶および使用することに対する明示的な同意をユーザから受け取った後、コンテキストモジュール230が、コンピューティングデバイス210に関連するコンテキスト情報を処理し、解析して、コンピューティングデバイス210のコンテキストまたはコンピューティングデバイス210のユーザのコンテキストを定めることができる。コンテキストモジュール230は、解析されているかつ/または記憶されている情報を、その個人情報を記憶または使用する前にユーザの実際の識別情報を取り除くように、暗号化するかまたはその他の形で取り扱うことができる。例えば、情報は、コンテキストモジュール230によって、リモートコンピューティングデバイス(例えばデジタルアシスタントサーバ160)に処理のために記憶されるかまたは送られるときに、個人を特定できるどんな情報も取り除かれるように取り扱われてよい。コンテキストモジュール230は、コンピューティングデバイス210および/またはコンピューティングデバイス210のユーザに関連する情報を、ユーザがそのような情報の使用または収集に対して肯定的に同意した場合は、解析することだけができる。コンテキストモジュール230はさらに、ユーザが同意を撤回する機会を提供することもでき、その場合、コンテキストモジュール230は、コンピューティングデバイス210またはコンピューティングデバイス210のユーザに関連する情報を収集またはその他の形で保持することを、中止することができる。
【００６０】
コンピューティングデバイス210のコンテキストは、コンピューティングデバイス210および/またはコンピューティングデバイス210のユーザに関連する1つまたは複数の特徴、ならびにさまざまな位置および時間におけるユーザの物理的環境および/または仮想環境を特定することができる。例えば、コンテキストモジュール230は、コンピューティングデバイス210のコンテキストの一部として、特定の時間におけるコンピューティングデバイス210に関連する物理的位置を、その特定の時間からのコンピューティングデバイス210に関連するコンテキスト情報に基づいて、決定することができる。(例えば経時的な移動を示すセンサ情報に基づいて)コンテキスト情報が変化するとき、コンテキストモジュール230は、コンピューティングデバイス210の決定されたコンテキストにおける物理的位置を更新することができる。
【００６１】
特定の位置および/または時間についてのコンピューティングデバイスのコンテキストを定める情報タイプは、非常に数が多く、列挙することができない。いくつかの例として、コンピューティングデバイスのコンテキストは、さまざまな位置および時間における、音響指紋、ビデオ指紋、位置、移動軌跡、方向、速度、施設名称、所在地住所(street address)、場所のタイプ、建物、気象状況、および交通状況を特定することができる。コンピューティングデバイスのコンテキストとしてはさらに、さまざまな位置および時間に関連する会合またはイベントを定めるカレンダー情報、さまざまな位置および時間において視聴されたウェブページアドレス、さまざまな位置および時間において視聴されたウェブページのデータフィールド内に行われたテキスト入力(例えば検索履歴または閲覧履歴)、ならびにさまざまな位置および時間に関連する他のアプリケーション使用データがあり得る。コンピューティングデバイスのコンテキストとしてはさらに、さまざまな位置および時間においてコンピューティングデバイスによってアクセスされたかまたはコンピューティングデバイスの存在下で放送されているオーディオストリームおよび/またはビデオストリーム、さまざまな位置および時間においてコンピューティングデバイスによってアクセスされたかまたはコンピューティングデバイスの存在下で放送されているテレビジョン放送またはケーブル/衛星放送についての情報、ならびにさまざまな位置および時間においてコンピューティングデバイスによってアクセスされた他のサービスについての情報があり得る。
【００６２】
コンテキストモジュール230は、コンピューティングデバイス210のコンテキストをアシスタントモジュール222と共有することができ、アシスタントモジュール222はそのコンテキストから、イベントの通知を出力するかどうかを決定することができる。コンテキストモジュール230は、アシスタントモジュール222からの、コンピューティングデバイス210に関連する現在のコンテキストまたは現在の状態を求める要求に、ユーザの現在の状態またはコンテキストを特定するデータをアシスタントモジュール222に出力することによって、応答することができる。
【００６３】
動作の際には、アシスタントモジュール222は、コンピューティングデバイスのユーザに関連する情報に基づいて、ユーザとアシスタントとの間の対話を開始するためのイベントを決定することができる。例えば、アシスタントモジュール222は、データストア224などのデータソースを監視して、ユーザに通知するだけの価値のあるイベントを示す可能性のある、情報への変化を検出することができる。データソースの例としては、メッセージアカウント、カレンダー、ソーシャルメディアアカウント、および他の情報ソースがある。イベントの例としては、アポイントメントの追加、キャンセルまたは変更(例えば招待、会合、記念日など)、出来事(例えば発送通知、フライト遅延)、告知(例えばツアー日程など)、および他のタイプのイベントがある。
【００６４】
データストア224は、私的または公的なカレンダーへの参照を含むことができる。アシスタントモジュール222は、カレンダー上のアポイントメントが追加、削除、修正、達成されたか、またはカレンダー上のアポイントメントを達成し損なったときに、カレンダーに関係するイベントを検出することができる。例えば、アシスタントモジュール222は、私的なカレンダーに基づいて、歯医者がカレンダー上のアポイントメントをキャンセルするキャンセル通知を送ったとの決定をしたことに応答して、イベントを決定することができる。アシスタントモジュール222は、公的なカレンダーに基づいて、休日、誕生日、または記念日が近づいているとの決定をしたことに応答して、イベントを決定することができる。
【００６５】
データストア224は、電子メールメッセージまたはテキストメッセージ、メッセージとして送られた音声、ビデオメッセージなどへの参照を含むことができる。アシスタントモジュール222は、そのような通信内に含まれる情報に基づいて、イベントを決定することができる。例えば、アシスタントモジュール222は、サービスプロバイダ(例えば航空会社、ケーブルプロバイダなど)からの電子メールに基づいて、スケジュール設定されていたアポイントメントがキャンセルされたかまたは遅延したとの決定をしたことに応答して、イベントを決定することができる。または、アシスタントモジュール222は、小売業者からの電子メールに基づいて、小荷物が発送されたとの決定をしたことに応答して、イベントを決定することができる。
【００６６】
アシスタントモジュール222は、イベントに基づいて、複数のアクションから、イベントに関連する少なくとも1つのアクションを選択することができる。例えば、アシスタントモジュール222のモデルは、入力としてイベントまたはイベントタイプを受け取り、そのイベントに関連する1つまたは複数のアクションを出力することができる。モデルは、機械学習タイプのモデル(例えばニューラルネットワーク)、ルールベースのモデル、またはアクションをイベントにマッチングさせる他のタイプのモデルであってよい。
【００６７】
モデルは、アクションがイベントとどれだけ近い関係にあるかを示す、かつ/またはイベントに対してアクションが実施され得る、可能性の程度(例えばスコア、確率など)を割り当てることができる。例えば、モデルは、さまざまなイベントに関するユーザ活動の観察結果、およびイベントに応答してユーザがコンピューティングデバイスに実施させるアクションに対してトレーニングされてよい。ユーザからの明示的な同意を得て、モデルは、特定のイベントまたはイベントタイプについて、ユーザはどんなアクションをとりたいと望んでいるか、またいつそのようなアクションがとられるべきか、ということを示すルールを作り出すために、ユーザデバイス対話を解析することができる。
【００６８】
例えば、モデルは、ユーザがフライト遅延通知を受け取ったうちの90パーセントの割合でユーザが親しい連絡先にメッセージを送る、ということを示すユーザ対話データに対して、トレーニングされてよい。モデルはさらに、ユーザがデバイスにメッセージを送らせたうちの80パーセントの割合でメッセージが配偶者または大切な人(significant other)に送られる、ということを示すユーザ対話データに対して、トレーニングされてよい。したがって、モデルは、フライト遅延通知が出力されるときはいつでも、推奨するだけの価値のあるアクションは、配偶者または大切な人にメッセージを送るアクションであり得る、ということを示すルールを生み出すことができる。
【００６９】
別の例として、モデルは、他のデバイスのユーザの大多数が、ファンタジースポーツのスコアを、現在進行中の試合についてのスコア更新情報を受信した後にチェックする、ということを示すユーザ対話データに対して、トレーニングされてよい。モデルはさらに、80パーセントの割合でユーザがデバイスに、人気のあるファンタジースポーツアプリケーションを、ユーザがファンタジースコアをチェックする主要な方途として開かせる、ということを示すユーザ対話データに対して、トレーニングされてよい。したがって、モデルは、スポーツのスコア通知が出力され、かつ人気のあるファンタジースポーツアプリケーションがコンピューティングデバイス上にインストールされているときはいつでも、推奨するだけの価値のあるアクションは、スコアを提示した後にファンタジースポーツアプリケーションを起動するアクションであり得る、ということを示すルールを生み出すことができる。
【００７０】
場合によっては、モデルは、依存関係グラフに基づいてよい。例えば、モデルの依存関係グラフは、ルートノードを含むことができ、これはフライトであってよい。ルートノードから依存関係があるのは、輸送手段ノード、宿泊ノード、会合ノード、食事ノードなどであってよい。ルートノードとこれらのノードの各々との間のエッジは、到着時間、利用可能な予約などのような依存関係とすることができる。エッジがトラバースできない場合、モデルは、提案すべきアクションをトリガすることができる。いくつかの例では、提案されるアクションはそれら自体が、依存関係グラフの、さまざまな依存関係(例えば遅れの程度、非代替性など)および重みをもつノードであってよく、可能な最高の重み付けのされた経路が、ユーザに提案され得る(また、適切な場合には、代替のより低く重み付けのされたアクションも提案され得る)。モデルのグラフは、最初にテンプレートとして提示されてよく、それに対してユーザデータが追加され得、またモデルのグラフは、システムによって(例えば機械学習、ユーザからの手入力などを使用して)修正され得る。モデルの他の多くの例が存在する。
【００７１】
いずれにせよ、アシスタントモジュール222はそのようなルールを生成し、ルールへの入力は、イベントまたはイベントタイプであってよく、各ルールの出力は、利用可能な各アクションが特定のイベントに関連付けられる可能性の程度を示すことができる。アシスタントモジュール222は、それが実施することのできる複数のアクションを、各アクションに割り当てられた可能性の程度に基づいてランク付けして、最もランクの高い1つまたは複数のアクションを決定することができる。換言すれば、アシスタントモジュール222は、イベントに基づいて複数のアクションの各々をランク付けし、最もランクの高い少なくとも1つのアクションを選択することができる。
【００７２】
いくつかの例では、全てのアクションの可能性の程度がしきい値を満足させない場合、アシスタントモジュール222は、イベントに関係するアクションがないとの決定をすることができる。例えば、アシスタントモジュール222によって実施され得る複数のアクションのいずれも、50パーセントよりも大きな、特定のイベントに関連付けられる可能性の程度を有さない場合、アシスタントモジュール222は、特定のイベントの通知中に提案するだけの価値のあるアクションがないとの決定をすることができる。
【００７３】
いくつかの例では、単一のアクションの可能性の程度がしきい値を満足させる場合、アシスタントモジュール222は、イベントに関係する単一のアクションがあるとの決定をすることができる。例えば、アシスタントモジュール222によって実施され得る複数のアクションのうちの1つだけが、90パーセントよりも大きな、特定のイベントに関連付けられる可能性の程度を有する場合、アシスタントモジュール222は、特定のイベントの通知中に提案するだけの価値のある単一のアクションがあるとの決定をすることができる。
【００７４】
いくつかの例では、2つ以上のアクションの可能性の程度がしきい値を満足させる場合、アシスタントモジュール222は、イベントに関係する複数のアクションがあるとの決定をすることができる。例えば、アシスタントモジュール222によって実施され得る複数のアクションのうちの2つ以上がそれぞれ、95パーセントよりも大きな、特定のイベントに関連付けられる可能性の程度を有する場合、アシスタントモジュール222は、特定のイベントの通知中に提案するだけの価値のある複数のアクションがあるとの決定をすることができる。
【００７５】
いくつかの例では、アシスタントモジュール222によって使用される、イベントに基づいて、複数のアクションから、イベントに関連する少なくとも1つのアクションを選択するためのモデルは、テーブルまたはグラフベースのものであってよい。例えば、アシスタントモジュール222は、テーブルまたはグラフにおけるイベントまたはイベントタイプを調べ、そのイベントに紐付けられたどんな1つまたは複数のアクションがそのテーブルまたはグラフ内に含まれているかを決定することができる。
【００７６】
一部のアシスタントは、音声のみのインターフェースを提供してもよく、アシスタントにわずかな文書が付属していてもよく、アシスタントができることをユーザに教示する方途においてその他の形で限定されていてもよい。アシスタントのアクションまたは能力を発見することは、一部のユーザにとって困難な場合がある。アシスタントモジュール222は、アクションまたは能力がユーザにとって役に立つかまたはその他の形で有益となり得るときにユーザにその能力について教示するように構成され得る。アシスタントモジュール222は、提案されるアクションを含むイベントの通知を出力するかどうかを、通知が関心のあるものになる可能性を高めるだけでなく、アシスタントによって提案される推奨されたアクションがユーザによって許可される可能性が高いものとするために、決定することができる。このようにして、アシスタントモジュール222は、ユーザが提案を断り得る可能性の低い、真に有用なアクションを提案することができる。たとえユーザがアクションを許可しなくても、アシスタントモジュール222はユーザに新たなアクションを教示し続けることであろう。
【００７７】
例えば、アシスタントモジュール222は、イベントの通知を出力するかどうかを、少なくとも一部には、イベントに関連するアクションを実施するようにとの要求をユーザが受け付ける可能性の程度に基づいて、決定することができる。アシスタントモジュール222は可能性の程度を、ユーザのコンテキスト、コンピューティングデバイス210のコンテキスト、ユーザ情報データストア224に記憶された情報、またはそれらの組合せ、およびアシスタントモジュール222にとってアクセス可能な他の任意の情報に基づいて、決定することができる。
【００７８】
例えば、アシスタントモジュール222は、イベントの通知を出力するかどうかを、少なくとも一部には、どのくらい最近にユーザとアシスタントとの間で以前の対話が行われたかに基づいて、決定することができる。以前の対話が、しきい値時間期間(例えば5分)内に行われた場合、アシスタントモジュール222は、アクションを実施するようにとの要求をユーザが受け付ける可能性の程度が低いとの決定をすることができ、その代わりに、アシスタントモジュール222が要求を取り下げる可能性がより高くなり得る。以前の対話がしきい値時間期間外で行われた場合、アシスタントモジュール222は、アクションを実施するようにとの要求をユーザが受け付ける可能性の程度が高いとの決定をすることができ、したがって、アシスタントモジュール222が要求を受け付ける可能性がより高くなり得る。
【００７９】
アシスタントモジュール222は、イベントの通知を出力するかどうかを、少なくとも一部にはコンピューティングデバイス210のコンテキストに基づいて、決定することができる。例として、ユーザがコンピューティングデバイス210と(例えばUIC212を見てかつ/またはUIC212に入力を行って)対話している、ということをコンテキストが示す場合、アシスタントモジュール222は、アクションを実施するようにとの要求をユーザが受け付ける可能性の程度が高いとの決定をすることができ、したがって、アシスタントモジュール222が要求を受け付ける可能性がより高くなり得る。ユーザがコンピューティングデバイス210と対話していない(例えばコンピューティングデバイス210が、移動中の車両のワイヤレス通信ユニットに結合されている、コンピューティングデバイス210がテーブル上に寝かされているかまたはユーザのポケット内にある、コンピューティングデバイス210が映画館内に位置するなど)、ということをコンテキストが示す場合、アシスタントモジュール222は、アクションを実施するようにとの要求をユーザが受け付ける可能性の程度が低いとの決定をすることができ、したがって、アシスタントモジュール222が要求を伴う通知を出力しない可能性がより高くなり得る。
【００８０】
いくつかの例では、アシスタントモジュール222は、イベントに重大度を割り当て、重大度に基づいて、アクションを実施するようにとの要求をユーザが受け付ける可能性の程度を上下させることができる。例えば、イベントが、フライトがしきい値時間量(例えば1時間、半時間など)未満遅延したことである場合、アシスタントモジュール222は、イベントの重大度が低いとの決定に基づいて、そのようなイベントが重大なイベントではないとの決定をすることができる。しかし、フライトがしきい値時間量(例えば1時間、半時間など)以上遅延した場合、アシスタントモジュール222は、イベントの重大度が中位または高位であるとの決定に基づいて、そのようなイベントが重大なイベントであるとの決定をすることができる。
【００８１】
いくつかの例では、しきい値時間量は、実際のイベントに基づいてよい。例えば、しきい値時間量は、合計フライト時間(すなわちフライト自体の持続時間)のパーセンテージであってよい。フライトが1時間遅延したがフライトが10時間である場合、アシスタントモジュール222は、低位または中位の重大度を割り当てることができる。一方、フライトが半時間遅延し、かつフライトが1時間しかない場合、アシスタントモジュール222は、(例えば家への到着遅れを友人または配偶者に通知する)提案されるアクションを含む通知が、現時間において出力される可能性がより高くなるように、イベントに高位の重大度を割り当てることができる。
【００８２】
イベントの通知を出力するとの決定に応答して、アシスタントモジュール222は、ユーザとアシスタントとの間の対話中にUIC212を介してイベントの通知を出力することができる。通知は、イベントの指示、およびイベントに関連する少なくとも1つのアクションを実施するようにとの要求を含むことができる。
【００８３】
例えば、アシスタントモジュール222が、(例えばユーザにプッシュされた電子メールまたは通知によって)カレンダー上の歯医者のアポイントメントがキャンセルされたとの決定をした場合、アシスタントモジュール222は、キャンセルの通知を出力することを決定することができる。出力は、スケジュール変更のために歯医者に電話せよとの要求を含む音声通知であってよい。アシスタントモジュール222は、ユーザがアシスタントに歯医者に電話してもらいたいと望んでいることを示すユーザ入力を、UIC212において受け取ったことに応答して、アプリケーションモジュール226から電話アプリケーションを起動して、ユーザの代わりに歯科医院にダイヤルすることができる。
【００８４】
別の例として、アシスタントモジュール222が、フライトが5時間遅延したとの決定をした場合、アシスタントモジュール222は、キャンセルの通知を出力することを決定することができる。出力は、目的地において予約していた自律車両などの地上輸送手段のキャンセルまたはスケジュール変更をせよとの要求を含む音声通知であってよい。アシスタントモジュール222は、ユーザがアシスタントに地上輸送手段のキャンセルまたはスケジュール変更をしてもらいたいと望んでいることを示すユーザ入力を、UIC212において受け取ったことに応答して、地上輸送手段サービスに予約のキャンセルまたはスケジュール変更をするメッセージを送ることができる。
【００８５】
フライトが5時間遅延した別の例として、アシスタントモジュール222は、キャンセルの通知を出力することを決定することができる。出力は、ユーザの妻に電話をかけよ、テキストメッセージを送れ、電子メールを送れ、またはその他の形で連絡せよとの要求を含む音声通知であってよい。アシスタントモジュール222は、ユーザがアシスタントにユーザの妻に連絡してもらいたいと望んでいることを示すユーザ入力を、UIC212において受け取ったことに応答して、ユーザの妻の連絡先情報を決定し、妻に遅延を知らせるメッセージを送ることができる。
【００８６】
別の例として、アシスタントモジュール222が、バレンタインデーが1週間未満であるとの決定をした場合、アシスタントモジュール222は、イベントの通知を出力することを決定することができる。出力は、ユーザのガールフレンドのために花を注文せよとの要求を含む音声通知であってよい。アシスタントモジュール222は、ユーザがアシスタントに花を注文してもらいたいと望んでいることを示すユーザ入力を、UIC212において受け取ったことに応答して、ユーザのガールフレンドの連絡先情報を決定し、ガールフレンドの住所への花の配達をオンライン注文することができる。
【００８７】
このようにして、アシスタントモジュール222は、コンピューティングデバイス210のユーザが既存の特徴からより多くの恩恵または使用を引き出すことができるように、アシスタントモジュール222が実施することのできる特徴、能力、またはアクションの発見可能性を高めることができる。アシスタントモジュール222は、アクションを、文法的にはユーザの母国語で教示する。いくつかの例では、通知を用いて複数のアクションが提案され、または単一のアクションが提案される。アシスタントモジュール222は、ユーザがアシスタントにアクションをとってほしいと希望しているとの確認を受け取ったことに応答して、アクションを実施することができ、かつ/またはユーザを、アクションがそこから実施され得るアプリケーションモジュール226のうちの1つなどのコンパニオンアプリケーションに誘導することができる。
【００８８】
図3は、本開示の1つまたは複数の態様による、例示的仮想アシスタントを実行する1つまたは複数のプロセッサによって実施される例示的動作を示すフローチャートである。図3については下で、図1のコンピューティングデバイス110の文脈において説明する。例えば、アシスタントモジュール122Aは、コンピューティングデバイス110Aの1つまたは複数のプロセッサにおいて実行されているときに、本開示の1つまたは複数の態様による動作300〜308を実施することができる。
【００８９】
動作の際には、コンピューティングデバイス110Aは、個人情報を使用および記憶することに対するユーザからの同意を受け取ることができる(300)。例として、潜在的個人情報を特定したことに応答して、アシスタントモジュール122AはUIモジュール120に、アシスタントモジュール122Aおよびユーザとの対話中に取得された個人情報を記憶および使用することに対するユーザからの承諾を要求させることができる。コンピューティングデバイス110Aは、アシスタントモジュール122Aが個人情報を使用または記憶したいときに毎回、それに先立ってユーザに同意するように要求しなくてよい、ということを理解されたい。例えば、コンピューティングデバイス110Aが、1年に1回、1日に1回、または(例えば初回の製品購入、セットアップなどの後に)ただ1度きりであっても、同意を受け取る場合、コンピューティングデバイス110Aはその事前の同意を、個人情報を将来的に使用および記憶することに対する同意として取り扱うことができる。ユーザがどのように同意し得るかの一例として、ユーザは、UIC112によって検出される「そうだね、私についての情報を記憶して構わないよ」という音声入力を行うことができ、この音声入力に応答して、アシスタントモジュール122Aは、ユーザについての個人記録をデータストア124Aに維持し始めることができる。
【００９０】
コンピューティングデバイス110Aは、少なくとも一部には個人情報に基づいて、対話を開始するためのイベントを決定することができる(302)。例えば、アシスタントモジュール122Aは、デジタルアシスタントサーバ160から、コンピューティングデバイス110Aのユーザとアシスタントとの間の対話を開始するためのイベントを示す通知(例えばデータ)を受け取ることができる。通知は、友人からユーザのメッセージアカウントによって受け取られたメッセージを含んでよい。メッセージは、ユーザにハッピーアワー(happy hour)に行きたいかかどうかを尋ねる質問を含んでよい。
【００９１】
コンピューティングデバイス110Aは、イベントに基づいて、イベントに関連する少なくとも1つのアクションを選択することができる(304)。例えば、アシスタントモジュール122Aのモデルは、ハッピーアワーが到着遅れタイプのイベントであり、したがって、メッセージを家に送って、家族に到着遅れを知らせることは、ハッピーアワーに関連するアクションである、との決定をすることができる。加えて、アシスタントモジュール122Aのモデルは、ユーザが仕事後に通常見ているニュースの生放送を録画することが、ハッピーアワーに関連するアクションであるとの決定をすることができる。
【００９２】
コンピューティングデバイス110Aは、少なくとも1つのアクションに基づいて、イベントの通知を出力するかどうかを決定することができる(306)。例えば、アシスタントモジュール122Aは、イベントの通知を生成することを、ユーザがアシスタントに少なくとも1つのアクションを実施してもらいたいと望んでいる可能性が最も高いとアシスタントモジュール122Aが考えるコンピューティングデバイス110Aのコンテキスト(例えば時間)まで、差し控えることができる。アシスタントモジュール122Aは、コンピューティングデバイス110Aについてのコンテキスト情報に基づいて、ユーザが今まさに始まろうとしている会合のために会議室内に位置しているとの決定をすることができる。アシスタントモジュール122Aは、ハッピーアワーイベントが低位の重大度のイベントであるとの、かつユーザがアシスタントにアクションを今実施してもらいたいと望んでいる可能性は低いので、イベントの通知を出力するのではなく、アシスタントモジュール122Aが後の時間まで通知を出力することを差し控えるべきであるとの決定をすることができる(308、NO)。
【００９３】
後の時間、例えば会合後に、アシスタントモジュール122Aは、コンピューティングデバイス110Aについてのコンテキスト情報に基づいて、ユーザが自身の事務所内に位置しているとの決定をすることができる。アシスタントモジュール122Aは、ハッピーアワーイベントが低位の重大度であるにも関わらず、ユーザが自身の事務所内にひとりでいる間にアシスタントにアクションを今実施してもらいたいと望む可能性がより高いとの決定をすることができる。したがって、アシスタントモジュール122Aは、現時間がイベントの通知を生成するのに好都合の時間であるとの決定をすることができる(308、YES)。
【００９４】
コンピューティングデバイス110Aは、通知を出力することができる(310)。例えば、アシスタントモジュール122Aは、ユーザが自身の事務所内にいてコンピューティングデバイス110B(例えばラップトップ)と対話しているとの決定をすることができる。コンピューティングデバイス110Aは、メッセージを家に送って、家族に到着遅れを知らせることと、ユーザが仕事後に通常見ているニュースの生放送を録画することのどちらの推奨も含む、ハッピーアワーの通知を送ることができる。コンピューティングデバイス110Bは、ハッピーアワーへの招待を、アシスタントにメッセージを家に送らせ、かつ/またはホームデジタルビデオレコーダ上にニュースを録画させるかどうかをユーザが選択するための選択可能なボタンとともにユーザに注意喚起する、通知のグラフィカル指示を表示することができる。
【００９５】
通知を出力した(310)後、コンピューティングデバイス110Aはコンピューティングデバイス110Bから、イベント通知を用いて提案されたアクションの一方または両方をアシスタントモジュール122Aが実施することに対して、ユーザが同意した(312)ことを示すデータを受信することができる。例えば、コンピューティングデバイス110Bは、ユーザから受け取った、ユーザがアシスタントにメッセージを家に送ってもらいたい、かつ/またはニュースを録画してもらいたいと望んでいることを示す音声コマンドの指示を、共有することができる。
【００９６】
ユーザ入力を受け取ったことに応答して、アシスタントモジュール122Aは、ユーザによって同意されたアクションを実施することができる(314)。例えば、アシスタントモジュール122Aは、少なくとも1つのプロセッサにおいて実行される、アクションを実施するように構成されたアプリケーションを起動することができ、このアプリケーションは、アシスタントとは異なる。例えば、メッセージを家に送るには、アシスタントモジュール122Aがデータをメッセージングアプリケーションに送り、そのメッセージングアプリケーションがユーザのメッセージングアカウントを介してユーザの家族にメッセージを送ることができる。
【００９７】
いくつかの例では、アシスタントモジュール122Aがアクションを実施することができる。例えば、デジタルビデオレコーダを制御するには、アシスタントモジュール122Aがデータを、デジタルビデオレコーダを制御するように構成された遠隔制御アプリケーションのAPIに送ることができる。アシスタントモジュール122Aは、APIに入力を送ることによって、ニュース放送を録画するようにレコーダを直接構成することができる。
【００９８】
図4は、本開示の1つまたは複数の態様による、例示的仮想アシスタントを実行するように構成された例示的コンピューティングシステムを示すブロック図である。図4のデジタルアシスタントサーバ460については下で、図1のデジタルアシスタントサーバ160の一例として説明する。図4は、デジタルアシスタントサーバ460のただ1つの特定の例を示しており、他の場合にはデジタルアシスタントサーバ460の他の多くの例が使用されてよく、それは例示的デジタルアシスタントサーバ460内に含まれるコンポーネントのサブセットを含んでもよく、図4に示していない追加コンポーネントを含んでもよい。
【００９９】
図4の例に示すように、デジタルアシスタントサーバ460は、1つまたは複数のプロセッサ440、1つまたは複数の通信ユニット442、および1つまたは複数の記憶デバイス448を含む。記憶デバイス448は、アシスタントモジュール422、ユーザ情報データストア424、および検索モジュール482を含む。
【０１００】
プロセッサ440は、図2のコンピューティングシステム210のプロセッサ240に類似している。通信ユニット442は、図2のコンピューティングシステム210の通信ユニット242に類似している。記憶デバイス448は、図2のコンピューティングシステム210の記憶デバイス248に類似している。通信チャネル450は、図2のコンピューティングシステム210の通信チャネル250に類似しており、したがって、コンポーネント440、442、および448の各々をコンポーネント間通信のために相互接続することができる。いくつかの例では、通信チャネル450は、システムバス、ネットワーク接続、プロセス間通信データ構造、またはデータを通信するための他の任意の方法を含むことができる。
【０１０１】
デジタルアシスタントサーバ460の検索モジュール482は、検索サーバシステム180の検索モジュール182に類似しており、デジタルアシスタントサーバ460のための統合化された検索機能を実施することができる。すなわち、検索モジュール482は、アシスタントモジュール422のための検索動作を実施することができる。いくつかの例では、検索モジュール482は、検索システム180などの外部検索システムとインターフェースして、アシスタントモジュール422のための検索動作を実施することができる。起動されると、検索モジュール482は、検索クエリを生成することや、生成された検索クエリに基づいてさまざまなローカルおよびリモートの情報ソースにわたって検索を実行することなどの検索機能を実施することができる。検索モジュール482は、実行された検索の結果を、起動元のコンポーネントまたはモジュールに提供することができる。すなわち、検索モジュール482は、検索結果をアシスタントモジュール422に出力することができる。
【０１０２】
ユーザ情報データストア424は、図2のユーザ情報データストア224に類似しており、ユーザとアシスタントモジュール422によって提供されるアシスタントとの間の会話中にコンピューティングデバイスのユーザについてアシスタントモジュール422が学習した、ユーザによって関連付けられる情報を記憶するように構成される。アシスタントモジュール422は、データストア424に記憶された情報を利用して、イベントを決定し、このイベントに関係する、アシスタントモジュール422によって送られる通知内に含めるためのアクションを選択することができる。
【０１０３】
アシスタントモジュール422は、図1のアシスタントモジュール122および図2のコンピューティングデバイス210のアシスタントモジュール222の一部または全ての機能を含むことができる。アシスタントモジュール422は、ネットワーク130などのネットワークを介してアクセス可能なアシスタントサービスを提供するための、アシスタントモジュール122および222と同様の動作を実施することができる。すなわち、アシスタントモジュール422は、ネットワーク経由でデジタルアシスタントサーバ460と通信しているコンピューティングデバイスにとってアクセス可能な、リモートアシスタントサービスへのインターフェースとして働くことができる。例えば、アシスタントモジュール422は、図1のデジタルアシスタントサーバ160のアシスタントモジュール122BへのインターフェースまたはAPIであってよい。
【０１０４】
動作の際には、アシスタントモジュール422は、ユーザ情報データストア424に収容されている情報、ならびに検索モジュール482から受け取った情報が、ユーザに通知するだけの価値のあるイベントであるかどうかを解析することができる。アシスタントモジュール422は、イベントを検出し、イベントに対して推奨するアクションを選択すると、どのくらい頻繁にアシスタントモジュール422がユーザのために対話を始めていたか、およびその対話の成功の可能性を含む、さまざまな要因の組合せに基づいて、イベントの通知をトリガすることを選ぶことができる。
【０１０５】
アシスタントモジュール422は、ユーザの注意を引く可能性のより高い「サーフェスに応じた形の(surface-appropriate way)」通知を生成することができる。例えば、ユーザがホームアシスタントデバイスに関連しており、そのホームアシスタントと最近対話した場合、アシスタントモジュール422はそのホームアシスタントに、イベントに基づく音声通知を生成させることができる。音声通知は、ホームアシスタントデバイスの言語で生成されてよい。例えば、音声通知がホームデバイスに送られ、それによりホームデバイスが、「こんにちは、Viki。あなたのフライトが3時間遅延しています。リムジンバスの予約をキャンセルしたほうがよいですか」のような、(コンピュータにより生成される音声としての)オーディオを生成してよい。ユーザがモバイル電話に関連しており、モバイル電話を介してアシスタントと対話している場合、アシスタントモジュール422はモバイル電話に通知を送り、それが画面上に、リムジンバスの予約をキャンセルするための「キャンセルボタン」とともにグラフィカルに表示されてよい。場合によっては、例えば高価値のイベントまたは高位の重大度をもつイベントの場合には、アシスタントモジュール422は、アクションを伴う通知を複数のサーフェスに同時に送ることができる。
【０１０６】
条項1。コンピューティングデバイスのユーザに関連する情報に基づいて、ユーザとコンピューティングデバイスにおいて実行されるアシスタントとの間の対話を開始するためのイベントを決定することであって、アシスタントが、複数のアクションを実施するように構成される、決定することと、イベントに基づいて、複数のアクションから、イベントに関連する少なくとも1つのアクションを選択することと、少なくとも1つのアクションに基づいて、イベントの通知を出力するかどうかを決定することであって、通知が、イベントの指示、およびイベントに関連する少なくとも1つのアクションを実施するようにとの要求を含む、決定することと、イベントの通知を出力するとの決定に応答して、アシスタントに、ユーザとアシスタントとの間の対話中に出力するためのイベントの通知を送ることとを含む、方法。
【０１０７】
条項2。イベントに基づいて、複数のアクションの各々をスコア付けすることと、しきい値を満足させるそれぞれのスコアをもつ少なくとも1つのアクションを選択することとをさらに含む、条項1に記載の方法。
【０１０８】
条項3。イベントの通知を出力するかどうかを決定することが、イベントの通知を出力するかどうかを、少なくとも一部には、どのくらい最近にユーザとアシスタントとの間で以前の対話が行われたかに基づいて、決定することを含む、条項1または2に記載の方法。
【０１０９】
条項4。イベントの通知を出力するかどうかを決定することが、イベントに関連する少なくとも1つのアクションを実施するようにとの要求をユーザが受け付ける可能性の程度を決定することと、イベントの通知を出力するかどうかを、少なくとも一部には、イベントに関連する少なくとも1つのアクションを実施するようにとの要求をユーザが受け付ける可能性の程度に基づいて、決定することとを含む、条項1〜3のいずれか一項に記載の方法。
【０１１０】
条項5。イベントの重大度を決定することと、さらにイベントの重大度に基づいて、イベントの通知を出力するかどうかを決定することとをさらに含む、条項4に記載の方法。
【０１１１】
条項6。イベントの通知を出力するかどうかを決定することが、イベントの通知を出力するかどうかを、少なくとも一部には、どのくらい最近にユーザとアシスタントとの間で以前の対話が行われたかと、ユーザとアシスタントとの間の以前の対話の頻度との組合せに基づいて、決定することを含む、条項1〜5のいずれか一項に記載の方法。
【０１１２】
条項7。イベントに関連する少なくとも1つのアクションが、少なくとも1つのアクションを実施するように構成されたアプリケーションに関連付けられ、アプリケーションがアシスタントとは異なる、条項1〜6のいずれか一項に記載の方法。
【０１１３】
条項8。少なくとも1つのアクションが単一のアクションである、条項1〜7のいずれか一項に記載の方法。
【０１１４】
条項9。少なくとも1つのアクションが複数のアクションを含む、条項1〜8のいずれか一項に記載の方法。
【０１１５】
条項10。コンピューティングデバイスであって、出力デバイスと、少なくとも1つのプロセッサと、命令を備える少なくとも1つのメモリとを備え、命令は、実行されると、コンピューティングデバイスのユーザに関連する情報に基づいて、ユーザとアシスタントとの間の対話を開始するためのイベントを決定することであって、アシスタントが、複数のアクションを実施するように構成される、決定することと、イベントに基づいて、複数のアクションから、イベントに関連する少なくとも1つのアクションを選択することと、少なくとも1つのアクションに基づいて、イベントの通知を出力するかどうかを決定することであって、通知が、イベントの指示、およびイベントに関連する少なくとも1つのアクションを実施するようにとの要求を含む、決定することと、イベントの通知を出力するとの決定に応答して、ユーザとアシスタントとの間の対話中に出力デバイスを介してイベントの通知を出力することとを行うように構成されたアシスタントを、少なくとも1つのプロセッサに実行させる、コンピューティングデバイス。
【０１１６】
条項11。入力デバイスをさらに備え、アシスタントが、入力デバイスを介して、少なくとも1つのアクションを実施するようにとアシスタントに指令するユーザ入力を受け取ることと、ユーザ入力を受け取ったことに応答して、少なくとも1つのアクションを実施することとを行うようにさらに構成される、条項10に記載のコンピューティングデバイス。
【０１１７】
条項12。アシスタントが、少なくとも1つのプロセッサにおいて実行される、少なくとも1つのアクションを実施するように構成されたアプリケーションを起動することによって、少なくとも1つのアクションを実施するようにさらに構成され、アプリケーションがアシスタントとは異なる、条項10または11に記載のコンピューティングデバイス。
【０１１８】
条項13。少なくとも1つのアクションが複数のアクションを含む、条項10〜12のいずれか一項に記載のコンピューティングデバイス。
【０１１９】
条項14。入力デバイスをさらに備え、アシスタントが、入力デバイスを介して、複数のアクションからの特定のアクションを実施するようにとアシスタントに指令するユーザ入力を受け取ることと、ユーザ入力を受け取ったことに応答して、特定のアクションを実施することとを行うようにさらに構成される、条項13に記載のコンピューティングデバイス。
【０１２０】
条項15。アシスタントが、ユーザとアシスタントとの間の対話を開始するためのイベントを決定するように構成されたリモートコンピューティングシステムから、イベントを受け取るようにさらに構成される、条項10〜14のいずれか一項に記載のコンピューティングデバイス。
【０１２１】
条項16。出力デバイスがオーディオを出力するように構成され、通知が音声通知である、条項10〜15のいずれか一項に記載のコンピューティングデバイス。
【０１２２】
条項17。命令を備えるコンピュータ可読記憶媒体であって、命令は実行されると、コンピューティングデバイスのユーザに関連する情報に基づいて、ユーザとコンピューティングデバイスにおいて実行されるアシスタントとの間の対話を開始するためのイベントを決定することであって、アシスタントが、複数のアクションを実施するように構成される、決定することと、イベントに基づいて、複数のアクションから、イベントに関連する少なくとも1つのアクションを選択することと、少なくとも1つのアクションに基づいて、イベントの通知を出力するかどうかを決定することであって、通知が、イベントの指示、およびイベントに関連する少なくとも1つのアクションを実施するようにとの要求を含む、決定することと、イベントの通知を出力するとの決定に応答して、アシスタントに、ユーザとアシスタントとの間の対話中に出力するためのイベントの通知を送ることとをデジタルアシスタントシステムの少なくとも1つのプロセッサに行わせる、コンピュータ可読記憶媒体。
【０１２３】
条項18。命令が、少なくとも1つのプロセッサによって実行されると、デジタルアシスタントシステムに、イベントの通知を出力するかどうかを決定することを、少なくとも、イベントの通知を出力するかどうかを、少なくとも一部には、どのくらい最近にユーザとアシスタントとの間で以前の対話が行われたかに基づいて、決定することによって行わせる、条項17に記載のコンピュータ可読記憶媒体。
【０１２４】
条項19。命令が、少なくとも1つのプロセッサによって実行されると、デジタルアシスタントシステムに、イベントの通知を出力するかどうかを決定することを、少なくとも、イベントに関連する少なくとも1つのアクションを実施するようにとの要求をユーザが受け付ける可能性の程度を決定することと、イベントの通知を出力するかどうかを、少なくとも一部には、イベントに関連する少なくとも1つのアクションを実施するようにとの要求をユーザが受け付ける可能性の程度に基づいて、決定することとによって行わせる、条項17または18に記載のコンピュータ可読記憶媒体。
【０１２５】
条項20。少なくとも1つのアクションが、コンピューティングデバイスおよびデジタルアシスタントシステムとは異なる第3のデバイスに関連付けられる、条項17〜19のいずれか一項に記載のコンピュータ可読記憶媒体。
【０１２６】
条項21。少なくとも1つのプロセッサと、実行されると、少なくとも1つのプロセッサに、条項1〜9のいずれか一項に記載の方法を実施させる命令を備える、少なくとも1つのメモリとを備える、コンピューティングデバイス。
【０１２７】
条項22。実行されると、コンピューティングデバイスの少なくとも1つのプロセッサに、条項1〜9のいずれか一項に記載の方法を実施させる命令を備える、コンピュータ可読記憶媒体。
【０１２８】
条項23。条項1〜9のいずれか一項に記載の方法を実施するための手段を備える、システム。
【０１２９】
1つまたは複数の例では、説明した機能が、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せの形で実装されてよい。ソフトウェアの形で実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるかまたはコンピュータ可読媒体経由で送信されて、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、または例えばある通信プロトコルによるある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含んでよい。このようにして、コンピュータ可読媒体は一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号や搬送波などの通信媒体に対応してよい。データ記憶媒体は、本開示において説明した技法の実装のための命令、コード、および/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、どんな利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ可読媒体を含んでよい。
【０１３０】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、フラッシュメモリ、または命令もしくはデータ構造の形態をとる所望のプログラムコードを記憶するのに使用することができ、かつコンピュータによってアクセスされ得る、他の任意の記憶媒体を備えることができる。また、どんな接続も厳密にはコンピュータ可読媒体と呼ばれる。例えば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含むのではなく、その代わりに、非一時的な有形の記憶媒体を対象とすることを理解されたい。ディスク(disk)およびディスク(disc)は、本明細書では、コンパクトディスク(compact disc)(CD)、レーザディスク(laser disc)、光ディスク(optical disc)、デジタル多用途ディスク(digital versatile disc)(DVD)、フロッピーディスク(floppy disk)、およびブルーレイディスク(Blu-ray(登録商標) disc)を含み、ただし、ディスク(disk)は通常、データを磁気的に再生し、一方ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記のものの組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１３１】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価な集積されたもしくはディスクリートの論理回路など、1つまたは複数のプロセッサによって実行されてよい。したがって、「プロセッサ」という用語は、本明細書では、前述の構造または本明細書において説明した技法の実装に適した他の任意の構造のいずれかを指してよい。加えて、いくつかの態様では、本明細書において説明した機能は、専用のハードウェアモジュールおよび/またはソフトウェアモジュール内に設けられてよい。また、それらの技法は、1つまたは複数の回路または論理素子の形で完全に実装することもできる。
【０１３２】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICセット(例えばチップセット)を含む、多種多様なデバイスまたは装置の形で実装されてよい。さまざまなコンポーネント、モジュール、またはユニットについては、本開示の中で、開示した技法を実施するように構成されたデバイスの機能の態様を強調するように説明されているが、それらは異なるハードウェアユニットによる実現を必ずしも必要とするとは限らない。そうではなく、上で説明したように、さまざまなユニットは、ハードウェアユニットの形で組み合わされてもよく、上で説明した1つまたは複数のプロセッサを含む相互動作可能なハードウェアユニットと、それに併せて適切なソフトウェアおよび/またはファームウェアとの集合によって、実現されてもよい。
【０１３３】
以上、さまざまな実施形態について説明してきた。これらの実施形態および他の実施形態が、添付の特許請求の範囲に記載の範囲に含まれる。
【符号の説明】
【０１３４】
100  システム
110  クライアントコンピューティングデバイス、クライアントデバイス
110A  コンピューティングデバイス
110B  コンピューティングデバイス
112  ユーザインターフェースコンポーネント(UIC)
114  ユーザインターフェース
120  ユーザインターフェース(UI)モジュール
122  アシスタントモジュール
122A  アシスタントモジュール
122B  アシスタントモジュール
124  ユーザ情報データストア
124A  ユーザ情報データストア
124B  ユーザ情報データストア
130  ネットワーク
160  デジタルアシスタントサーバ、サーバシステム
180  検索サーバシステム、リモートサーバ、検索システム
182  検索モジュール
202  出力コンポーネント、表示コンポーネント
204  入力コンポーネント
210  コンピューティングデバイス、コンピューティングシステム
212  ユーザインターフェースコンポーネント(UIC)
220  UIモジュール
222  アシスタントモジュール
224  ユーザ情報データストア
226  アプリケーションモジュール、アプリケーション
230  コンテキストモジュール
240  プロセッサ、コンポーネント
242  通信ユニット、コンポーネント
244  入力コンポーネント
246  出力コンポーネント
248  記憶コンポーネント、記憶デバイス
250  通信チャネル
422  アシスタントモジュール
424  ユーザ情報データストア
440  プロセッサ、コンポーネント
442  通信ユニット、コンポーネント
448  記憶デバイス、コンポーネント
450  通信チャネル
460  デジタルアシスタントサーバ
482  検索モジュール
【図１】
0006911151.tif 000002
【図２】
0006911151.tif 000003
【図３】
0006911151.tif 000004
【図４】
0006911151.tif 000005