本明細書で説明したように、様々な自動化されたアシスタントルーチンが、ユーザの発話もしくはタイプされたユーザインターフェース入力内のショートカットコマンドを検出することに応答して開始され得、クライアントデバイスにおける仮想もしくはハードウェア要素とのユーザ対話に応答して開始され得、ユーザジェスチャを検出することに応答して開始され得、および/または、他の短縮されたユーザインターフェース入力に応答して開始され得る。自動化されたアシスタントルーチンを開始するための短縮されたユーザインターフェース入力は、それらが、短縮されたユーザ入力なければ自動化されたアシスタントルーチンのアクションの実行を引き起こすために必要とされるよりも少ないユーザ入力および/またはユーザ入力のより少ない処理を必要とすることになろうという点で短縮されている。例えば、一連のアクションの自動化されたルーチンの実行を引き起こすショートカットコマンドは、自動化されたアシスタントにアクションのセットを実行させるために、凝縮されたコマンドがなければ発話/タイプされる必要があるコマンドよりも短いという点で短縮され得る。様々な自動化されたアシスタントルーチンは、加えてまたは代替的に、1つまたは複数の条件の発生時に自動的に、オプションでは明示的なユーザインターフェース入力を必要とすることなく開始され得る。自動化されたアシスタントルーチンのそのような自動開始は、そうでなければ自動化されたアシスタントルーチンのアクションの実行を引き起こすために必要とされるよりも少ないユーザ入力および/またはユーザ入力のより少ない処理を必要とする可能性もある。
自動化されたアシスタントルーチンの存在にもかかわらず、ユーザのいかなる自動化されたアシスタントルーチンにも組み込まれておらず、代わりにユーザが自動化されたアシスタントとの長引く対話を通じておよび/または他のコンピュータアプリケーションとの長引く対話を通じて実行する様々な自動化されたアシスタントアクションが、依然として存在する。そのような長引く対話の各発生は、かなりのコンピュータリソースおよび/またはネットワークリソースを消費する可能性がある。例えば、自動化されたアシスタントを介してキッチンのネットワーク化されたライトをオンにするために、ユーザは、「キッチンのライトをオンにして」または同様の発話をクライアントデバイスの自動化されたアシスタントインターフェースに話すことを要求され得る。発話に対応するオーディオデータは、クライアントデバイスからリモートシステムに送信され得る。リモートシステムは、発話のための適切なコマンドを決定するためにオーディオデータを処理(例えば、音声からテキストへの処理、テキストの自然言語処理など)することができ、キッチンのライトをオンにさせるためのコマンドをエージェントに送信することができ、キッチンのライトがオンにされたことの確認をエージェントから受信することができ、ライトがオンにされたことの通知をクライアントデバイスにレンダリングさせるためにクライアントデバイスにデータを送信することができる。
これらおよび他の考慮事項に照らして、本明細書で開示した実装形態は、ユーザの既存の自動化されたアシスタントルーチン内に含めるための自動化されたアシスタントアクションを推奨することに関し、既存の自動化されたアシスタントルーチンは、1つまたは複数の前から存在する自動化されたアシスタントアクションを含む。ユーザが、肯定的なユーザインターフェース入力を介して推奨を確認した場合、自動化されたアシスタントアクションは、既存の自動化されたアシスタントルーチンに自動的に追加され得る。その後、自動化されたアシスタントルーチンが初期化された場合、推奨に応答して受信された肯定的なユーザインターフェース入力に応答してルーチンに自動的に追加された自動化されたアシスタントアクションと同様に、ルーチンの前から存在する自動化されたアシスタントアクションは、実行される。
これは、アクションを実行させるために、ユーザがさらなる資源集約的な長引く対話を代わりに実行する必要性を除去する。むしろ、アクションは、それが追加された自動化されたアシスタントルーチンの複数のアクションのうちの1つとして実行される。これは、例えば、アクションの実行を引き起こすためにユーザによって提供される(例えば、ユーザによって自動化されたアシスタントインターフェースに提供される)必要がある入力の量を減らすことによって、改善された人間とコンピュータとの対話をもたらすことができる。人間とコンピュータとの対話を改善することに加えて、これは、例えば、そうではなくアクションを実行させるためにさらなるユーザインターフェース入力を提供することをユーザに要求することに比べて、様々なコンピュータ効率および/またはネットワーク効率を直接もたらすことができる。さらに、上記および本明細書の別の箇所で説明したように、自動化されたアシスタントルーチンの初期化は、効率的に処理され得るおよび/またはユーザインターフェース入力の処理を必要としない状態の発生時に自動的であり得る短縮されたユーザインターフェース入力に応答することができる。さらに、既存のルーチン内に含めるための自動化されたアシスタントアクションを推奨すること、ならびに、ワンタッチおよび/または単一の発話(例えば、「はい、追加して」)の肯定的入力に応答してアクションをルーチンに自動的に追加することは、既存のルーチンの効率的な補足を提供する。例えば、単純化されたユーザインターフェース入力に応答してアクションを自動的に追加することは、変更されるべきルーチンを手動で選択すること、ルーチンに追加するためのアクションを指定すること、アクションがルーチンに追加されるべきであることを確認することなどをユーザに要求する長引く対話など、アクションを手動で追加するために長引く対話に従事することをユーザに要求するよりも、計算的に効率的である可能性がある。
本明細書で開示する実装形態は、ユーザの1つまたは複数の自動化されたアシスタントルーチン内に含めることを潜在的に推奨するための自動化されたアシスタントアクションを決定することができる。さらに、自動化されたアシスタントアクションは、ユーザに関連して記憶されている複数の自動化されたアシスタントルーチンの各々と比較され得、比較に基づいて(例えば、1つまたは複数の基準が満たされた場合)、自動化されたアシスタントルーチンのサブセット(例えば、1つ)が、選択され得る。グラフィカルおよび/または聴覚型ユーザインターフェース出力は、ユーザのクライアントデバイスを介してレンダリングされ得、ユーザインターフェース出力は、サブセットの選択されたルーチンにアクションを追加するようにユーザに促す。肯定的なユーザインターフェース入力が、ユーザインターフェース出力に応答して受信された場合、自動化されたアシスタントアクションは、肯定的なユーザインターフェース入力によって示される選択されたルーチンのうちの1つに自動的に(例えば、さらなるユーザインターフェース入力が必要とされることなく)追加され得る。その後、選択されたルーチンのうちの1つが、開始された場合、ルーチンの前から存在する自動化されたアシスタントアクションの自動的な実行が、選択されたアクションのうちの追加された1つの自動的な実行と同様に、初期化され得る。
様々な技法が、ユーザの1つまたは複数の自動化されたアシスタントルーチン内に含めることを潜在的に推奨するための自動化されたアシスタントアクションを決定するために利用され得る。いくつかの実装形態では、自動化されたアシスタントアクションを決定することは、ユーザによって提供されたユーザインターフェース入力の1つまたは複数のインスタンスを介して、自動化されたアシスタントアクションがユーザによって開始されることに基づく。例えば、「スマートサーモスタットを72度に調整する」自動化されたアシスタントアクションは、自動化されたアシスタントに提供された口頭および/または他のユーザインターフェース入力を介して自動化されたアシスタントアクションを開始するユーザの1つまたは複数の以前のインスタンスに基づいて決定され得る。いくつかの実装形態では、自動化されたアシスタントアクションを決定することは、異なるが関連する自動化されたアシスタントアクションが、ユーザによって提供されたユーザインターフェース入力の1つまたは複数のインスタンスを介してユーザによって開始されることに基づく。例えば、実行されるたびにグリルに関連する異なるヒントをレンダリングさせる「グリルのヒント」自動化されたアシスタントアクションは、グリルに関連するユーザインターフェース入力の1つまたは複数の過去のインスタンス(例えば、「どれくらい長くグリルにおいて鶏肉を料理するか」)をユーザが提供することに基づいて決定され得る。いくつかの実装形態では、自動化されたアシスタントアクションを決定することは、自動化されたアシスタントアクションが、ユーザの1つまたは複数の自動化されていないアシスタント対話に関連していることを決定することに基づく。例えば、「スマートサーモスタットを72度に調整する」自動化されたアシスタントアクションは、スマートサーモスタットを手動で(例えば、スマートサーモスタットとの直接対話を通じて)調整するか、またはスマートサーモスタットの制御専用の自動化されていないアシスタントアプリケーションを介してスマートサーモスタットを調整するユーザの1つまたは複数の発生を検出することに基づいて決定され得る。検出することは、例えば、自動化されたアシスタントに送信され、スマートサーモスタットが72度に調整されたことを示す状態変化指標に基づくことができる。状態変化指標は、スマートサーモスタットを制御するエージェントによって自動化されたアシスタントに送信され得、自動化されたアシスタントからの状態要求に応答してプッシュまたは提供され得る。いくつかの実装形態では、自動化されたアシスタントアクションを決定することは、ユーザが、自動化されたアシスタントアクションおよび/または関連するアクションを実行したことを必ずしも決定することなく、アクションが、人間と自動化されたアシスタントとの対話を改善し得ることを決定することに基づく。
アクションをルーチンと比較することに基づいて、自動化されたアシスタントアクションを追加することを推奨する、ユーザの自動化されたアシスタントルーチンのサブセットを選択することは、正しいルーチン(ある場合には)がアクションに対して推奨される尤度を高めることができ、それによって、無視または却下される推奨を提供するリスクを軽減する。さらに、ユーザのルーチン全体の代わりに、自動化されたアシスタントルーチンのサブセットをレンダリングすることは、レンダリングにおいて利用されるリソースを節約して使うことができる。いくつかの実装形態では、自動化されたアシスタントルーチンのサブセットは、ルーチンの過去の発生の時間的属性を、自動化されたアシスタントアクションの(または、自動化されたアシスタントアクションに関連するアクションの)過去の発生の時間的属性と比較することに基づいて選択される。例えば、ユーザに関する自動化されたアシスタントアクションの過去の発生が、平日の朝にのみ発生した場合、平日の朝に頻繁に開始されるユーザのルーチンは、平日の夜に頻繁に開始されるユーザのルーチン、または週末の朝に頻繁に開始されるユーザのルーチンよりも、サブセットに選択される可能性が高くなり得る。
いくつかの実装形態では、自動化されたアシスタントルーチンのサブセットは、追加的または代替的には、ルーチンにおいて利用されるデバイスのデバイストポロジ属性を、自動化されたアシスタントアクションにおいて利用されるデバイスのデバイストポロジ属性と比較することに基づいて選択される。例えば、自動化されたアシスタントアクションが、「場所=居間」という割り当てられたデバイストポロジ属性を有するテレビの制御に関連している場合、「場所=居間」という割り当てられたデバイストポロジ属性を有する他のデバイス(例えば、居間のライト、居間のスピーカなど)を制御するアクションを含むルーチンは、「場所=居間」というデバイストポロジ属性を有するデバイスを制御するいかなるアクションもないルーチンよりも、サブセットに選択される可能性が高くなり得る。別の例として、自動化されたアシスタントアクションが、「表示可能」の割り当てられたデバイストポロジ属性を有するデバイスを介するコンテンツの表示を必要とする場合、「表示可能」デバイストポロジ属性を有するデバイスを有するエリア内に位置するデバイスを制御するアクションを含むルーチンは、「表示可能」デバイストポロジ属性を有するデバイスを有するエリア内のデバイスを制御するいかなるアクションもないルーチンよりも、サブセットに選択される可能性が高くなり得る。
いくつかの実装形態では、自動化されたアシスタントルーチンのサブセットは、追加的または代替的には、自動化されたアシスタントアクションとの矛盾を含む任意のルーチンをサブセットから除外することに基づいて選択される。例えば、「スマートサーモスタットを72度に調整する」自動化されたアシスタントアクションについて、所与のルーチンは、競合する「スマートサーモスタットを75度に調整する」アクションを有することに基づいて除外され得る。また、例えば、夕方にのみ利用可能なサービスを実行するためにエージェントとインターフェースする自動化されたアシスタントアクションについて、所与のルーチンは、それが夕方ではなく朝に自動的に発生することに基づいて除外され得る。
いくつかの実装形態では、自動化されたアシスタントルーチンに追加するための複数の競合するアクションが、考慮され得、競合するアクションのサブセット(例えば、その1つ)のみが、ルーチンに追加するために、ユーザインターフェース出力を介して、実際に推奨するために選択され得る。それらの実装形態のうちのいくつかでは、複数の競合するアクションの各々が、ルーチンと比較され得、選択されたアクションは、ルーチンに最も密接に従う、ルーチンとのいかなる競合もない、および/または他の基準を満たす、複数の競合するアクションのうちの1つであり得る。いくつかの追加または代替の実装形態では、複数の競合するアクションは、第1のエージェントによって実行される第1のアクションと、第2のエージェントによって実行される第2のアクションとを含むことができる。例えば、第1のアクションは、音楽をストリーミングする第1のエージェントによってジャズ音楽をレンダリングさせることであり得、第2のアクションは、音楽をストリーミングする第2のエージェントによってジャズ音楽をレンダリングさせることであり得る。それらの実装形態のうちのいくつかでは、第1のエージェントおよび第2のエージェントのうちの1つが、第1のエージェントおよび第2のエージェントに関連付けられた1つまたは複数の尺度に基づいて選択され得る。そのような尺度は、例えば、ユーザによる第1のエージェントおよび/もしくは第2のエージェントの使用頻度、ユーザの集団による第1のエージェントおよび/もしくは第2のエージェントの使用頻度、(ユーザおよび/またはユーザの集団による)第1のエージェントおよび/もしくは第2のエージェントに割り当てられた評価、ならびに/またはアクションを実行するためのそれぞれのエージェントの能力および/もしくは欲求を示す第1のエージェントおよび/もしくは第2のエージェントによっておよび/もしくはその代わりに提供されたデータを含むことができる。
いくつかの実装形態では、少なくとも1つの選択された自動化されたアシスタントルーチンに自動化されたアシスタントアクションを追加するようにユーザに促すユーザインターフェース出力が、選択されたルーチンの実行の終了時、または自動化されたアシスタントアクションの実行の終了時に提供され得る。例えば、「おはよう」ルーチンを実行した後、自動化されたアシスタントは、「ところで、アクションXは、このルーチンに追加するのがよいようですが、私にそれを追加してほしいですか」のグラフィカルおよび/または可聴プロンプトを提供することができ、肯定的な入力が、応答において受信された場合、「アクションX」は、「おはよう」ルーチンに追加され得る。例えば、ユーザのユーザインターフェース入力(例えば、「アシスタント、アクションXを実行して」の口頭入力)に応答して「アクションX」を実行した後、自動化されたアシスタントは、「ところで、これは、あなたのおはようルーチンに追加するのがよいようですが、私にそれを追加してほしいですか」のグラフィカルおよび/または可聴プロンプトを提供することができる。肯定的な入力が、応答において受信された場合、「アクションX」は、「おはよう」ルーチンに追加され得る。これらおよび他の方法において、提示されたユーザインターフェース出力は、人間と自動化されたアシスタントとの対話を促進し、肯定的な入力が応答において受信された場合、ルーチンの前から存在するアクションと、ルーチンに追加されたアクションの両方を実行するために将来必要になるユーザ入力の量を低減する。例えば、「アクションX」は、接続されたデバイスを制御していることができ、提示されたユーザインターフェース入力は、ユーザが応答において肯定的な入力を提供することを可能にし、結果として、対応するルーチンのさらなる開始に応答して、接続されたデバイスの制御を自動的に生じさせることによって、人間と自動化されたアシスタントとの対話を促進することができる。
いくつかの実装形態では、自動化されたアシスタントアクションをルーチンに追加する際に、ルーチンの前から存在するアクションの中に、自動化されたアシスタントアクションの実行の位置が、決定され得る。それらの実装形態のいくつかの変形例では、位置は、自動化されたアシスタントアクションによって必要とされるユーザインターフェース出力(もしあれば)の持続時間と、ルーチンの前から存在するアクションによって必要とされるユーザインターフェース出力(もしあれば)の持続時間とに基づいて決定され得る。例えば、自動化されたアシスタントアクションが、スマートデバイスを制御しており、ユーザインターフェース出力を必要としない(または、非常に短い「デバイス制御」出力を必要とする)場合、それは、より永続的なユーザインターフェース出力がレンダリングされることを必要とする1つまたは複数のアクションの前に実行されるように配置され得る。いくつかの追加または代替の変形例では、実行の位置は、最後であり得、オプションでは時間的遅延を伴って発生することができる。時間的遅延は、例えば、ルーチンの過去の実行に対する(ユーザの過去の入力に応答した)自動化されたアシスタントアクションの過去の実行の時間的遅延に基づくことができる。例えば、自動化されたアシスタントアクションが、スマートコーヒーメーカーの抽出サイクルを開始しており、「おはよう」ルーチンに追加されたと仮定する。自動化されたアシスタントアクションが、(「おはよう」ルーチンに追加する前に)「アシスタント、私のコーヒーを淹れて」の発話に応答して、おはようルーチンの終了後に3回以前に実行されたとさらに仮定する。3つの発話が、おはようルーチンの終了の2分後、3分後、および4分後に発生した場合、自動化されたアシスタントアクションは、3分(3つの遅延の平均)の時間的遅延などの時間的遅延を伴っておはようルーチンに追加され得る。
上記で参照したように、いくつかの自動化されたアシスタントルーチンは、ユーザの口頭のまたはタイプされた自然言語入力におけるショートカットフレーズまたはコマンドを検出したことに応答して初期化され得る。ショートカットコマンドは、オプションでは特定の順序で、自動化されたアシスタントにアクションのセットを実行させるための短縮されたコマンドを提供する。アクションのセットのためのより長いコマンドの代わりにアクションのセットの実行を引き起こさせるショートカットコマンドを提供することは、より少ないユーザ入力が提供される(ならびに送信および/または処理される)ことを可能にし、それによって、計算リソースおよびネットワークリソースを節約して使うことができる。加えて、既存のショートカットコマンドに応答して実行されるルーチンの追加アクションとして自動化されたアシスタントアクションを自動的に追加することは、その後、ルーチンの追加のアクションおよび前から存在するアクションがショートカットコマンドに応答して実行されることを可能にする。したがって、ショートカットコマンドは、その後、追加のアクションのためのコマンドとショートカットコマンドの両方を話す代わりに、ユーザによって話されるかまたはタイプされ得る。自動化されたアシスタントルーチンのための短縮されたコマンドの一例として、ユーザが朝起きたときに、ユーザは、キッチンアシスタントデバイス(すなわち、キッチンに配置されたクライアントコンピューティングデバイス)に発話を提供することによって「おはよう」ルーチンをトリガすることができる。発話は、例えば、「おはよう」ルーチンを初期化するためにアシスタントデバイスおよび/または(アシスタントデバイスと通信している)リモートアシスタントデバイスによって処理され得る「おはよう」であり得る。例えば、アシスタントデバイスおよび/またはリモートデバイスは、発話をテキストに変換するために発話に対応するオーディオデータを処理することができ、さらに、「おはよう」というテキストが、ユーザのために、「おはよう」の発話に応答して実行される自動化されたアシスタントアクションのセットに割り当てられていることを決定することができる。本明細書で説明した実装形態に従って「おはよう」ルーチンに新しいアクションを追加することは、ユーザのために、新しいアクションを「おはよう」というテキストにさらに割り当てる。
様々な自動化されたアシスタントルーチンは、話されるかまたはタイプされたショートカットコマンドに応答して初期化され得るが、いくつかの実装形態では、自動化されたアシスタントルーチンは、追加的または代替的に、ユーザが、クライアントデバイスもしくは周辺デバイスにおいて仮想もしくはハードウェア要素を押下すること、クライアントデバイスのセンサを介して検出されるジェスチャを実行すること、クライアントデバイスにおいて他の触覚入力を提供すること、および/または任意の他のタイプのコンピュータ可読ユーザインターフェース入力を提供することに応答して初期化され得る。例えば、グラフィカルユーザインターフェース(GUI)は、選択可能なアイコンとともにクライアントデバイスにおいて提示され得、そこで、選択可能なアイコンは、自動化されたアシスタントルーチンを初期化するための提案をユーザに提供する。ユーザが選択可能なアイコン(例えば、「おはよう」と書いてあるGUIボタン)を選択した場合、自動化されたアシスタントは、それに応じて対応する自動化されたアシスタントルーチンを初期化することができる。加えてまたは代替的に、自動化されたアシスタントルーチンは、例えば、自動化されたアシスタントが、ユーザの存在を検出したこと(例えば、音声認証および/または顔認識を使用して特定のユーザを検出すること)、ユーザの場所を検出したこと(例えば、家、車内、居間、および/または追加の場所などの場所において音声認証および/または顔認識を使用して特定のユーザを検出すること)、アラーム(例えば、関連する電話または他のデバイスにおいて設定されている目覚ましアラーム)が解除されていることを検出したこと、アプリケーションの起動を検出したこと、および/または自動化されたアシスタントによって(例えば、1つまたは複数のクライアントデバイスからの信号に基づいて)認識され得る他のユーザアクションを検出したことに応答して、自動的に初期化され得る。例えば、「おはよう」ルーチンは、「朝」(すなわち、特定の時間、時間範囲の間、および/またはルーチンに関連する追加の時間)において、顔認識を使用して、ユーザが、キッチンにおいて検出された場合、初期化され得る。
例示的な「おはよう」ルーチンは、ユーザのスケジュールをレンダリングさせること、特定の器具をオンにさせること、およびポッドキャストをレンダリングさせることなどのアクションを含むことができる。再び、自動化されたアシスタントがショートカットコマンドに応答することを可能にすることによって、ユーザは、自動化されたアシスタントに対応するアクションを実行させるために、必ずしも一連のコマンドを提供する必要はない(例えば、ユーザは、「アシスタント、私のスケジュールを読んで、私の器具をオンにして、私のポッドキャストを再生して」という発話を暗唱する必要はない)。代わりに、自動化されたアシスタントは、ショートカットコマンドに応答することができ、ショートカットコマンドは、自動化されたアシスタントがショートカットコマンドに対応するアクションを識別するために処理することができる。いくつかの実装形態では、ルーチンは、パーソナライズされ得、それによって、自動化されたアシスタントによってアクションの特定のセットをあるユーザのために実行させるためのルーチンの実行を引き起こす特定のショートカットコマンドまたは他の入力を可能にし、一方、同じ入力は、自動化されたアシスタントによってアクションの異なるセットを異なるユーザのために実行させる。例えば、特定のユーザは、ショートカットコマンドに応答してアクションの第1のセットを実行するように、自動化されたアシスタントを具体的に構成してもよく、特定のユーザの配偶者は、同じショートカットコマンドに応答してアクションの第2のセットを実行するように、自動化されたアシスタントを構成することができる。自動化されたアシスタントは、1つもしくは複数のセンサ入力、ならびに/または音声署名、顔認識、画像フィード、動作特性、および/もしくは他のデータなどの1つもしくは複数の決定された特性を使用して、ショートカットコマンドを提供するユーザを区別することができる。さらに、本明細書で説明したように、自動化されたアシスタントは、所与のユーザに推奨されるべき自動化されたアシスタントアクションを決定する際、ユーザに固有の自動化されたアシスタントルーチンを決定する際、およびユーザのルーチンに自動化されたアシスタントアクションを追加するように促すユーザインターフェース出力をいつ提供するかを決定する(例えば、ユーザに特定化されたユーザインターフェース出力は、ユーザが自動化されたアシスタントと対話していると決定された場合にのみ提供され得る)際に、ユーザを区別することができる。
ユーザが、「おはよう」などのショートカットコマンドをキッチンアシスタントデバイスなどのアシスタントデバイスに提供した場合、ルーチンの1つまたは複数のアクションに対応するコンテンツは、キッチンアシスタントデバイスに向けられている発話の結果として、キッチンアシスタントデバイスによって最初にレンダリングされ得る。例えば、コンテンツは、他のデバイスがショートカットコマンドを認識していても、最初にキッチンアシスタントデバイスにおいて排他的に(すなわち、いかなる他のクライアントデバイスにおいても同時にレンダリングされることなく)レンダリングされ得る。例えば、複数のデバイスは、それらのそれぞれの自動化されたアシスタントインターフェースにおいて受信されているショートカットコマンドを認識することができるが、最も音が大きいおよび/または最も歪が少ないショートカットコマンドを受信したデバイスは、自動化されたアシスタントルーチンが初期化されるデバイスとして指定され得る。
ユーザが、オフィスアシスタントデバイスを用いてオフィス内でアクションを実行した場合、自動化されたアシスタントは、アクションを「おはよう」ルーチンに追加することを依然として提案することができる。例えば、ユーザが、キッチン内でユーザの「おはよう」ルーチンを完了した後にユーザのオフィスに移動し、次いで、オフィスアシスタントデバイスにニュースの見出しに関する発話を行った場合、自動化されたアシスタントは、キッチンアシスタントデバイスを介してキッチン内で実行される「おはよう」ルーチンに、ニュースの見出しをレンダリングするアクションを追加することを提案することができる。いくつかの実装形態では、オフィスアシスタントデバイスは、アクションが、「おはよう」ルーチンとは異なるデバイスにおいて実行された場合であっても、オフィスにおいて実行されたアクション(すなわち、ニュースの見出しをレンダリングすること)を「おはよう」ルーチンに追加することを提案することができる。いくつかの実装形態では、ユーザが、オフィスアシスタントにニュースの見出しを要求した後、ユーザが、オフィスにいる間、オフィスデバイスは、ニュースの見出しをレンダリングするアクションを「おはよう」ルーチンに追加することを提案するために利用され得る。他の実装形態では、「おはよう」ルーチンの完了後、ユーザがまだキッチンデバイスの近くにいる間、キッチンアシスタントデバイスは、ニュースの見出しをレンダリングする新しいアクションを「おはよう」ルーチンに追加することをユーザに提案することができる。加えてまたは代替的に、いくつかの実装形態では、自動化されたアシスタントは、「おはよう」ルーチンが実行される前であるが、ユーザが、キッチンデバイスによってショートカットコマンドを介してルーチンを要求した後に、ユーザが、キッチンデバイスの近くで検出された場合、オフィス内で過去に実行されたアクションを追加することをユーザに提案することができる。
いくつかの実装形態では、自動化されたアシスタントルーチンにアクションを追加することに制限が課され得る。例えば、配偶者と一緒に暮らしているユーザは、「おはよう」ルーチンを有する場合があり、ユーザの配偶者は、配偶者自身の「おはよう」ルーチンを有する場合がある。ユーザは、ユーザの配偶者のおはようルーチンにアクションを追加したくない場合がある(逆も同様)。いくつかの実装形態では、自動化されたアシスタントは、センサ入力、ならびに/または音声署名、顔認識、画像フィード、動作特性、および/もしくは他のデータなどの1つもしくは複数の決定された特徴を介して、ユーザまたはユーザの配偶者がアクションを実行しているかどうかを決定することができる。いくつかの実装形態では、マルチユーザ世帯における自動化されたアシスタントルーチンにおけるデフォルト設定は、ルーチンのユーザのみがユーザの個人ルーチンを変更する権限を有するためのものであり得る。いくつかの実装形態では、ユーザは、他のユーザ(ユーザの配偶者など)がユーザの個人ルーチンにアクションを追加することを可能にするために、自動化されたアシスタントに許可を与えることができる。加えて、いくつかの実装形態では、アクションを追加するルーチンを提案する前に、適切な同意が得られた場合、自動化されたアシスタントは、世帯の他のメンバのための同様のルーチンにおけるアクションを再調査することができる。例えば、スマートコーヒーメーカーなどのデバイスをオンにするアクションをユーザのおはようルーチンに追加することを提案する前に、自動化されたアシスタントは、配偶者のおはようルーチンを再調査し、アクションが朝の間に世帯内ですでに実行されているかどうかを決定することができる。言い換えれば、アクションを追加することを提案するルーチンを決定するとき、例えば、2人のユーザの両方が、2人のユーザの「おはよう」ルーチンの一部として、朝にコーヒーメーカーをオンにするなどの、重複アクションを防ぐために、自動化されたアシスタントは、ユーザのルーチンを再調査し、それらを世帯の他のメンバに関連付けられたルーチンと比較することができる。
いくつかの実装形態では、ルーチンを実行する際に、自動化されたアシスタントは、1つまたは複数のローカルエージェントおよび/またはリモートエージェントとインターフェースする。例えば、3つのアクションを含むルーチンについて、自動化されたアシスタントは、第1のアクションを実行する際に第1のエージェントと、第2のアクションを実行する際に第2のエージェントと、第3のアクションを実行する際に第3のエージェントとインターフェースすることができる。本明細書で使用される場合、「エージェント」は、自動化されたアシスタントによって利用される1つまたは複数のコンピューティングデバイスおよび/またはソフトウェアを指す。いくつかの状況では、エージェントは、自動化されたアシスタントとは別であり得、および/または1つもしくは複数の通信チャネルを介して自動化されたアシスタントと通信してもよい。それらの状況のうちのいくつかでは、自動化されたアシスタントは、第1のネットワークノードから、データ(例えば、エージェントコマンド)を、エージェントの機能のすべてまたは態様を実装する第2のネットワークノードに送信してもよい。いくつかの状況では、エージェントは、自動化されたアシスタントを管理するパーティとは別のパーティによって管理されるという点で、サードパーティ(3P)エージェントであってもよい。いくつかの他の状況では、エージェントは、自動化されたアシスタントを管理するのと同じパーティによって管理されるという点で、ファーストパーティ(1P)エージェントであってもよい。
エージェントは、自動化されたアシスタントからの呼び出し要求および/または他のエージェントコマンドを(例えば、ネットワークを介して、および/またはAPIを介して)受信するように構成される。エージェントコマンドを受信したことに応答して、エージェントは、エージェントコマンドに基づいて応答コンテンツを生成し、応答コンテンツに基づくユーザインターフェース出力の供給のために応答コンテンツを送信する。例えば、エージェントは、応答コンテンツに基づく自動化されたアシスタントによる出力の供給のために、応答コンテンツを自動化されたアシスタントに送信してもよい。別の例として、エージェント自体が、出力を提供することができる。例えば、ユーザは、クライアントデバイスを介して自動化されたアシスタントと対話することができ(例えば、自動化されたアシスタントは、クライアントデバイス上および/またはクライアントデバイスとのネットワーク通信において実装され得る)、エージェントは、クライアントデバイス上にインストールされたアプリケーション、またはクライアントデバイスから離れて実行可能であるが、クライアントデバイス上に「ストリーミング可能」なアプリケーションであり得る。アプリケーションが呼び出された場合、アプリケーションは、クライアントデバイスによって実行され得、および/またはクライアントデバイスによって最前面に置かれ得る(例えば、そのコンテンツが、クライアントデバイスの表示を引き継ぐことができる)。
上記は、本明細書で開示した様々な実装形態の概要として提供されている。それらの様々な実装形態、ならびに追加の実装形態に関して、追加の詳細が、本明細書で提供される。
いくつかの実装形態では、1つまたは複数のプロセッサによって実行される方法が、提供され、自動化されたアシスタントによって開始されるアクションを決定するステップを含む。アクションは、自動化されたアシスタントと対話する1つまたは複数の自動化されたアシスタントインターフェースを介してユーザによって提供されたユーザインターフェース入力の1つまたは複数のインスタンスに応答して、自動化されたアシスタントによって開始される。方法は、ユーザに関連して記憶された複数の自動化されたアシスタントルーチンを識別するステップをさらに含む。自動化されたアシスタントルーチンの各々は、自動化されたアシスタントルーチンの初期化に応答して自動化されたアシスタントを介して自動的に実行されるべき複数の対応するアクションを定義し、アクションは、自動化されたアシスタントルーチンのアクションに追加される。方法は、アクションを、ユーザに関連して記憶された複数の自動化されたアシスタントルーチンと比較するステップをさらに含む。方法は、比較に基づいて、ユーザに関連して記憶された自動化されたアシスタントルーチンのサブセットを選択するステップをさらに含む。方法は、ユーザによって提供されたユーザインターフェース入力に応答してアクションが開始されることに基づくとともに、自動化されたアシスタントルーチンのサブセットを選択したことに基づいて、ユーザのクライアントデバイスを介してユーザインターフェース出力をレンダリングさせるステップをさらに含む。ユーザインターフェース出力は、サブセットの自動化されたアシスタントルーチンのうちの1つまたは複数にアクションを追加するようにユーザに促す。方法は、ユーザインターフェース出力に応答して肯定的なユーザインターフェース入力を受信するステップをさらに含み、肯定的なユーザインターフェース入力は、サブセットの自動化されたアシスタントルーチンのうちの所与のルーチンを示す。方法は、肯定的なユーザインターフェース入力を受信したことに応答して、所与のルーチンの初期化に応答して自動的に実行されるべき所与のルーチンの複数の対応するアクションの追加の1つとしてアクションを自動的に追加するステップをさらに含む。
本明細書で開示した技術のこれらおよび他の実装形態は、以下の特徴のうちの1つまたは複数を含むことができる。
いくつかの実装形態では、ユーザインターフェース入力の1つまたは複数のインスタンスは、テキストに変換された場合に第1の長さの第1のテキストである1つまたは複数の発話を含む。それらの実装形態では、所与のルーチンの初期化は、テキストに変換された場合に第2の長さの第2のテキストである所与の発話に応答して発生し、第2の長さは、第1の長さよりも短い。
いくつかの実装形態では、ユーザのクライアントデバイスを介してユーザインターフェース出力をレンダリングさせるステップは、所与のルーチンを実行するステップにさらに基づき、所与のルーチンを実行するステップの終了時に発生する。
いくつかの実装形態では、アクションを開始したユーザインターフェース入力の1つまたは複数のインスタンスは、発話を含む。それらの実装形態のいくつかの変形例では、方法は、発話の1つまたは複数の音声特性に基づいてユーザのプロファイルを識別するステップをさらに含む。それらの変形例では、ユーザに関連して記憶された複数の自動化されたアシスタントルーチンを識別するステップは、複数の自動化されたアシスタントルーチンがユーザのプロファイルに関連して記憶されていることに基づいて複数の自動化されたアシスタントルーチンを識別するステップを含む。さらに、それらの変形例では、所与のルーチンを実行するステップは、ユーザからの追加の発話に応答して発生することができ、ユーザのクライアントデバイスを介してユーザインターフェース出力をレンダリングさせるステップは、追加の発話がユーザのプロファイルに対応する1つまたは複数の音声特性を有すると決定したことにさらに基づくことができる。
いくつかの実装形態では、ユーザのクライアントデバイスを介してユーザインターフェース出力をレンダリングさせるステップは、ユーザインターフェース入力の1つまたは複数のインスタンスに応答して自動化されたアシスタントによって開始されたアクションの終了時に発生する。
いくつかの実装形態では、アクションは、自動化されたアシスタントによって管理される接続されたデバイスの少なくとも1つの状態を変更するコマンドを提供することを含む。
いくつかの実装形態では、アクションは、自動化されたアシスタントを制御するパーティとは異なるサードパーティによって制御されるエージェントにコマンドを提供することを含む。
いくつかの実装形態では、自動化されたアシスタントルーチンのサブセットを選択するステップは、アクションを、自動化されたアシスタントルーチンの各々の中の複数の対応するアクションの各々と比較するステップと、比較するステップに基づいて、自動化されたアシスタントルーチンの各々について、アクションが、自動化されたアシスタントルーチン内の複数の対応するアクションのいずれかとの1つまたは複数の矛盾を含むかどうかを決定するステップと、サブセットの自動化されたアシスタントルーチンの複数の対応するアクションには、アクションとの1つまたは複数の矛盾がないと決定したことに基づいて、自動化されたアシスタントルーチンのサブセットを選択するステップとを含む。
いくつかの実装形態では、1つまたは複数の矛盾は、時間的矛盾および/またはデバイスの非互換性の矛盾を含む。時間的矛盾は、複数の対応するアクションの各々の時間枠内にアクションを完了することができないことを含むことができる。デバイスの非互換性の矛盾は、アクションが特定の能力を有するデバイスを必要とすることと、複数の対応するアクションの各々が特定の能力を有するいかなるデバイスにも関連付けられていないこととを含むことができる。
いくつかの実装形態では、アクションを自動的に追加するステップは、所与のルーチン内のアクションを実行するための位置を決定するステップを含み、位置は、所与のルーチンの複数の対応するアクションに対するものである。それらの実装形態のいくつかの変形例では、アクションを実行するための位置は、複数の対応するアクションの前、複数の対応するアクションの後、または複数の対応するアクションのうちの2つの間である。それらの変形例のうちのいくつかでは、位置は、複数の対応するアクションの後であり、時間的遅延を含む。時間的遅延は、ユーザによる所与のルーチンの1つまたは複数の過去の開始に続く、ユーザによるアクションの過去の開始における1つまたは複数の過去の時間的遅延に基づくことができる。
いくつかの実装形態では、アクションを開始したユーザインターフェース入力の1つまたは複数のインスタンスは、ユーザインターフェース出力がそれを介してレンダリングされるクライアントデバイスにリンクされているが、それとは別の追加のクライアントデバイスを介して受信される。
いくつかの実装形態では、ユーザインターフェース出力は、グラフィカル出力を含み、方法は、クライアントデバイスが表示能力を欠いており、かつ追加のクライアントデバイスが表示能力を含むと決定したことに基づいて、ユーザインターフェース出力を提供するための追加のクライアントデバイスを選択するステップをさらに含む。
いくつかの実装形態では、アクションを開始したユーザインターフェース入力の1つまたは複数のインスタンスは、発話を含み、方法は、発話の1つまたは複数の音声特性に基づいてユーザのプロファイルを識別するステップをさらに含む。それらの実装形態のうちのいくつかでは、ユーザに関連して記憶された複数の自動化されたアシスタントルーチンを識別するステップは、複数の自動化されたアシスタントルーチンが、発話の音声特性に基づいて識別されたユーザのプロファイルに関連して記憶されていることに基づく。
いくつかの実装形態では、1つまたは複数のプロセッサによって実行される方法が、提供され、自動化されたアシスタントアクションを決定するステップと、ユーザに関連して記憶された複数の自動化されたアシスタントルーチンを識別するステップとを含む。自動化されたアシスタントルーチンの各々は、自動化されたアシスタントルーチンの初期化に応答して自動化されたアシスタントを介して自動的に実行されるべき複数の対応するアクションを定義する。決定された自動化されたアシスタントアクションは、自動化されたアシスタントルーチンの複数の対応するアクションに追加され得る。方法は、自動化されたアシスタントアクションを、ユーザに関連して記憶された複数の自動化されたアシスタントルーチンと比較するステップをさらに含む。方法は、比較に基づいて、ユーザに関連して記憶された自動化されたアシスタントルーチンのサブセットを選択するステップをさらに含む。方法は、クライアントデバイスの1つまたは複数のセンサからのセンサデータに基づいて、ユーザがクライアントデバイスと対話していることを決定するステップをさらに含む。方法は、ユーザがクライアントデバイスと対話していると決定したことに基づくとともに、自動化されたアシスタントルーチンのサブセットを選択したことに基づいて、クライアントデバイスを介してユーザインターフェース出力をレンダリングさせるステップをさらに含み、ユーザインターフェース出力は、サブセットの自動化されたアシスタントルーチンのうちの1つまたは複数に自動化されたアシスタントアクションを追加するようにユーザに促す。方法は、ユーザインターフェース出力に応答して肯定的なユーザインターフェース入力を受信するステップをさらに含み、肯定的なユーザインターフェース入力は、サブセットの自動化されたアシスタントルーチンのうちの所与のルーチンを示す。方法は、肯定的なユーザインターフェース入力を受信したことに応答して、所与のルーチンの初期化に応答して自動的に実行されるべき所与のルーチンの複数の対応するアクションの追加の1つとして、自動化されたアシスタントアクションを追加するステップをさらに含む。
いくつかの実装形態では、追加するステップは、肯定的なユーザインターフェース入力を受信したことに応答して、いかなるさらなるユーザインターフェース入力も要求することなく実行される。
いくつかの実装形態では、センサデータは、クライアントデバイスの1つまたは複数のマイクロフォンに基づく音声データを含み、ユーザがクライアントデバイスと対話していることを決定するステップは、音声データに基づいて1つまたは複数の音声特性を決定するステップと、ユーザのプロファイルに一致する音声特性に基づいてユーザを識別するステップとを含む。
いくつかの実装形態では、自動化されたアシスタントアクションは、特定の接続されたデバイスを制御することを含む。それらの実装形態のいくつかの変形例では、自動化されたアシスタントアクションを、ユーザに関連して記憶された複数の自動化されたアシスタントルーチンと比較するステップは、ユーザの接続されたデバイスのデバイストポロジに基づいて、所与のルーチンの複数の対応するアクションのうちの少なくとも1つによって制御される特定の接続されたデバイスと追加の接続されたデバイスが両方ともデバイストポロジ内の同じ物理的な場所に割り当てられていることを決定するステップを含む。これらの変形例のうちのいくつかでは、比較に基づいて、サブセット内に含めるための所与のルーチンを選択するステップは、特定の接続されたデバイスと追加の接続されたデバイスが両方とも同じ物理的な場所に割り当てられていると決定したことに基づいて、サブセット内に含めるための所与のルーチンを選択するステップを含む。同じ物理的な場所は、例えば、ユーザの家の中の部屋の、ユーザにより割り当てられた意味論的識別子であり得る。
いくつかの実装形態では、自動化されたアシスタントアクションは、特定の接続されたデバイスを制御することを含み、自動化されたアシスタントアクションを決定するステップは、特定の接続されたデバイスの報告された状態に基づいて、特定の接続されたデバイスが自動化されていないアシスタントの対話に応答して特定の方法で制御されたことを決定するステップと、特定の接続されたデバイスを特定の方法で制御させるための自動化されたアシスタントアクションを決定するステップとを含む。
いくつかの実装形態では、自動化されたアシスタントアクションを、ユーザに関連して記憶された複数の自動化されたアシスタントルーチンと比較するステップは、ユーザによる自動化されたアシスタントアクションまたは関連するアクションの1つまたは複数の過去の実行に基づいて、自動化されたアシスタントアクションの少なくとも1つのアクションの時間的特性を決定するステップと、自動化されたアシスタントルーチンの1つまたは複数の過去の実行に基づいて、自動化されたアシスタントルーチンの少なくとも1つのルーチンの時間的特性を決定するステップと、少なくとも1つのアクションの時間的特性を少なくとも1つのルーチンの時間的特性と比較するステップとを含む。
いくつかの実装形態では、自動化されたアシスタントアクションは、特定のサードパーティによって制御されるサードパーティエージェントとの対話を含み、自動化されたアシスタントアクションを決定するステップは、ユーザによる別個のサードパーティとの別個の対話の過去の実行を決定するステップを含む。
いくつかの実装形態では、自動化されたアシスタントアクションを決定するステップは、別個の対話と自動化されたアシスタントアクションとの間の関係を決定することに基づく。
加えて、いくつかの実装形態は、1つまたは複数のコンピューティングデバイスの1つまたは複数のプロセッサを含み、1つまたは複数のプロセッサは、関連するメモリ内に記憶された命令を実行するように動作可能であり、命令は、前述の方法のいずれかの実行を引き起こすように構成される。いくつかの実装形態は、前述の方法のいずれかを実行するために1つまたは複数のプロセッサによって実行可能なコンピュータ命令を記憶している1つまたは複数の非一時的なコンピュータ可読記憶媒体も含む。
本明細書で開示された実装形態は、自動化されたアシスタントアクションがユーザのための自動化されたアシスタントルーチンに組み込まれることを推奨するかどうかを決定するための方法、装置、およびコンピュータ可読媒体(一時的および非一時的)に向けられている。それらの実装形態のうちのいくつかでは、アクションをルーチンに組み込むことを推奨することが決定された場合、ユーザインターフェース出力が、ユーザに提示するためにレンダリングされる。ユーザインターフェース出力は、ユーザがアクションをルーチンに追加することを望むかどうかに関してユーザに促すことができる。さらに、それらの実装形態のいくつかの変形例では、ユーザインターフェース出力に応答して受信されている肯定的なユーザインターフェース入力に応答して、アクションは、ルーチンに追加される。例えば、受信されている肯定的なユーザインターフェース入力に応答して、アクションは、ルーチンに自動的に追加され得る。
例示的なルーチンは、朝のルーチンであり得、朝のルーチンでは、自動化されたアシスタントが、ユーザにその日の準備をさせるために朝に複数の異なるアクションを順次実行する。例えば、朝のルーチンは、自動化されたアシスタントが、特定の日(例えば、今日)のユーザのスケジュールを、クライアントデバイスを介して聴覚的にレンダリングさせ、デバイス(例えば、スマート照明)をオンにさせ、次いで、ユーザが準備をしている間にクライアントデバイスを介してポッドキャストを聴覚的にレンダリングさせることを含むことができる。朝のルーチンの完了後、ユーザは、朝のルーチン内に含まれ得るアクションの実行を引き起こす場合がある。例えば、ユーザは、朝のルーチンが完了した後、第2のクライアントデバイスのアシスタントインターフェースに発話を提供してもよく、発話は、自動化されたアシスタントに、自動化されたアシスタントに関連付けられた器具(例えば、スマートコーヒーメーカー)をオンにさせる。朝のルーチンの実行の時間的近接性と、ユーザが自動化されたアシスタントに器具をオンにさせる発話を提供したこととに少なくとも部分的に基づいて、「器具をオンにする」アクションは、朝のルーチンに含めることを推奨され得る。ユーザが、推奨に同意した場合、「器具をオンにする」アクションは、ルーチンに自動的に追加され得る。その後、ユーザが器具をオンにするためにアシスタントに個別のコマンドを与えなければならない代わりに、自動化されたアシスタントは、朝のルーチンの開始に応答して器具をオンにさせることができる。
ここで図に向かうと、図1は、様々な実装形態が実行され得る例示的な環境100を示す。例示的な環境100は、1つまたは複数のクライアントデバイス102を含む。各クライアントデバイスは、自動化されたアシスタントクライアント112のそれぞれのインスタンスを実行してもよい。自然言語プロセッサ122および/またはルーチンモジュール124などの1つまたは複数のクラウドベースの自動化されたアシスタント構成要素116は、全体として114として示されている1つまたは複数のローカルエリアネットワークおよび/またはワイドエリアネットワーク(例えば、インターネット)を介してクライアントデバイス102に通信可能に結合された1つまたは複数のコンピューティングシステム(まとめて「クラウド」コンピューティングシステムと呼ばれる)上に実装され得る。
様々な実装形態では、自動化されたアシスタントクライアント108のインスタンスは、1つまたは複数のクラウドベースの自動化されたアシスタント構成要素116とのその対話として、ユーザの観点から、ユーザがそれとの対話に従事し得る自動化されたアシスタント112の論理インスタンスのように見えるものを形成してもよい。自動化されたアシスタント112の1つのそのような例が、破線によって図1中に示されている。したがって、クライアントデバイス102上で実行されている自動化されたアシスタントクライアント108と係わっている各ユーザは、事実上、自動化されたアシスタント112のそれら自体の論理インスタンスと係わってもよいことが、理解されるべきである。簡潔さおよび単純さのために、特定のユーザに「サービスする」ものとして本明細書で使用される「自動化されたアシスタント」という用語は、しばしば、ユーザによって操作される自動化されたアシスタントクライアント108と、1つまたは複数のクラウドベースの自動化されたアシスタント構成要素116(複数の自動化されたアシスタントクライアント108間で共有され得る)との組合せを指す場合がある。いくつかの実装形態では、自動化されたアシスタント112は、ユーザが、自動化されたアシスタント112のその特定のインスタンスによって実際に「サービス」されているかどうかにかかわらず、任意のユーザからの要求に応答してもよいことも理解されるべきである。
クライアントデバイス102は、例えば、デスクトップコンピューティングデバイス、ラップトップコンピューティングデバイス、タブレットコンピューティングデバイス、タッチ感応コンピューティングデバイス(例えば、ユーザからのタッチを介して入力を受信することができるコンピューティングデバイス)、携帯電話コンピューティングデバイス、ユーザのビークル内のコンピューティングデバイス(例えば、ビークル内通信システム、ビークル内エンターテインメントシステム、ビークル内ナビゲーションシステム)、独立型対話式スピーカ、スマートテレビなどのスマート器具、および/またはコンピューティングデバイスを含むユーザのウェアラブル装置(例えば、コンピューティングデバイスを有するユーザの腕時計、コンピューティングデバイスを有するユーザの眼鏡、仮想または拡張現実コンピューティングデバイス)のうちの1つまたは複数を含んでもよい。追加のおよび/または代替的なクライアントコンピューティングデバイスが、提供されてもよい。
様々な実装形態では、クライアントデバイス102は、様々な形態になり得る1つまたは複数のセンサ(図示せず)を含んでもよい。センサは、口頭ベースの入力、テキストベースの入力、グラフィカルベースの入力、物理ベースの入力(例えば、コンピューティングデバイスのタッチ感応プロジェクタおよび/またはタッチ感応スクリーンを含むディスプレイデバイスへのタッチ)、および/または視覚ベースの入力(例えば、ジェスチャ)などの、自動化されたアシスタント112への様々なタイプの入力を感知することができる。いくつかのクライアントデバイス102は、視野内で検出された動きを示す信号をキャプチャして提供するように構成された1つまたは複数のデジタルカメラを備えてもよい。追加的または代替的に、いくつかのクライアントデバイスは、1つまたは複数のマイクロフォンなどの、音響(または圧力)波を検出するセンサを備えてもよい。
クライアントデバイス102および/またはクラウドベースの自動化されたアシスタント構成要素116は、1つまたは複数のデバイス104と通信することができる。デバイス104は、スマート器具、スマートサーモスタット、スマートコーヒーメーカー、スマートライト、スマートロックなどのインターネットオブシングスデバイスを含む様々なデバイスのうちのいずれかを含むことができる。デバイス104は、クライアントデバイス102(および/またはクライアントデバイス102の特定のユーザ)とリンクされ、および互いにリンクされている。例えば、デバイス104は、クライアントデバイス102(およびオプションで他のクライアントデバイス)に割り当てられたプロファイルにリンクされ得、および/またはクライアントデバイス102のユーザに割り当てられたプロファイルにリンクされ得る。集合的に、クライアントデバイス102、他のクライアントデバイス、およびデバイス104は、デバイスの調整されたエコシステムを定義することができる。様々な実装形態では、デバイスは、ユーザによって作成および/または自動的に作成され得、様々なアシスタントクライアントデバイス、様々なスマートデバイス、各々のための識別子、および/または各々に関する属性を定義し得るデバイストポロジ表現を介して互いにリンクされる。例えば、デバイスのための識別子は、デバイスが配置されている構造の部屋(および/または他のエリア)(例えば、居間、キッチン)を指定することができ、および/またはデバイスに関するニックネームおよび/または別名(例えば、ソファーランプ、玄関ロック、寝室スピーカ、キッチンアシスタントなど)を指定することができる。このように、デバイスの識別子は、ユーザがそれぞれのデバイスに関連付ける可能性が高いそれぞれのデバイスの名前、別名、および/または場所であり得る。本明細書で説明したように、そのような識別子は、本明細書で開示した様々な実装形態において利用され得る。例えば、そのような識別子は、自動化されたアシスタントアクションが自動化されたアシスタントルーチンに適合するかどうかを決定する際に利用され得る。
デバイス104は、自動化されたアシスタント112によって直接制御され得、および/またはデバイス104は、リモートデバイス(例えば、別のクラウドベースの構成要素)によってホストされる1つまたは複数のサードパーティエージェント106によって制御され得る。さらに、1つまたは複数のサードパーティエージェント106は、デバイス104を制御することおよび/または他のハードウェアデバイスを制御することに加えて機能を実行することもできる。例えば、自動化されたアシスタント112は、サービスを実行させる、取引を開始させるなどのために、サードパーティエージェント106と対話することができる。例えば、「エージェントXから大きいペパロニピザを注文して」というユーザ音声コマンドは、自動化されたアシスタントクライアント108(またはクラウドベースの自動化されたアシスタント構成要素116)に、エージェントコマンドをサードパーティエージェント「エージェントX」に送信させることができる。エージェントコマンドは、例えば、音声コマンドから決定された「注文」インテントを示すインテント値、ならびに「タイプ=ピザ」、「トッピング=ペパロニ」、および「サイズ=大」などのオプションのスロット値を含むことができる。それに応じて、サードパーティエージェントは、大きいペパロニピザの注文を開始させ、自動化されたアシスタント112に、注文が正常に開始されたことを示すコンテンツを提供することができる。コンテンツ(またはその変換)は、次いで、クライアントデバイス102の出力デバイス(例えば、スピーカおよび/またはディスプレイ)を介してユーザにレンダリングされるようにされ得る。本明細書で説明したように、いくつかの実装形態は、「エージェントXから大きいペパロニピザを注文する」アクションおよび/または同様のアクションがユーザの既存のルーチンに追加されることを推奨することができる。ユーザの既存のルーチンに追加された場合、「エージェントXから大きいペパロニピザを注文する」自動化されたアシスタントアクションは、次いで、ユーザが「エージェントXから大きいペパロニピザを注文して」の発話を個別に提供する必要なしに、既存のルーチンの開始に応答して開始され得る。したがって、そのような発話をキャプチャするオーディオデータの送信および/または処理は、不要にされ得、それによって、コンピュータリソースおよび/またはネットワークリソースを節約して使うことができる。
多くの実装形態では、自動化されたアシスタント112は、1つまたは複数のクライアントデバイス102のユーザインターフェース入力および出力デバイスを介して、1人または複数のユーザとの対話セッションに従事してもよい。いくつかの実装形態では、自動化されたアシスタント112は、クライアントデバイス102のうちの1つの1つまたは複数のユーザインターフェース入力デバイスを介してユーザによって提供されたユーザインターフェース入力に応答して、ユーザとの対話セッションに従事してもよい。それらの実装形態のうちのいくつかでは、ユーザインターフェース入力は、自動化されたアシスタント112に対して明示的に直接的である。例えば、ユーザは、自動化されたアシスタント112に積極的に聞き取りを開始させるために、「オーケー、アシスタント」または「ねえ、アシスタント」などの所定の呼び出しフレーズを話してもよい。多くの実装形態では、ユーザは、おはようルーチンの実行を開始するために「オーケーアシスタント、おはよう」など、ルーチンの実行を開始するための所定のショートカットフレーズを話してもよい。
いくつかの実装形態では、自動化されたアシスタント112は、そのユーザインターフェース入力が自動化されたアシスタント112に対して明示的に直接的ではない場合でも、ユーザインターフェース入力に応答して対話セッションに従事してもよい。例えば、自動化されたアシスタント112は、ユーザインターフェース入力の内容を調べ、ユーザインターフェース入力内に存在する特定の用語に応答して、および/または他の合図に基づいて、対話セッションに従事してもよい。多くの実装形態では、自動化されたアシスタント112は、ユーザからの発話をテキストに変換するために音声認識を利用し、それに応じて、例えば、視覚的情報を提供することによって、検索結果を提供することによって、一般的な情報を提供することによって、および/または1つまたは複数の応答アクション(例えば、メディアを再生すること、ゲームを起動すること、食べ物を注文することなど)をとることによって、テキストに応答してもよい。いくつかの実装形態では、自動化されたアシスタント112は、発話をテキストに変換することなく、発話に追加的または代替的に応答することができる。例えば、自動化されたアシスタント112は、音声入力を(音声入力内に存在するエンティティを示す)エンティティ表現および/または他の「非テキスト」表現への埋め込みに変換し、そのような非テキスト表現において動作することができる。したがって、音声入力から変換されたテキストに基づいて動作するものとして本明細書で説明した実装形態は、直接音声入力においておよび/または音声入力の他の非テキスト表現において、追加的および/または代替的に動作してもよい。
クライアントコンピューティングデバイス102およびクラウドベースの自動化されたアシスタント構成要素116を動作させるコンピューティングデバイスの各々は、データおよびソフトウェアアプリケーションの記憶のための1つまたは複数のメモリと、データにアクセスし、アプリケーションを実行するための1つまたは複数のプロセッサと、ネットワークを介する通信を容易にする他の構成要素とを含んでもよい。1つまたは複数のコンピューティングデバイス102および/または自動化されたアシスタント112によって実行される動作は、複数のコンピュータシステムにわたって分散され得る。自動化されたアシスタント112は、例えば、ネットワークを介して互いに結合された1つまたは複数の場所において実行されている1つまたは複数のコンピュータ上で実行されているコンピュータプログラムとして実装され得る。
上記のように、様々な実装形態では、クライアントコンピューティングデバイス102は、自動化されたアシスタントクライアント108を動作させてもよい。様々な実装形態では、各自動化されたアシスタントクライアント108は、対応する音声キャプチャ/テキスト音声化(「TTS」)/音声テキスト化(「STT」)モジュール110を含んでもよい。他の実装形態では、音声キャプチャ/TTS/STTモジュール110の1つまたは複数の態様は、自動化されたアシスタントクライアント108とは別個に実装され得る。
各音声キャプチャ/TTS/STTモジュール110は、1つまたは複数の機能を実行し、例えば、(場合によっては、クライアントデバイス102内のセンサを含んでもよい)マイクロフォンを介して、ユーザの音声をキャプチャし、キャプチャした音声をテキスト(および/または他の表現もしくは埋め込み)に変換し、および/またはテキストを音声に変換するように構成され得る。例えば、いくつかの実装形態では、クライアントデバイス102は、コンピューティングリソース(例えば、プロセッササイクル、メモリ、バッテリなど)に関して比較的制約される場合があるので、各クライアントデバイス102にローカルである音声キャプチャ/TTS/STTモジュール110は、有限数の異なる口頭フレーズ、特に、自動化されたアシスタント112を呼び出すフレーズをテキスト(または、より低次元性の埋め込みなどの他の形式)に変換するように構成され得る。他の音声入力は、クラウドベースのTTSモジュール118および/またはクラウドベースのSTTモジュール120を含み得るクラウドベースの自動化されたアシスタント構成要素116に送信され得る。
クラウドベースのSTTモジュール120は、音声キャプチャ/TTS/STTモジュール110によってキャプチャされたオーディオデータをテキスト(次いで、自然言語プロセッサ122に提供され得る)に変換するために、クラウドの事実上無制限のリソースを活用するように構成され得る。クラウドベースのTTSモジュール118は、テキストデータ(例えば、自動化されたアシスタント112によって定式化された自然言語応答)をコンピュータ生成音声出力に変換するために、クラウドの事実上無制限のリソースを活用するように構成され得る。いくつかの実装形態では、TTSモジュール118は、例えば、1つまたは複数のスピーカを使用して直接出力されるように、コンピュータ生成音声出力をクライアントデバイス102に提供してもよい。他の実装形態では、自動化されたアシスタント112によって生成されたテキストデータ(例えば、自然言語応答)は、音声キャプチャ/TTS/STTモジュール110に提供され得、音声キャプチャ/TTS/STTモジュール110は、次いで、テキストデータを、ローカルに出力されるコンピュータ生成音声に変換してもよい。
自動化されたアシスタント112(例えば、クラウドベースのアシスタント構成要素116)は、自然言語プロセッサ122と、前述のTTSモジュール118と、前述のSTTモジュール120と、他の構成要素とを含んでもよく、他の構成要素のうちのいくつかについて、以下でより詳細に説明する。いくつかの実装形態では、自動化されたアシスタント112のエンジンおよび/またはモジュールのうちの1つまたは複数は、省略、結合、および/または自動化されたアシスタント112とは別の構成要素内に実装され得る。いくつかの実装形態では、プライバシーを保護するために、自然言語プロセッサ122、音声キャプチャ/TTS/STTモジュール110、ルーチンモジュール124などの、自動化されたアシスタント112の構成要素のうちの1つまたは複数は、クライアントデバイス102(例えば、クラウドを除外する)において少なくとも部分的に実装され得る。
いくつかの実装形態では、自動化されたアシスタント112は、自動化されたアシスタント112との人間対コンピュータの対話セッション中にクライアントデバイス102のユーザによって生成された様々な入力に応答して応答コンテンツを生成する。自動化されたアシスタント112は、対話セッションの一部としてユーザに提示するための応答コンテンツを(例えば、ユーザのクライアントデバイスとは別の場合、1つまたは複数のネットワークを介して)提供してもよい。例えば、自動化されたアシスタント112は、クライアントデバイス102を介して提供された自由形式の自然言語入力に応答して応答コンテンツを生成してもよい。本明細書で使用される場合、自由形式の入力は、ユーザによる選択のために提示されたオプションのグループに制約されない、ユーザによって定式化された入力である。
自動化されたアシスタント112の自然言語プロセッサ122は、クライアントデバイス102を介してユーザによって生成された自然言語入力を処理し、自動化されたアシスタント112の1つまたは複数の構成要素によって使用するための注釈付き出力を生成してもよい。例えば、自然言語プロセッサ122は、クライアントデバイス102の1つまたは複数のユーザインターフェース入力デバイスを介してユーザによって生成された自然言語の自由形式入力を処理してもよい。生成された注釈付き出力は、自然言語入力の1つまたは複数の注釈と、オプションで自然言語入力の用語のうちの1つまたは複数(例えば、すべて)とを含む。
いくつかの実装形態では、自然言語プロセッサ122は、自然言語入力内の様々なタイプの文法情報を識別して注釈を付けるように構成される。例えば、自然言語プロセッサ122は、用語にそれらの文法的役割を注釈付けするように構成された品詞タグ付け器を含んでもよい。また、例えば、いくつかの実装形態では、自然言語プロセッサ122は、自然言語入力内の用語間の構文関係を決定するように構成された係り受けパーサ(図示せず)を追加的および/または代替的に含んでもよい。
いくつかの実装形態では、自然言語プロセッサ122は、人(例えば、文学のキャラクタ、有名人、公人などを含む)、組織、場所(実在および架空)などへの参照などの、1つまたは複数のセグメント内のエンティティ参照に注釈を付けるように構成されたエンティティタグ付け器(図示せず)を追加的および/または代替的に含んでもよい。自然言語プロセッサ122のエンティティタグ付け器は、(例えば、人などのエンティティクラスへのすべての参照の識別を可能にする)高レベルの粒度および/または(例えば、特定の人などの特定のエンティティへのすべての参照の識別を可能にする)より低いレベルの粒度においてエンティティへの参照に注釈を付けてもよい。エンティティタグ付け器は、特定のエンティティを解決するために自然言語入力のコンテンツに依存してもよく、および/または特定のエンティティを解決するためにナレッジグラフもしくは他のエンティティデータベースとオプションで通信してもよい。
いくつかの実装形態では、自然言語プロセッサ122は、1つまたは複数の文脈上の合図に基づいて同じエンティティへの参照をグループ化または「クラスタ化」するように構成された共参照リゾルバ(図示せず)を追加的および/または代替的に含んでもよい。例えば、共参照リゾルバは、「私は、前回そこで食べたときに、仮想カフェが好きでした」という自然言語入力内の「そこで」という語句を「仮想カフェ」に解決するために利用され得る。
多くの実装形態では、自然言語プロセッサ122の1つまたは複数の構成要素は、自然言語プロセッサ122の1つまたは複数の他の構成要素からの注釈に依存してもよい。例えば、いくつかの実装形態では、名前付きエンティティタグ付け器は、特定のエンティティへのすべての言及に注釈を付ける際に、共参照リゾルバおよび/または係り受けパーサからの注釈に依存してもよい。また、例えば、いくつかの実装形態では、共参照リゾルバは、同じエンティティへの参照をクラスタ化する際に、係り受けパーサからの注釈に依存してもよい。多くの実装形態では、特定の自然言語入力を処理する際に、自然言語プロセッサ122の1つまたは複数の構成要素は、1つまたは複数の注釈を決定するために、特定の自然言語入力の外部の関連する以前の入力および/または他の関連するデータを使用してもよい。
自動化されたアシスタント112のルーチンモジュール124は、ユーザの自動化されたアシスタントルーチンに追加するための候補アクションを決定することができ、候補アクションを追加することを推奨するユーザの利用可能なルーチンのサブセットを決定することができ、サブセットのルーチンにアクションを追加するための推奨を提供することができ、推奨に応答して受信されている、ルーチンのうちの1つを示す肯定的な入力に基づいて、ルーチンのうちの1つにアクションを追加することができる。ルーチンモジュール124は、図示のようにクラウドベースの自動化されたアシスタント構成要素116によって実行され得、および/またはクライアントデバイス102の自動化されたアシスタントクライアント108によって実装され得る。
いくつかの実装形態では、ルーチンモジュール124は、自動化されたアシスタント112の1つまたは複数のインスタンスとの対話を通じてユーザによって開始されているアクションに基づいて、ユーザのルーチンに追加することを潜在的に推奨するための自動化されたアシスタントアクションを決定する。いくつかの実装形態では、ルーチンモジュール124は、自動化されたアシスタント112の1つまたは複数のインスタンスとの対話を通じてユーザによって開始されている関連するが異なるアクションに基づいて、ユーザのルーチンに追加することを潜在的に推奨するための自動化されたアシスタントアクションを追加的または代替的に決定する。いくつかの実装形態では、ルーチンモジュール124は、ユーザがアクションまたは関連するアクションを実行した可能性が高いことを示すユーザに関連付けられたデータに基づいて、ユーザのルーチンに追加することを潜在的に推奨するための自動化されたアシスタントアクションを追加的または代替的に決定する。ユーザに関連付けられたデータは、他の自動化されていないアシスタントアプリケーションとのユーザの対話に基づくデータ、スマートデバイスの直接的なユーザ制御に応答したそれらのスマートデバイスの状態に基づくデータ、ユーザの場所および/または取引を示すデータなどを含むことができる。
いくつかの実装形態では、ルーチンモジュール124は、ユーザのためのルーチンの記憶されたリストにアクセスし、決定された自動化されたアシスタントアクションを追加することを推奨するルーチンのサブセットを決定することができる。それらの実装形態のうちのいくつかでは、ルーチンモジュール124は、ルーチンの過去の発生の時間的属性を、自動化されたアシスタントアクションの(または自動化されたアシスタントアクションに関連するアクションの)過去の発生の時間的属性と比較することに基づいて、自動化されたアシスタントルーチンのサブセットを選択する。例えば、自動化されたアシスタントアクションが、スマートサーモスタットをユーザが手動で調整したことの過去の発生に基づいて決定された「スマートサーモスタットの設定値を3度低下させる」アクションである場合、それらの過去の発生の時間は、それらの低下を反映するスマートサーモスタットからの状態更新の時間に基づいて決定され得る。さらに、それらの時間の近く(例えば、1時間以内)で頻繁に開始されるユーザのルーチンは、それらの時間の近くでめったにまたは決して開始されないユーザのルーチンよりも、サブセットのために選択される可能性が高くなり得る。
それらの実装形態のうちのいくつかでは、ルーチンモジュール124は、ルーチンにおいて利用されるデバイスのデバイストポロジ属性を、自動化されたアシスタントアクションにおいて利用されるデバイスのデバイストポロジ属性と比較することに基づいて、自動化されたアシスタントルーチンのサブセットを追加的または代替的に選択する。例えば、自動化されたアシスタントアクションが、「場所=ビークル」という割り当てられたデバイストポロジ属性を有するユーザのビークルの構成要素の制御に関連している場合、「場所=ビークル」という割り当てられたデバイストポロジ属性を有する他のデバイスを制御するアクションを含むルーチンは、「場所=ビークル」というデバイストポロジ属性を有するデバイスを制御するいかなるアクションもないルーチンよりも、サブセットのために選択される可能性が高くなり得る。
それらの実装形態のうちのいくつかでは、ルーチンモジュール124は、自動化されたアシスタントアクションとの矛盾を含む任意のルーチンをサブセットから除外して、自動化されたアシスタントルーチンのサブセットを追加的または代替的に選択する。例えば、「居間のライトを50%に暗くする」自動化されたアシスタントアクションについて、所与のルーチンは、競合する「居間のライトをオフにする」アクションを有することに基づいて除外され得る。また、例えば、ユーザの家へのアイテムのオンデマンド配達をもたらすサービスを実行するためにエージェントとインターフェースする自動化されたアシスタントアクションについて、所与のルーチンは、ユーザの「作業」場所に割り当てられていることに基づいて(例えば、明示的に、または「作業」デバイストポロジ属性を有するリンクされたデバイスにのみ関連付けられていることに基づいて)除外され得る。
いくつかの実装形態では、ルーチンモジュールは、自動化されたアシスタントルーチンに追加するための複数の競合するアクションを考慮し、ルーチンに追加するためにユーザインターフェース出力を介して実際に推奨するために選択され得る、競合するアクション(例えば、その1つ)のサブセットのみを選択する。それらの実装形態のいくつかでは、複数の競合するアクションの各々が、ルーチンと比較され得、選択されたアクションは、ルーチンに最も密接に従う、ルーチンとのいかなる競合もない、および/または他の基準を満たすアクションのうちの1つまたは複数であり得る。
アクションおよび/またはアクションが追加され得るルーチンを決定するために利用された技法に関係なく、ルーチンモジュール124は、アクションをルーチンに追加するかどうかに関してユーザに促すユーザインターフェース出力を追加させることができる。いくつかの実装形態では、アクションをルーチンに追加することを推奨する際に、ルーチンモジュール124は、アクションを実行するための自動化されたアシスタントとのユーザ対話に応答して(例えば、アクションが、ユーザ対話に応答して完了した後)、対応するユーザインターフェース出力をレンダリングさせる。いくつかの実装形態では、アクションをルーチンに追加することを推奨する際に、ルーチンモジュール124は、ルーチンの開始に応答して(例えば、ルーチンの任意のアクションを実行する前、またはルーチンのすべてのアクションの完了後に)、対応するユーザインターフェース出力をレンダリングさせる。
ルーチンモジュール124によって提供された推奨に応答して、肯定的なユーザインターフェース入力が受信された場合、ルーチンモジュール124は、対応するアクションを対応するルーチンに追加させることができる。例えば、ルーチンモジュール124は、ユーザからのいかなるさらなるユーザインターフェース入力も必要とすることなく、アクションをルーチンに自動的に追加することができる。いくつかの実装形態では、自動化されたアシスタントアクションをルーチンに追加する際に、ルーチンモジュール124は、ルーチンの前から存在するアクションの中に、自動化されたアシスタントアクションの実行の位置を決定することができる。それらの実装形態のいくつかの変形例では、位置は、自動化されたアシスタントアクションによって必要とされるユーザインターフェース出力(もしあれば)の持続時間と、ルーチンの前から存在するアクションによって必要とされるユーザインターフェース出力(もしあれば)の持続時間とに基づいて決定され得る。いくつかの追加的または代替的変形例では、実行の位置は、最後であり得、オプションでは時間的遅延を伴って発生することができる。
アクションを自動化されたアシスタントルーチンに追加するためにクライアントデバイスと対話するユーザの例を、図2に示す。画像200は、ユーザ202とクライアントデバイス204とを含む部屋のシーンを含む。ユーザ202は、ダイアログボックス206内に示される発話を介してクライアントデバイス204と対話する。ダイアログボックス206の発話は、自動化されたアシスタントが、クライアントデバイス204にリンクされているスマートサーモスタットの設定点の5度の上昇を引き起こすアクションを実行することを要求する。クライアントデバイス204に関連付けられた自動化されたアシスタントは、スマートサーモスタットの設定点を5度だけ上昇させるための適切なコマンドを決定するために、発話を処理することができる。いくつかの実装形態では、クライアントデバイス204に関連付けられた自動化されたアシスタントは、温度を変更するために、スマートサーモスタットと直接インターフェースすることができる。例えば、自動化されたアシスタントは、コマンドをスマートサーモスタットに直接提供することができる。追加的または代替的に、自動化されたアシスタントは、温度を変更するために、スマートサーモスタットに関連付けられたサードパーティエージェントとインターフェースすることができる。例えば、自動化されたアシスタントは、コマンドをサードパーティエージェントに提供することができ、サードパーティエージェントは、温度変更を実現するために、対応するコマンドを生成し、スマートサーモスタットに送信する。
いくつかの実装形態では、クライアントデバイス204は、ダイアログボックス208に示すように、温度が上昇したことを確認する可聴ユーザインターフェース入力をレンダリングすることができ、さらに、温度を5度だけ上昇させることをユーザの「おはよう」ルーチンに追加することを推奨することができる。この推奨は、ユーザが推奨されたルーチンにアクションを追加することを望むかどうかを尋ねるプロンプトを含むことができる。いくつかの実装形態では、この推奨は、ユーザが、ユーザの「おはよう」ルーチンを完了した後、朝の温度を一般に上げる場合、行われ得る。いくつかの実装形態では、この推奨は、ユーザが、第1のクライアントデバイスを使用して「おはよう」ルーチンを実行し、ユーザが、第2のクライアントデバイスを使用して温度を変更した場合でも行われ得る。
この推奨を行う前に、クライアントデバイス204に関連付けられた自動化されたアシスタントは、「温度上昇」の自動化されたアシスタントアクションが追加することを推奨されるべきルーチンとして、ユーザの複数の他のルーチンから「おはよう」ルーチンを選択することができる。本明細書で詳細に説明した様々な技法など、様々な技法が、ユーザの他のルーチンを除外して「おはよう」ルーチンを選択するために利用され得る。
ユーザは、アクションを推奨ルーチンに追加したいかどうかを決定し、ダイアログボックス210によって示されたさらなる発話を介してプロンプトに応答することができる。ユーザが、ダイアログボックス210の発話によって示されるように、プロンプトに肯定的に応答した場合、自動化されたアシスタントは、アクションをユーザの「おはよう」ルーチンに自動的に追加する。さらに、自動化されたアシスタントは、ダイアログボックス212によって示されるように、クライアントデバイス204を介してさらなる可聴ユーザインターフェース出力を提供させ、さらなる可聴出力は、温度を5度だけ上げることが「おはよう」ルーチンに追加されたことを確認する。しかしながら、いくつかの実装形態では、この確認は、オプションであり得る。追加的または代替的に、クライアントデバイス204は、ユーザがルーチンを次に実行するときに、アクションがルーチンに追加されたことを確認することができる。例えば、アクションをユーザのルーチンに追加する権限をユーザが配偶者に与えた様々な実装形態では、これは、アクションが特定のルーチン内に追加されることをユーザが望むことの追加の確認をユーザに提供することができる。
いくつかの実装形態では、ユーザ202は、スマートデバイスを制御するアクションではないアクションの実行を引き起こすために、クライアントデバイスを1つまたは複数のサードパーティエージェントと対話させるために、クライアントデバイス204に入力を提供することができる。例えば、温度が変更されることを要求する代わりに、ユーザは、「ローカルコーヒーショップ」に関連付けられたサードパーティエージェントからオンライン注文を行うためにクライアントデバイス204を使用し、次いで、ユーザが仕事に行く途中に、ユーザが注文したコーヒーを受け取ることができる。ユーザは、そのような注文を行う際にクライアントデバイス204に関連付けられた自動化されたアシスタントと、またはクライアントデバイス204の別個のアプリケーションと対話することができる。多くの実装形態では、クライアントデバイス204に関連付けられた自動化されたアシスタント(図1において上記で説明したそのルーチンモジュール124など)は、コーヒー注文アクションを決定し、アクションをユーザの「おはよう」ルーチンおよび/または他の自動化されたアシスタントルーチンに追加することを推奨するかどうかを決定することができる。例えば、ユーザが、「おはよう」ルーチンの完了直後に毎朝クライアントデバイス204を使用して「ローカルコーヒーショップ」からコーヒー注文を行う場合、自動化されたアシスタントアクションは、「おはよう」ルーチンに対するアクションの時間的近接性に少なくとも部分的に基づいて、アクションを「おはよう」ルーチンに追加することを推奨することを決定することができる。いくつかの実装形態では、ユーザは、クライアントデバイス204が「おはよう」ルーチンのレンダリングを完了した後、例えば、平均25分だけ、クライアントデバイス204を使用して「ローカルコーヒーショップ」からコーヒー注文を行うことを遅らせる可能性がある(すなわち、ユーザは、ユーザが家を出るときに注文を行い、これは、「おはよう」ルーチンの完了後、平均25分で発生する)ので、ユーザは、「ローカルコーヒーショップ」に到着したときに、ユーザは、カップ一杯の熱いコーヒーを待たせている。それらの実装形態のうちのいくつかでは、「ローカルコーヒーショップ」からのコーヒー注文は、「おはよう」ルーチンの実行に応答して、「おはよう」ルーチンの他の前から存在するアクションとともに自動的に実行されるように、「おはよう」ルーチンに依然として追加され得る。しかしながら、自動化されたアシスタントは、「おはよう」ルーチンがサードパーティエージェントを介してユーザのための「ローカルコーヒーショップ」からのコーヒー注文を行う前に、遅延(例えば、前から存在する「おはよう」ルーチンにおける最後のアクションの完了後25分)をオプションで含むことができる。追加的または代替的に、自動化されたアシスタントは、前から存在する「おはよう」ルーチンにおける最後のアクションの完了に続く遅延後に、プロンプト(例えば、「あなたのコーヒーを注文する準備ができました」)を提供させ、プロンプトに応答して肯定的な入力が受信された場合にのみ、注文が開始されるように、それを「おはよう」ルーチンに追加することができる。
追加的または代替的に、いくつかの実装形態では、ユーザが、クライアントデバイス204を使用して「ローカルコーヒーショップ」からコーヒー注文を一回だけ行った場合、自動化されたアシスタントは、「おはよう」ルーチンにおけるアクションを再調査することができる。例えば、ルーチンが、コーヒーメーカーをオンにすることを含む場合、ユーザが単にその朝コーヒーを切らしていた可能性があり、自動化されたアシスタントは、コーヒー注文を「おはよう」ルーチンに追加することを推奨するべきではない。しかしながら、いくつかの実装形態では、ユーザが、クライアントデバイスを使用して事前にコーヒーを予約していなくても、ユーザが、朝に「ローカルコーヒーショップ」を頻繁に訪れる場合、自動化されたアシスタントは、コーヒー注文を行うアクションを「おはよう」ルーチンに追加することを推奨することを決定することができる。
さらに、ユーザが、アクションがそれを介して実行されるサードパーティと以前対話していなかったとしても、自動化されたアシスタントは、自動化されたアシスタントアクションをルーチンに追加することを提案することができる。例えば、ユーザは、先月オープンした、ユーザの家と職場との間のルート上の便利な場所にある新しいコーヒーショップ「新しいコーヒーショップ」に気付かない可能性がある。「新しいコーヒーショップ」においてコーヒーを注文させるアクションは、現在どのようなコーヒー注文アクションもないユーザの「おはよう」ルーチンに追加するために推奨され得る。追加的または代替的に、いくつかの実装形態では、「新しいコーヒーショップ」においてコーヒーを注文させるアクションは、既存のルーチンに追加し、代替のコーヒーショップにおいてコーヒーを注文させるルーチンの既存のアクションを置き換えるために推奨され得る。
いくつかの実装形態では、ユーザは、ルーチンに潜在的に追加するための2つ以上のアクションを提示され得、アクションの各々は、異なるサードパーティエージェントに関連付けられている。例えば、「ローカルコーヒーショップ」からクライアントデバイス204を介して毎日の朝のコーヒー注文を行うユーザは、3つの別個のアクションのうちのいずれか1つを既存の「おはよう」ルーチンに追加するための推奨を提示され得る。3つのアクションの各々は、コーヒー注文を開始させることができるが、第1のアクションは、「ローカルコーヒーショップ」で注文させ、第2のアクションは、「新しいコーヒーショップ」で注文させ、第3のアクションは、「クラッシックコーヒーショップ」で注文させることができる。いくつかの実装形態では、アクションの各々は、対応するコーヒーショップを訪問する時間量がユーザの通勤を増加および/または減少させること、コーヒー注文の対応する価格、対応する報酬プログラム、および/またはユーザがどのコーヒーショップをユーザの「おはよう」ルーチンに追加するかに関して十分な情報に基づいて決定を行うのに役立つ他の情報などの、対応する追加情報とともに提示され得る。いくつかの実装形態では、推奨されるアクションのうちの1つまたは複数は、対応するパーティがその包含について金銭的報酬を提供することに基づいて推奨され得る。いくつかの実装形態では、包含のために必要な金銭的報酬の量は、アクションが追加のために提案されているルーチンにどれくらい厳密に一致するか、ルーチンがユーザによってどれくらい頻繁に実行されるか、および/または他の基準に関連することができる。
ユーザ202の発話およびクライアントデバイス204の可聴出力が、図2に示されているが、追加的または代替的なユーザ入力が、ユーザ202によって、および/またはクライアントデバイス204の追加的もしくは代替的なモダリティを介してレンダリングされたコンテンツによって提供され得る。例えば、ユーザ202は、タイプされた入力、タッチ入力、ジェスチャ入力などを、追加的または代替的に提供することができる。また、例えば、出力は、クライアントデバイス204によって追加的または代替的にグラフィカルにレンダリングされ得る。1つの特定の例として、クライアントデバイス204は、アクションをルーチンに自動的に追加させるユーザ202のタッチ対話によって選択され得る選択可能なインターフェース要素とともに、アクションをルーチンに追加するためのプロンプトをグラフィカルにレンダリングすることができる。
アクションを自動化されたアシスタントルーチンに追加するためにクライアントデバイスと対話するユーザの追加の例を、図3に示す。画像300は、ユーザ302とクライアントデバイス304とを含む部屋のシーンを含む。ユーザ302は、事前定義されたショートカットフレーズを含む発話を提供することによって、ルーチンを開始するためにクライアントデバイス304と対話することができる。例えば、ダイアログボックス306において、ユーザ302は、クライアントデバイス304によって検出され、「おはよう」というフレーズを含む発話を提供することによって、「おはよう」ルーチンを開始する。クライアントデバイス304に関連付けられた自動化されたアシスタントは、発話をキャプチャしたオーディオデータを処理し、発話が「おはよう」ルーチンのためのショートカットフレーズを含むと決定し、それに応じて、「おはよう」ルーチン内の各アクションの実行を引き起こすことができる。いくつかの実装形態では、自動化されたアシスタントは、クライアントデバイス304を介して、ルーチンの完了時に、ユーザがちょうど完了したルーチンにアクションを追加したいかどうかをユーザ302に尋ねることができる。例えば、ダイアログボックス308は、クライアントデバイス304がユーザの「おはよう」ルーチンを完了したことを示し、次いで、ユーザがユーザの「おはよう」ルーチンに照明制御を追加したいかどうかを尋ねる。追加的または代替的に、いくつかの実装形態では、クライアントデバイス304は、ルーチンを実行する前に、ユーザがユーザの「おはよう」ルーチンに照明制御を追加したいかどうかを尋ね、ルーチンを実行することの一部として新しいアクションを含めることができる。
多くの実装形態では、クライアントデバイス304に関連付けられた自動化されたアシスタントは、ユーザの過去のアクションに基づいて、ちょうど完了したルーチン(この場合、「おはよう」ルーチン)に新しいアクションを追加するためにこの推奨を決定することができる。例えば、推奨は、ユーザが、「おはよう」ルーチンの完了時にクライアントデバイス304を使用してユーザのスマートライトを常にオンにすることに基づいて決定され得る。追加的または代替的に、いくつかの実装形態では、ユーザは、ユーザの家にスマートライトを持っているが、自動化されたアシスタントを利用してスマートライトを制御する能力に気付いておらず、したがって、スマートライトを制御するために自動化されたアシスタントを以前に利用していない場合がある。そのような例では、自動化されたアシスタントは、そうでなければユーザが気付いていない場合がある機能をユーザルーチンに追加しようとして、ユーザが照明制御アクションを実行していないと決定したことに基づいて推奨を行うことができる。追加的または代替的に、いくつかの実装形態では、自動化されたアシスタントは、スマートライトの制御が、他のユーザが関連するルーチンにおいて頻繁に行うアクションであると決定したことに基づいて推奨を行うことができる。例えば、アシスタントは、(ユーザのデバイストポロジを介して決定される)照明制御に必要なデバイスを有するユーザの90%超がユーザの「おはよう」ルーチンにおいて照明制御アクションも有する場合、照明制御を「おはよう」ルーチンに追加するように推奨することができる。
ユーザは、提案されたアクションをルーチンに追加するかどうかを決定することができる。例えば、ダイアログボックス310は、ユーザが、提案されたアクション(すなわち、照明制御)をユーザの「おはよう」ルーチンに追加することを肯定的に決定したことを示す。しかしながら、ユーザは、推奨されたアクションを提案されたルーチンに追加する必要はない。いくつかの実装形態では、自動化されたアシスタントに関連付けられたクライアントデバイス304は、推奨されたアクションがルーチンに追加されたことを確認することができる。例えば、ダイアログボックス312は、照明制御がユーザの「おはよう」ルーチンに追加されたことを示す。しかしながら、様々な実装形態では、クライアントデバイス304は、ユーザがそのルーチンを次に実行するときに、アクションが特定のルーチンに追加されたことをユーザに確認することができる。いくつかの実装形態では、これは、ユーザが、ルーチンにおいて新しいアクションを依然として望んでおり、次回のルーチンで気が変わっていないことを確認するために、追加のバックアップを提供することができる。さらに、いくつかの実装形態では、ユーザは、ユーザのルーチンを変更する他者の許可を与えることができる。いくつかのそのような実装形態では、ユーザがルーチンを実行する前に新しいアクションが追加されたことを確認することは、ユーザが、ユーザの配偶者などの異なるユーザがユーザのルーチンに追加したアクションを確認することを可能にすることができる。
様々な実装形態による、自動化されたアシスタントルーチンにアクションを追加するかどうかを決定するためのプロセスを、図4に示す。プロセス400は、1つもしくは複数のクライアントデバイス、および/または自動化されたアシスタントと対話することができる任意の他の装置によって実行され得る。プロセスは、自動化されたアシスタントアクションを決定すること(402)を含む。いくつかの実装形態では、アクションは、自動化されたアシスタントとのユーザによる対話に応答して1つまたは複数回実行されたことに基づいて決定され得る。いくつかの実装形態では、アクションは、物理的デバイスを制御すること(例えば、スマートサーモスタットを制御すること、スマートコーヒーメーカーをオンにすること、スマートスピーカを制御することなど)、および/またはリモートエージェント(例えば、ユーザにデイリーエージェントを提供することができるカレンダーエージェント、ユーザにその日の天気を提供することができる天気エージェントなど)と対話することを含むことができる。いくつかの実装形態では、アクションは、ユーザによって過去に何度も実行されたことに基づいて決定され得る。例えば、特定のスマートライトの制御のためのアクションは、ユーザが就寝前に毎晩特定のスマートライトを制御することに基づいて、自動化されたアシスタントとの対話を介して、手動対話を介して、および/またはスマートライトの制御に特化したアプリとの対話を介して決定され得る。アクションは、少なくともしきい値の回数実行されたことに基づいて決定され得る。いくつかの実装形態では、ユーザが、アクションの実行を引き起こしたことが一度もない場合であっても、自動化されたアシスタントアクションは、決定され得る。例えば、スマートロックを制御することに関連するアクションは、スマートロックが、ユーザによってちょうどインストールされた、および/または自動化されたアシスタントによって制御可能なリンクされたデバイスのトポロジに追加されたとの決定に応答して決定され得る。例えば、ユーザは、新しく、いかなるルーチンにも関連付けられていないスマートロックをちょうどインストールした場合がある。
自動化されたアシスタントは、ユーザのためのルーチンを識別することができる(404)。ユーザは、多くのルーチンを有することができ、そのうちのいくつかは、重複する可能性がある。例えば、ユーザは、平日のための第1の「おはよう」ルーチンと、週末のための第2の「おはよう」ルーチンとを有することができる。追加的または代替的に、ユーザは、ユーザが仕事から帰宅したときから選択するいくつかのルーチンを有することができる。例えば、ユーザは、「のんびりする(Veg Out)」ルーチンと「本を読む」ルーチンとを有することができる。いくつかの実装形態では、ユーザのプロファィルが、識別され得、ユーザのプロファィルに割り当てられたルーチンのセットは、そのユーザに関連付けられたルーチンの識別されたセットであり得る。それらの実装形態のうちのいくつかでは、ユーザのプロファイルに関するルーチンのセットは、(402)におけるアクションがユーザのプロファイルに関して実行されたと決定したことに基づいて、(402)において決定されたアクションに対して識別される。図1に関して上記で説明した様々なセンサのいずれかが、自動化されたアシスタントへの入力に関連付けられたユーザプロファイル(例えば、オーディオデータに基づく音声マッチング)と、そのユーザプロファイルに関連付けられた自動化されたアシスタントルーチンとを識別するために使用され得る。様々な実装形態では、ルーチンのセットは、同じ世帯のメンバ間で共有され得る。例えば、ユーザおよびユーザの配偶者は、一緒に料理を楽しむ場合があり、両方のユーザが1つまたは複数の自動化されたアシスタントクライアントおよび1つまたは複数のクライアントデバイスと対話する共有された「グリルナイト(Grilling Night)」ルーチンを有する場合がある。例えば、グリルナイトルーチンは、キッチンのライトをオンにし、グリルが加熱を開始することができるように、屋外のグリルをオンにし、同じ音楽を再生するために、キッチンと屋外のグリルのエリアの両方においてスピーカをレンダリングするアクションを含むことができる。両方のユーザは、様々な時点でキッチンおよびグリルにおけるデバイスと対話することができる。いくつかの実装形態では、共有ルーチンであるので、「グリルナイト」ルーチンは、両方のユーザのユーザプロファイルに含まれ得、新しいアクションを新しいルーチンに潜在的に追加する場合、両方のユーザについて考慮されるべきである。両方のユーザは、新しいアクションを共有ルーチンに追加するプロセスを手動で行う必要はないので、一方のユーザがアクションを共有ルーチンに追加することを可能にすることは、計算リソースをさらに共有することができる。
自動化されたアシスタントルーチンのグループが、(402)において識別されたアクションを潜在的に追加する(404)において識別されたアクションのグループから選択され得る(406)。例えば、ユーザが、仕事から帰宅したときにアクションを実行している場合、「のんびりする」ルーチンおよび「本を読む」ルーチンは、アクションに追加する潜在的な自動化されたアシスタントルーチンである。しかしながら、自動化されたアシスタントは、すべての利用可能な自動化されたアシスタントルーチンのサブセットである自動化されたアシスタントルーチンのグループを選択するために、アクションをそれらのルーチンおよび/または他のルーチンと比較することができる。例えば、「のんびりする」ルーチンは、居間のテレビをオンにすることと、居間のライトをオフにすることとを含むことができる。対照的に、「本を読む」ルーチンは、書斎内の読書のためにカスタマイズされた照明を設定することと、書斎内でソフトジャズ音楽を再生することとを含むことができる。ユーザアクションが、その夜に放映している現在のテレビ番組に関連する情報を要求することである場合、多くの実装形態では、自動化されたアシスタントは、アクションを潜在的に追加するグループ内に含めるためのテレビを含むルーチンを選択する。さらに、例えば、ユーザのためのリンクされたデバイスのデバイストポロジを使用して、自動化されたアシスタントは、「本を読む」ルーチンに関するアクションのすべてに関連付けられている部屋である書斎に、表示することができるデバイスがないと決定することができる。結果として、アクションは、表示することができるデバイスに情報をプッシュすることを含み、「本を読む」ルーチンは、表示可能なデバイスがない部屋にのみ現在関連付けられているので、自動化されたアシスタントは、アクションを潜在的に追加するグループから「本を読む」ルーチンを除外することができる。いくつかの実装形態では、自動化されたアシスタントは、アクションを分析し、ユーザに関する、および/またはアクションを潜在的に追加するルーチンのグループを生成するためにルーチンが一般的に実行される場所に関するすべてのルーチン内のすべてのアクションと比較することができる。
いくつかの実装形態では、潜在的なアクションは、アクションを潜在的に追加するためにルーチン(またはルーチンのグループ)を選択する前に、多くのルーチンと比較され得る。例えば、ユーザは、「パーティタイム」、「おはよう」、「おやすみ」、および「車で家に帰る(Drive Home)」の4つのルーチンを有することができる。「パーティタイム」ルーチンは、居間のスピーカにパーティ音楽をレンダリングするアクションと、居間のネットワーク化されたライトをランダムな色のパターンで点滅するように調整するアクションと、「ローカルピザショップ」からサードパーティエージェントを介して配達するためのピザを注文するアクションとを含むことができる。「おはよう」ルーチンは、ユーザのためのその日のスケジュールをレンダリングするアクションと、寝室のネットワーク化されたライトをオンにするアクションと、ユーザに対してその日の天気をレンダリングするアクションと、ユーザに対してニュースの見出しをレンダリングするアクションとを含むことができる。ユーザのための「おやすみ」ルーチンは、家の中のすべてのネットワーク化されたライトをオフにすることと、ユーザに対して明日のスケジュールをレンダリングすることと、ユーザに対して明日の天気をレンダリングすることと、ユーザに対して2時間ホワイトノイズをレンダリングすることとを含むことができる。加えて、ユーザの「車で家に帰る」ルーチンは、ユーザに対して夕方のスケジュールをレンダリングするアクションと、ユーザが車で家に帰っていることを別のクライアントデバイスにおいてユーザの配偶者に通知するアクションと、ユーザが決定した株価のグループに関する情報をレンダリングするアクションと、ドライブの残りの間、ポッドキャストをレンダリングするアクションとを含むことができる。
例として、自動化されたアシスタントは、ユーザの4つのルーチンを再調査し、「ローカルコーヒーショップ」からコーヒーを注文するアクションを追加することを提案するルーチンを選択することができる。様々な実装形態では、自動化されたアシスタントは、新しいアクションと比較されたルーチン内に含まれるアクション、(もしあれば)新しいアクションとルーチンとの間の履歴的関係、(もしあれば)新しいアクションとルーチンとの間の時間的関係、他のユーザが一般に同様のルーチン内にアクションを有しているかどうかなどを含む、各ルーチンに関する様々な情報を分析することができる。「パーティタイム」ルーチンに関して、自動化されたアシスタントは、コーヒーを注文する新しいアクションをルーチンと比較することができる。他のユーザは、一般に、パーティを開く前に(すなわち、ユーザがパーティ中に起きているように)コーヒーを注文する場合がある。「パーティタイム」は、固有の時間的制約を有し、「ローカルピザショップ」が開いている間に実行される必要がある。ユーザは、ユーザが「パーティタイム」ルーチンを実行したのとほぼ同じ時間に過去にコーヒーを注文した場合がある(すなわち、ユーザは、家で仕事をしているときに午後のコーヒーを注文するが、ユーザは、午後の同じ時間にパーティも開く)ので、ユーザが「パーティタイム」ルーチンを実行したときの履歴データは、それがユーザへの提案であるべきであることを示す可能性がある。しかしながら、「ローカルピザショップ」から配達のためのピザを注文するアクションは、家を出て一杯のコーヒーを受け取りに行くことと矛盾する(すなわち、ユーザは、家を出てコーヒーの注文を受け取りに行く場合、ピザが配達されたときに家にいない場合がある)。したがって、自動化されたアシスタントは、一般に、「ローカルコーヒーショップ」から一杯のコーヒーを注文するアクションを「パーティタイム」ルーチンに追加することを推奨するべきではない。追加的または代替的に、いくつかの実装形態では、自動化されたアシスタントは、「パーティタイム」ルーチンを実行した後、ユーザの過去のアクションを確認することができる。
同様に、自動化されたアシスタントは、新しいコーヒー注文アクションと比較して「おはよう」ルーチンを分析することができる。他のユーザは、一般に、同様のルーチンにおいてコーヒーを注文する。「ローカルコーヒーショップ」は、ユーザがユーザの「おはよう」ルーチンを実行している間、開いている可能性がある。加えて、「おはよう」ルーチン内の前から存在するアクションは、コーヒーを注文することと競合しない(例えば、コーヒーメーカーをオンすることは、「おはよう」ルーチン内に含まれない)。さらに、ユーザが「おはよう」ルーチンを実行するのとほぼ同じ時間に朝にコーヒーを注文するユーザのアクションは、すべて、「ローカルコーヒーショップ」からコーヒー注文を行う新しいアクションを「おはよう」ルーチンに追加することを提案する指標となり得る。
対照的に、「おやすみ」ルーチンは、「ローカルコーヒーショップ」が閉まっているときに実行され得、これは、アクションを追加することを提案しないことのアシスタントへの指標となり得る。しかしながら、いくつかの実装形態では、自動化されたアシスタントは、ユーザの好みのコーヒーショップが閉まっている場合、コーヒーを注文する別のコーヒーショップの推奨を行うことができる。大部分のユーザは、コーヒーを注文することを同様の夕方のルーチン内に含めておらず、これは、自動化されたアシスタントに、アクションを提案しないように指示することができる。加えて、家全体のネットワーク化された照明をオフにし、ホワイトノイズを2時間再生するアクションを続けるなどの、「おやすみ」ルーチン内のユーザアクションは、一杯のコーヒーを受け取るために家を出ることと矛盾する。家全体のライトをオフにするアクション自体は、一杯のコーヒーを受け取ることと矛盾しないが、「おやすみ」ルーチン内の他のアクションと対になったアクションは、コーヒーを受け取るために家を出ることと矛盾する。
さらに、「車で家に帰る」ルーチンは、新しいコーヒー注文アクションと比較され得る。ユーザは、すでに車を運転しているので、「車で家に帰る」ルーチン内の任意のアクションと一杯のコーヒーを受け取ることとの間に矛盾は、存在しない。しかしながら、自動化されたアシスタントは、一般に、新しいアクションを追加するルーチンを提案する前に、多くの要因を再調査する。自動化されたアシスタントは、他のユーザの同様のルーチンと比較して、大部分のユーザが、仕事から車で家に帰るときに、夕方にコーヒーを注文しないことを確認することができる。これは、自動化されたアシスタントに、「車で家に帰る」ルーチンにアクションを追加することを提案しないことを示す可能性がある。加えて、コーヒーを注文するユーザの過去のアクションは、分析され得、自動化されたアシスタントは、ユーザが、午後3時以降にコーヒーを一度も注文しておらず、ユーザが、一般に、午後5時と午後6時との間に「車で家に帰る」ルーチンを開始することを確認することができる。ユーザが「車で家に帰る」ルーチンを実行する時間は、ユーザが「ローカルコーヒーショップ」からコーヒーを注文したときに関する履歴データと矛盾する。これは、自動化されたアシスタントに、コーヒーを注文する新しいアクションを「車で家に帰る」ルーチンに追加することを提案しないことをさらに示す可能性がある。
したがって、ユーザに関するすべてのルーチンを分析した後、この例における自動化されたアシスタントは、「ローカルコーヒーショップ」から一杯のコーヒーを注文する新しいアクションを追加することを提案するために「おはよう」ルーチンを選択すべきである。
自動化されたアシスタントは、アクションが、潜在的な自動化されたアシスタントルーチンのグループ内のルーチンのいずれかに追加されるべきであるかどうかを促すユーザインターフェース出力をレンダリングすることができる(408)。いくつかの実装形態では、ユーザは、同じアクションをいくつかのルーチンに追加してもよい。いくつかの実装形態では、ユーザは、アクションを単一のルーチンに追加したい場合がある。さらに、いくつかの実装形態では、ユーザは、上記で説明した図2と同様のアクションを実行した後、アクションがルーチンに追加されるべきかどうかを尋ねられ得る。追加的または代替的に、ユーザは、上記で説明した図3と同様の特定のルーチンを実行した後、アクションがルーチンに追加されるべきかどうかを尋ねられ得る。
(408)における出力に応答して、肯定的なユーザインターフェース入力が、受信された場合(410)、自動化されたアシスタントは、対応する自動化されたアシスタントルーチンにアクションを追加することができる。例えば、(408)における出力が、アクションが特定のルーチンに追加されるべきであるかどうかを促す場合、「はい」の発話は、アクションを特定のルーチンに追加させることができる。また、例えば、(408)における出力が、アクションが第1の特定のルーチンまたは第2の特定のルーチンのいずれに追加されるべきかを促す場合、「第1のもの」の発話は、アクションを第1の特定のルーチンに追加させることができるが、第2の特定のルーチンには追加させず、「第2のもの」の発話は、アクションを第2の特定のルーチンに追加させることができるが、第1の特定のルーチンには追加させず、「両方」の発話は、アクションを第1の特定のルーチンと第2の特定のルーチンの両方に追加させることができる。多くの実装形態では、自動化されたアシスタントは、特定のルーチンの名前をユーザに促すことができ、ユーザは、特定のルーチンの名前を言うことによって、アクションをルーチンに追加することができる。例えば、出力(408)が、おはようルーチンおよび車で仕事に行くルーチンにルーチンを追加する提案をユーザに促した場合、ルーチンの名前、例えば、「車で仕事に行く」の発話は、アクションを「車で仕事に行く」ルーチンに追加させることができる。いくつかの実装形態では、自動化されたアシスタントは、アクションをルーチンに自動的に追加することができ、アクションがルーチンに追加されるとユーザに合図することができる。いくつかの実装形態では、自動化されたアシスタントは、上記の図2における説明と同様に、前から存在するルーチン内の一連のアクションのどこに新しいアクションを追加するかを決定することができる。
図5は、例示的なコンピュータシステム510のブロック図である。コンピュータシステム510は、典型的には、バスサブシステム512を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ514を含む。これらの周辺デバイスは、例えば、メモリ525とファイル記憶サブシステム526とを含む記憶サブシステム524と、ユーザインターフェース出力デバイス520と、ユーザインターフェース入力デバイス522と、ネットワークインターフェースサブシステム516とを含んでもよい。入力デバイスおよび出力デバイスは、コンピュータシステム510とのユーザ対話を可能にする。ネットワークインターフェースサブシステム516は、外部ネットワークへのインターフェースを提供し、他のコンピュータシステム内の対応するインターフェースデバイスに結合される。
ユーザインターフェース入力デバイス522は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィックタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンなどのオーディオ入力デバイス、および/または他のタイプの入力デバイスを含んでもよい。一般に、「入力デバイス」という用語の使用は、コンピュータシステム510または通信ネットワークに情報を入力するすべての可能なタイプのデバイスおよび方法を含むことを意図している。
ユーザインターフェース出力デバイス520は、ディスプレイサブシステム、プリンタ、ファックス機、またはオーディオ出力デバイスなどの非視覚的ディスプレイを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投影デバイス、または視覚的画像を作成するためのなにか他のメカニズムを含んでもよい。ディスプレイサブシステムはまた、オーディオ出力デバイスを介するなどして、非視覚的ディスプレイを提供してもよい。一般に、「出力デバイス」という用語の使用は、コンピュータシステム510からユーザまたは別のマシンもしくはコンピュータシステムに情報を出力するためのすべての可能なタイプのデバイスおよび方法を含むことを意図している。
記憶サブシステム524は、本明細書で説明したモジュールのうちのいくつかまたはすべての機能を提供するプログラミング構造およびデータ構造を記憶する。例えば、記憶サブシステム524は、図1の選択された態様、および/もしくはプロセス400、本明細書で説明した任意の動作を実行するため、ならびに/またはクラウドベースの自動化された構成要素116、自動化されたアシスタント112、クライアントデバイス102、および/もしくは本明細書で説明した任意の他のデバイスもしくはアプリケーションを実装するためのロジックを含んでもよい。
これらのソフトウェアモジュールは、一般に、プロセッサ514によって単独で、または他のプロセッサと組み合わせて実行される。記憶サブシステム524において使用されるメモリ525は、プログラム実行中の命令およびデータの記憶のためのメインランダムアクセスメモリ(RAM)530と、固定命令が記憶されている読み取り専用メモリ(ROM)532とを含むいくつかのメモリを含むことができる。ファイル記憶サブシステム526は、プログラムファイルおよびデータファイルのための永続的なストレージを提供することができ、ハードディスクドライブ、関連するリムーバブルメディアを伴うフロッピーディスクドライブ、CD-ROMドライブ、光学ドライブ、またはリムーバブルメディアカートリッジを含んでもよい。特定の実装形態の機能を実装するモジュールは、ファイル記憶サブシステム426によって、記憶サブシステム524内に、またはプロセッサ514によってアクセス可能な他のマシン内に記憶され得る。
バスサブシステム512は、コンピュータシステム510の様々な構成要素およびサブシステムを意図されたように互いに通信させるためのメカニズムを提供する。バスサブシステム512は、単一のバスとして概略的に示されているが、バスサブシステムの代替実装形態は、複数のバスを使用してもよい。
コンピュータシステム510は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む様々なタイプのものであり得る。コンピュータおよびネットワークの絶えず変化する性質のために、図5に示すコンピュータシステム510の説明は、いくつかの実装形態を説明する目的のための特定の例としてのみ意図されている。図5に示すコンピュータシステムよりも多いまたは少ない構成要素を有するコンピュータシステム510の多くの他の構成が、可能である。
本明細書で説明したシステムが、ユーザ(または、本明細書ではしばしば「参加者」と呼ばれる)に関する個人情報を収集するか、または個人情報を利用する可能性がある状況では、ユーザは、プログラムまたは機能がユーザ情報(例えば、ユーザの社会的ネットワーク、社会的行為または活動、職業、ユーザの好み、またはユーザの現在の地理的位置に関する情報)を収集するかどうかを制御する機会、またはユーザにより関連性がある可能性があるコンテンツサーバからのコンテンツを受信するかどうかおよび/もしくはどのように受信するかを制御する機会を提供され得る。また、特定のデータは、個人を特定し得る情報が除去されるように、記憶または使用される前に1つまたは複数の方法で処理され得る。例えば、ユーザの識別情報は、個人を特定し得る情報がユーザに関して決定され得ないように処理され得、またはユーザの特定の地理的位置が決定され得ないように、ユーザの地理的位置が、地理的位置情報が取得される場所(都市、郵便番号、または州レベルなど)で一般化され得るように処理され得る。したがって、ユーザは、ユーザに関する情報がどのように収集および/または使用されるかについて制御してもよい。