(57)【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサによって実施される方法であって、
ユーザのクライアントデバイスによって伝送されるユーザ入力を、1つまたは複数のネットワークインターフェースを介して受け取るステップであって、前記ユーザ入力が自由形式であり、前記クライアントデバイスによって実装されている自動アシスタントインターフェースに向けられている、ステップと、
前記ユーザ入力の処理に基づいて、前記ユーザ入力が意図されているアクションを示していると特定するステップと、
前記意図されているアクションに基づいて、サードパーティーエージェントのグループから特定のサードパーティーエージェントを選択し、前記意図されているアクションを実行するステップであって、前記特定のサードパーティーエージェントを選択するステップが、前記特定のサードパーティーエージェントが前記意図されているアクションを実行することができると特定するステップに基づく、ステップと、
1つまたは複数の前記ネットワークインターフェースを介して、前記自動アシスタントインターフェースを介して発生して前記意図されているアクションを実行する、前記クライアントデバイスと前記特定のサードパーティーエージェントとの間における対話を容易にするステップであって、前記対話を容易にするステップが、前記意図されているアクションに関連付けて格納されているパラメータに関する値を解決するステップを含む、ステップと、
前記クライアントデバイスと特定のサードパーティーエージェントとの間の前記対話を容易にするステップ中に、
1つまたは複数の前記ネットワークインターフェースを介して、前記ユーザの前記クライアントデバイスによって伝送されたさらなるユーザ入力を受け取るステップと、
前記さらなるユーザ入力が別のサードパーティーエージェントと対話したいという要望を示していると特定するステップと、
前記さらなるユーザ入力が別のサードパーティーエージェントと対話したいという要望を示していると特定したことに応答して、
前記パラメータに関する前記値を含む追加のサードパーティー呼び出し要求を、サードパーティーエージェントの前記グループの代替サードパーティーエージェントへ伝送するステップと
を含む方法。
【請求項２】
前記対話を容易にするステップが、
1つまたは複数の前記ネットワークインターフェースを介して、前記対話中に受け取った追加のユーザ入力を、前記特定のサードパーティーエージェントに伝送するステップと、
1つまたは複数の前記ネットワークインターフェースを介して、前記追加のユーザ入力に応答するコンテンツを、前記特定のサードパーティーエージェントから受け取るステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記意図されているアクションに関連付けて格納されている前記パラメータに関する前記値を解決するステップが、
前記対話中に受け取った前記追加のユーザ入力に基づく前記パラメータに関する前記値を解決するステップ
を含む、請求項2に記載の方法。
【請求項４】
前記対話中に受け取った前記追加のユーザ入力が、前記意図されているアクションに関連付けて格納されている追加のパラメータに関する追加の値をさらに指定する、請求項2に記載の方法。
【請求項５】
前記追加のサードパーティー呼び出し要求が、前記追加のパラメータに関する前記追加の値をさらに含む、請求項4に記載の方法。
【請求項６】
前記さらなるユーザ入力が別のサードパーティーエージェントと対話したいという要望を示していると特定するステップが、
前記さらなるユーザ入力が前記特定のサードパーティーエージェントに向けられていないと特定するステップと、
前記さらなるユーザ入力に基づいて、サードパーティーエージェントの前記グループの前記代替サードパーティーエージェントを識別するステップと
を含む、請求項1に記載の方法。
【請求項７】
1つまたは複数の前記ネットワークインターフェースを介して、前記自動アシスタントインターフェースを介して発生して、前記パラメータに関する前記値を使用して前記意図されているアクションまたは追加のアクションを実行する、前記クライアントデバイスと前記特定のサードパーティーエージェントとの間における対話を容易にするステップ
をさらに含む、請求項1に記載の方法。
【請求項８】
前記特定のサードパーティーエージェントおよび前記代替サードパーティーエージェントが異なるサービスセクタに属する、請求項1に記載の方法。
【請求項９】
前記特定のサードパーティーエージェントが所与のサービスセクタの第1のサブセクタに属し、前記代替サードパーティーエージェントが前記所与のサービスセクタの第2のサブセクタに属する、請求項1に記載の方法。
【請求項１０】
システムであって、
少なくとも1つのプロセッサと、
少なくとも1つの命令を格納するメモリであって、命令が実行されると、前記少なくとも1つのプロセッサに、
ユーザのクライアントデバイスによって伝送されるユーザ入力を、1つまたは複数のネットワークインターフェースを介して受け取ることであって、前記ユーザ入力が自由形式であり、前記クライアントデバイスによって実装されている自動アシスタントインターフェースに向けられている、受け取ることと、
前記ユーザ入力の処理に基づいて、前記ユーザ入力が意図されているアクションを示していると特定することと、
前記意図されているアクションに基づいて、サードパーティーエージェントのグループから特定のサードパーティーエージェントを選択し、前記意図されているアクションを実行することであって、前記特定のサードパーティーエージェントを選択することが、前記特定のサードパーティーエージェントが前記意図されているアクションを実行することができると特定することに基づく、ことと、
1つまたは複数の前記ネットワークインターフェースを介して、前記自動アシスタントインターフェースを介して発生して前記意図されているアクションを実行する、前記クライアントデバイスと前記特定のサードパーティーエージェントとの間における対話を容易にすることであって、前記対話を容易にするための前記命令が、前記少なくとも1つのプロセッサに前記意図されているアクションに関連付けて格納されているパラメータに関する値を解決させる、ことと、
前記クライアントデバイスと前記特定のサードパーティーエージェントとの間の前記対話を容易にすることの中で、
1つまたは複数の前記ネットワークインターフェースを介して、前記ユーザの前記クライアントデバイスによって伝送されたさらなるユーザ入力を受け取ることと、
前記さらなるユーザ入力が別のサードパーティーエージェントと対話したいという要望を示していると特定することと、
前記さらなるユーザ入力が別のサードパーティーエージェントと対話したいという要望を示していると特定したことに応答して、
前記パラメータに関する前記値を含む追加のサードパーティー呼び出し要求を、サードパーティーエージェントの前記グループの代替サードパーティーエージェントへ伝送することと
を行わせるメモリと
を備える、システム。
【請求項１１】
前記対話を容易にするための前記命令が、前記少なくとも1つのプロセッサに、
1つまたは複数の前記ネットワークインターフェースを介して、前記対話中に受け取った追加のユーザ入力を、前記特定のサードパーティーエージェントに伝送することと、
1つまたは複数の前記ネットワークインターフェースを介して、前記追加のユーザ入力に応答するコンテンツを、前記特定のサードパーティーエージェントから受け取ることと
をさらに行わせる、請求項10に記載のシステム。
【請求項１２】
前記意図されているアクションに関連付けて格納されている前記パラメータに関する前記値を解決するための前記命令が、前記少なくとも1つのプロセッサに、
前記対話中に受け取った前記追加のユーザ入力に基づく前記パラメータに関する前記値を解決すること
を行わせる、請求項11に記載のシステム。
【請求項１３】
前記対話中に受け取った前記追加のユーザ入力が、前記意図されているアクションに関連付けて格納されている追加のパラメータに関する追加の値をさらに指定する、請求項11に記載のシステム。
【請求項１４】
前記追加のサードパーティー呼び出し要求が、前記追加のパラメータに関する前記追加の値をさらに含む、請求項13に記載のシステム。
【請求項１５】
前記さらなるユーザ入力が別のサードパーティーエージェントと対話したいという要望を示していると特定するための前記命令が、前記少なくとも1つのプロセッサに、
前記さらなるユーザ入力が前記特定のサードパーティーエージェントに向けられていないと特定することと、
前記さらなるユーザ入力に基づいて、サードパーティーエージェントの前記グループの前記代替サードパーティーエージェントを識別することと
を行わせる、請求項10に記載のシステム。
【請求項１６】
前記命令が、前記少なくとも1つのプロセッサに、
1つまたは複数の前記ネットワークインターフェースを介して、前記自動アシスタントインターフェースを介して発生して、前記パラメータに関する前記値を使用して前記意図されているアクションまたは追加のアクションを実行する、前記クライアントデバイスと前記特定のサードパーティーエージェントとの間における対話を容易にすること
をさらに行わせる、請求項10に記載のシステム。
【請求項１７】
前記特定のサードパーティーエージェントおよび前記代替サードパーティーエージェントが異なるサービスセクタに属する、請求項10に記載のシステム。
【請求項１８】
前記特定のサードパーティーエージェントが所与のサービスセクタの第1のサブセクタに属し、前記代替サードパーティーエージェントが前記所与のサービスセクタの第2のサブセクタに属する、請求項10に記載のシステム。
【請求項１９】
命令を格納する非一時的なコンピュータ可読記憶媒体であって、命令が実行されると、少なくとも1つのプロセッサに、
ユーザのクライアントデバイスによって伝送されるユーザ入力を、1つまたは複数のネットワークインターフェースを介して受け取ることであって、前記ユーザ入力が自由形式であり、前記クライアントデバイスによって実装されている自動アシスタントインターフェースに向けられている、受け取ることと、
前記ユーザ入力の処理に基づいて、前記ユーザ入力が意図されているアクションを示していると特定することと、
前記意図されているアクションに基づいて、サードパーティーエージェントのグループから特定のサードパーティーエージェントを選択し、前記意図されているアクションを実行することであって、前記特定のサードパーティーエージェントを選択することが、前記特定のサードパーティーエージェントが前記意図されているアクションを実行することができると特定することに基づく、ことと、
1つまたは複数の前記ネットワークインターフェースを介して、前記自動アシスタントインターフェースを介して発生して前記意図されているアクションを実行する、前記クライアントデバイスと前記特定のサードパーティーエージェントとの間における対話を容易にすることであって、前記対話を容易にするための前記命令が、前記少なくとも1つのプロセッサに前記意図されているアクションに関連付けて格納されているパラメータに関する値を解決させる、ことと、
前記クライアントデバイスと前記特定のサードパーティーエージェントとの間の前記対話を容易にすることの中で、
1つまたは複数の前記ネットワークインターフェースを介して、前記ユーザの前記クライアントデバイスによって伝送されたさらなるユーザ入力を受け取ることと、
前記さらなるユーザ入力が別のサードパーティーエージェントと対話したいという要望を示していると特定することと、
前記さらなるユーザ入力が別のサードパーティーエージェントと対話したいという要望を示していると特定したことに応答して、
前記パラメータに関する前記値を含む追加のサードパーティー呼び出し要求を、サードパーティーエージェントの前記グループの代替サードパーティーエージェントへ伝送することと
を行わせる、非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は全般的に、サードパーティー(3P)エージェントを選択的に呼び出すことを対象としている。
【背景技術】
【０００２】
自動アシスタント(「パーソナルアシスタント」、「モバイルアシスタント」、または「チャットボット」としても知られている)は、さまざまなクライアントデバイス、たとえば、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス、自動車システム、スタンドアロンのパーソナルアシスタントデバイスなどを介してユーザによって対話されることが可能である。自動アシスタントは、ユーザからの入力(たとえば、タイプされたおよび/または話された自然言語入力)を受け取り、応答コンテンツ(たとえば、視覚的なおよび/または可聴式の自然言語出力)を用いて応答する。クライアントデバイスを介して対話される自動アシスタントは、クライアントデバイスそのものを介して、および/またはクライアントデバイスとネットワーク通信状態にある1つもしくは複数のリモートコンピューティングデバイス(たとえば、「クラウド」内のコンピューティングデバイス)を介して実施されることが可能である。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書は全般的に、サードパーティー(3P)エージェントを選択的に呼び出すことを対象としている。いくつかの実施態様は、自動アシスタントとユーザとの間における動的なダイアログ中に自動アシスタントによって特定される意図されているアクションを達成するために自動アシスタントによって特定の3Pエージェントを選択的に呼び出すことを対象としている。それらの実施態様のうちのいくつかにおいては、特定の3Pエージェントは、動的なダイアログ中に特定されるパラメータに関する値を用いて呼び出され、ならびに/または特定の3Pエージェントは、パラメータに関する特定された値に基づいて、および/もしくはその他の基準に基づいて呼び出しのために複数の候補3Pエージェントから選択される。それらの実施態様のいくつかのバージョンにおいては、自動アシスタントは、パラメータに関する特定された値を含む3P呼び出し要求を特定の3Pエージェントへ伝送することによって特定の3Pエージェントを呼び出す。たとえば、自動アシスタントは、1つまたは複数のネットワークを介して3Pエージェントへ3P呼び出し要求を伝送することが可能であり、アプリケーションプログラミングインターフェース(API)を利用して3Pエージェントとインターフェース接続することが可能である。
【０００４】
特定の3Pエージェントが呼び出された場合には、特定の3Pエージェントは、動的なダイアログ内に含めるための出力を生成するために使用されることが可能である3P応答コンテンツを生成する。呼び出し要求が、パラメータに関する特定された値を含んでいる場合には、特定の3Pエージェントは、3P応答コンテンツを生成する際にそれらの値を考慮に入れることが可能である。これは、意図されているアクションが特定の3Pエージェントを介してさらに迅速に達成されることを可能にすることができ、それは、さまざまな計算リソース(たとえば、値の提供がなければ必要となる可能性がある追加の「順番」によって消費されるネットワークトラフィック)を節約することが可能である。
【０００５】
その上、パラメータに関する特定された値が、特定の3Pエージェントを選択するために利用された場合には、それは、選択された特定の3Pエージェントが、特定された値に基づいて、意図されているアクションを実行することができるということを確実にすることが可能である。たとえば、パラメータに関する特定された値は、意図されているアクションを実行することが可能である複数の候補3Pエージェントのそれぞれに関して定義されているパラメータに関する対応する値と比較されることが可能であり、特定された値に対応する値を有する3Pエージェントのみが、選択用として考慮されることが可能である。これは、呼び出しのために選択された特定の3Pエージェントが、意図されているアクションを実行することができないというリスクを軽減することが可能であり、それは、さまざまな計算リソースを節約することが可能である。たとえば、それは、ネットワークリソースおよび/またはプロセッサリソースを節約することが可能であり、さもなければ、ネットワークリソースおよび/またはプロセッサリソースは、意図されているアクションを実行するために3Pエージェントを利用しようとする最初の失敗した試み(それに次いで、意図されているアクションを実行しようとする別の試みにおいて代替3Pエージェントを呼び出すことが続く)によって消費される可能性がある。
【０００６】
いくつかの状況においては、特定の3Pエージェントの呼び出しに応答して、呼び出し要求とともに提供されるパラメータに関する値は、特定の3Pエージェントが、ユーザとのさらなるダイアログに従事することなく、意図されているアクションを達成することを可能にすることができる。それらの状況においては、3Pエージェントは、意図されているアクションが達成されたことを示す、および/または意図されているアクションの達成に関連した追加の情報を示す応答コンテンツを提供することが可能である。
【０００７】
いくつかの状況においては、特定の3Pエージェントの呼び出しに応答して、動的なダイアログは、特定の3Pエージェントへ少なくとも一時的に(実際にまたは実質的に)転送されることが可能であり、それによって3Pエージェントは、動的なダイアログの内容を少なくとも一時的に「操作する」。たとえば、3P応答コンテンツに基づく出力が、ダイアログの推進においてユーザに提供されることが可能であり、さらなるユーザ入力が、3P応答コンテンツに応答して受け取られることが可能である。さらなるユーザ入力(またはその変換)は、特定の3Pエージェントに提供されることが可能である。特定の3Pエージェントは、動的なダイアログの推進において提供するためのさらなる出力を生成するために使用されることが可能であるさらなる応答コンテンツを生成する際に自分自身のセマンティックエンジンおよび/またはその他のコンポーネントを利用することが可能である。この一般的なプロセスは、たとえば、3Pエージェントダイアログを終了させる応答コンテンツ(たとえば、プロンプトの代わりに、回答または解決)を3Pエージェントが提供するときや、ユーザの追加のユーザインターフェース入力が3Pエージェントダイアログを終了させる(たとえば、代わりに、自動アシスタントまたは別の3Pエージェントからの応答を呼び出す)ときなどまで続くことが可能である。
【０００８】
本明細書において記述されているように、いくつかの状況においては、自動アシスタントは、ダイアログが3Pエージェントへ実質的に転送される際に依然として仲介者としての役割を果たすことが可能である。たとえば、ユーザの自然言語入力が音声入力である場合に仲介者としての役割を果たす際に、自動アシスタントは、その音声入力をテキストへ変換し、そのテキスト(および任意選択でそのテキストの注釈)を3Pエージェントに提供し、3Pエージェントから3P応答コンテンツを受け取り、3P応答コンテンツに基づく出力を、ユーザへ提示するために提供することが可能である。また、たとえば、仲介者としての役割を果たす際に、自動アシスタントは、ユーザ入力および/または3P応答コンテンツを分析して、3Pエージェントとのダイアログが終了されるべきであるかどうか、代替3Pエージェントへ転送されるべきであるかどうかなどを特定することが可能である。やはり本明細書において記述されているように、いくつかの状況においては、ダイアログは、3Pエージェントへ実際に転送され(いったん転送されると、自動アシスタントが仲介者としての役割を果たすことなく)、(たとえば、3Pエージェントを介した意図されているアクションの完了に応答した)3Pエージェントによる終了などの1つまたは複数の状況の発生時に自動アシスタントへ返送されることが可能である。
【０００９】
本明細書において記述されている実施態様は、自動アシスタントがユーザとのダイアログに基づいて適切な3Pエージェントを選択すること、およびダイアログにおいてユーザによって示されているユーザの意図されているアクションを達成するためにその3Pエージェントを呼び出すことを可能にする。これらの実施態様は、3Pエージェントを明示的にトリガーするための「ホットワード」をユーザが知ることを必要とせずに、および/または3Pエージェントが存在することをユーザがはじめに知ることさえ必要とせずに、ユーザが自動アシスタントとの対話を介して3Pエージェントを手配することを可能にすることができる。その上、複数の実施態様は、自動アシスタントが、ユーザとのダイアログに基づいて、(意図されているアクションに関連付けられている)さまざまなパラメータに関する値を特定し、3Pエージェントを呼び出すことと併せてそれらのパラメータを3Pエージェントに渡すことを可能にする。その上、これらの実施態様は、ユーザが、複数の異なるサービスセクタにわたるアクションの実行を可能にする複数の異なる3Pエージェントのうちのいずれかと対話するために共通の自動アシスタントインターフェース(たとえば、可聴式の/音声ベースのインターフェースおよび/またはグラフィカルインターフェース)を利用することを可能にすることができる。たとえば、共通の自動アシスタントインターフェースは、「レストラン予約」サービスセクタにおける意図されているアクションを実行する複数の3Pエージェントのうちのいずれか1つを手配するために、「プロフェッショナルサービス購入」サービスセクタにおける意図されているアクションを実行する複数の3Pエージェントのうちのいずれか1つを手配するために、「旅行サービス購入」サービスセクタにおける意図されているアクションを実行する複数の3Pエージェントのうちのいずれか1つを手配するために、および「インタラクティブゲーム」サービスセクタにおける意図されているアクションを実行する複数の3Pエージェントのうちのいずれか1つを手配するために利用されることが可能である。
【００１０】
本明細書において使用される際には、3Pエージェントは、自動アシスタントを管理する当事者とは別個の当事者によって管理される1つまたは複数のコンピューティングデバイスおよび/または関連付けられているソフトウェアを参照する。3Pエージェントは、(たとえば、APIを介してネットワークを経由して)自動アシスタントからのコンテンツを受け取るように構成されている。コンテンツを受け取ったことに応答して、3Pエージェントは、受け取られたコンテンツに基づいて3P応答コンテンツを生成し、3P応答コンテンツに基づく出力の提供のために3P応答コンテンツを伝送する。たとえば、3Pエージェントは、3P応答コンテンツに基づく、自動アシスタントによる出力の提供のために3P応答コンテンツを自動アシスタントへ伝送することが可能である。3Pエージェントは、たとえば、レストランの予約を取ること、食べ物を注文すること、映画のチケットを購入すること、サービスを購入すること、サービス(たとえば、移送)を要求すること、ユーザのテキスト、Eメール、またはその他の電子通信を管理すること、ユーザのタスク(たとえば、飲み物をミックスすること、蛇口の水漏れを直すこと)に関するガイダンスを提供すること、ユーザとのインタラクティブゲームに従事すること等などの1つまたは複数の特定化された意図されているアクションを実行するように構成されることがしばしば可能である。
【００１１】
ユーザによってユーザインターフェース入力デバイスを介して自動アシスタントに、および/または3Pエージェントに提供されることが可能であるさまざまなタイプの入力が、本明細書において記述されている。いくつかの場合においては、入力は、ユーザによって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の意図されているアクションに関連付けて格納されているすべての第1の必須パラメータに関する値を解決するステップを含む。この方法はさらに、第1の自然言語入力によって示されている意図されているアクションをそれぞれ実行することができるサードパーティーエージェントのグループから特定のサードパーティーエージェントをローカルエージェントによって選択するステップを含む。この方法はさらに、ローカルエージェントによって、第1の必須パラメータに関する値を解決した後に、第1の必須パラメータに関する解決された値に基づいてサードパーティーエージェントを呼び出すステップと、自動アシスタントインターフェースを介して発生してサードパーティーエージェントによって操作される、クライアントデバイスとサードパーティーエージェントとの間における対話を容易にするステップとを含む。
【００２２】
いくつかの実施態様においては、この方法はさらに、ユーザのクライアントデバイスからの第2の自然言語入力を、ネットワークインターフェースのうちの1つまたは複数を介してローカルエージェントによって受け取るステップであって、第2の自然言語入力が自由形式であり、自動アシスタントインターフェースに向けられている、ステップと、第2の自由形式の自然言語入力が、第2のサービスセクタに向けられている第2の意図されているアクションを示しているとローカルエージェントによって特定するステップであって、第2のサービスセクタが、第1のサービスセクタとは異なる、ステップと、ローカルエージェントによって、ネットワークインターフェースのうちの1つまたは複数を介して、クライアントデバイスの自動アシスタントインターフェースを介してユーザと対話して、第2の意図されているアクションに関連付けて格納されているすべての第2の必須パラメータに関する第2の値を解決するステップと、自然言語入力によって示されている第2の意図されているアクションをそれぞれ実行することができる追加のサードパーティーエージェントのグループから追加の特定のサードパーティーエージェントをローカルエージェントによって選択するステップであって、追加のサードパーティーエージェントのグループが、サードパーティーエージェントのグループとは異なる、ステップと、ローカルエージェントによって、第2の必須パラメータに関する第2の値を解決した後に、第2の必須パラメータに関する解決された第2の値に基づいて追加のサードパーティーエージェントを呼び出すステップと、自動アシスタントインターフェースを介して発生して追加のサードパーティーエージェントによって操作される、クライアントデバイスと追加のサードパーティーエージェントとの間における対話を容易にするステップとを含む。
【００２３】
いくつかの実施態様においては、1つまたは複数のプロセッサによって実行される方法が提供され、クライアントデバイスを介してユーザによって提供される最初の音声入力を受け取るステップと、音声/テキスト変換を実行して、最初の音声入力を最初のテキストへ変換するステップと、意図されているアクションを最初のテキストに基づいて特定するステップと、意図されているアクションにとって必須であるとして格納されている必須パラメータを識別するステップと、最初のテキストが必須パラメータに関するいずれかの値の指定を欠いていると特定するステップと、最初のテキストが必須パラメータに関するいずれかの値の指定を欠いていると特定したことに応答して、必須パラメータに基づいて自然言語プロンプトを生成するステップと、最初の音声入力への返答として自然言語プロンプトを提供するステップであって、プロンプトが、クライアントデバイスのユーザインターフェース出力デバイスを介してユーザへ提示するために提供される、ステップと、自然言語プロンプトを提供したことに応答してユーザによって提供される追加の自然言語入力を受け取るステップと、追加の自然言語入力に基づいてパラメータに関する値を特定するステップと、意図されているアクションを実行することができるサードパーティーエージェントのグループの特定のサードパーティーエージェントを選択するステップと、必須パラメータに関する値を含むサードパーティー呼び出し要求を伝送するステップであって、1つまたは複数のネットワークインターフェースを介して特定のサードパーティーエージェントに対して行われる、ステップと、意図されているアクションおよび値を伝送したことに応答してサードパーティーエージェントから応答コンテンツを受け取るステップであって、ネットワークインターフェースのうちの1つまたは複数を介する、ステップと、応答コンテンツに基づく出力を、ユーザへ提示するために提供するステップと、出力を提供したことに応答してユーザによって提供されるさらなる追加の自然言語入力を受け取るステップと、追加の音声/テキスト変換を実行して、さらなる追加の自然言語入力をさらなるテキストへ変換するステップと、さらなるテキストを特定のサードパーティーエージェントへ伝送するステップとを含む。
【００２４】
いくつかの実施態様においては、1つまたは複数のプロセッサによって実行される方法が提供され、クライアントデバイスによって伝送される入力を、1つまたは複数のネットワークインターフェースを介して受け取るステップであって、入力が、自由形式の自然言語ユーザ入力である、ステップと、意図されているアクションを入力に基づいて特定するステップと、意図されているアクションにとって必須であるとして格納されている必須パラメータを識別するステップと、入力が必須パラメータに関するいずれかの値の指定を欠いていると特定するステップと、最初のテキストが必須パラメータに関するいずれかの値の指定を欠いていると特定したことに応答して、意図されているアクションにとって任意選択であるとして格納されている任意選択のパラメータについての入力を懇請しない、必須パラメータに基づくプロンプトを生成するステップと、入力への返答として自然言語プロンプトをクライアントデバイスへ伝送するステップと、プロンプトに応答してクライアントデバイスによって伝送される追加の入力を、ネットワークインターフェースのうちの1つまたは複数を介して受け取るステップであって、追加の入力が、自由形式の自然言語ユーザ入力である、ステップと、追加の自然言語入力に基づいてパラメータに関する値を特定するステップと、追加の自然言語入力に基づいて任意選択のパラメータに関する追加の値を特定するステップと、値および追加の値の両方に基づいて、意図されているアクションを実行することができる特定のサードパーティーエージェントを選択するステップと、値および追加の値の両方を含むサードパーティー呼び出し要求を伝送するステップとを含む。伝送するステップは、ネットワークインターフェースのうちの1つまたは複数を介して特定のサードパーティーエージェントに対して行われる。
【００２５】
加えて、いくつかの実施態様は、1つまたは複数のコンピューティングデバイスの1つまたは複数のプロセッサを含み、1つまたは複数のプロセッサは、関連付けられているメモリ内に格納されている命令を実行するように動作可能であり、それらの命令は、上述の方法のうちのいずれかの実行をもたらすように構成されている。いくつかの実施態様はまた、上述の方法のうちのいずれかを実行するために1つまたは複数のプロセッサによって実行可能なコンピュータ命令を格納している1つまたは複数の非一時的なコンピュータ可読ストレージメディアを含む。
【００２６】
本明細書においてさらに詳細に記述されている前述のコンセプトおよび追加のコンセプトのすべての組合せは、本明細書において開示されている主題の一部であると考えられるということを理解されたい。たとえば、本開示の末尾に現れる特許請求される主題のすべての組合せは、本明細書において開示されている主題の一部であると考えられる。
【図面の簡単な説明】
【００２７】
【図１】本明細書において開示されている実施態様が実施されることが可能である例示的な環境のブロック図である。
【図２Ａ】本明細書において開示されている実施態様による例示的な方法を示すフローチャートである。
【図２Ｂ】図2Aのフローチャートのブロックのいくつかの実施態様をさらに詳細に示すフローチャートである。
【図３】本明細書において開示されている実施態様による、サードパーティーエージェントによって実行されることが可能である例示的な方法を示すフローチャートである。
【図４】本明細書において開示されている実施態様による、ユーザ、クライアントデバイス、および、ユーザと、クライアントデバイスに関連付けられている自動アシスタントと、サードパーティーエージェントとの間における例示的なダイアログを示す図である。
【図５】本明細書において開示されている実施態様による、ユーザ、クライアントデバイス、および、ユーザと、クライアントデバイスに関連付けられている自動アシスタントと、サードパーティーエージェントとの間における例示的なダイアログを示す図である。
【図６】本明細書において開示されている実施態様による、ユーザ、クライアントデバイス、および、ユーザと、クライアントデバイスに関連付けられている自動アシスタントと、サードパーティーエージェントとの間における例示的なダイアログを示す図である。
【図７】本明細書において開示されている実施態様による、追加のクライアントデバイス、および、クライアントデバイスのユーザと、クライアントデバイスに関連付けられている自動アシスタントと、サードパーティーエージェントとの間における例示的なダイアログを示す図である。
【図８】コンピューティングデバイスの例示的なアーキテクチャーを示す図である。
【発明を実施するための形態】
【００２８】
いくつかの状況においては、自動アシスタントを介して特定のサードパーティー(3P)エージェントを呼び出すために、ユーザは、特定の3Pエージェントを明示的に呼び出す入力を提供しなければならない。たとえば、「Hypothetical Agent」と名付けられている「映画チケット購入」用3Pエージェントを呼び出すために、ユーザは、「Hypothetical Agentでチケットを注文する」など、その3Pエージェント用の「ホットワード/フレーズ」を話すことを知っていなければならない。そのような明示的な呼び出しは、どの3Pエージェントがユーザの意図されているアクションにとって最も適切であるかをユーザが最初から知っていることを必要とし、その3Pエージェントとの対話を介した意図されているアクションの試みられる解決のためにユーザを直接その3Pエージェントへ送信する。
【００２９】
しかしながら、ユーザによって直接呼び出された3Pエージェントが、意図されているアクションを、ユーザによって所望されている様式で実行することができないケースがしばしばあり得る。これは、ユーザリソースおよび計算リソースを浪費する場合がある。なぜならユーザは、はじめに3Pエージェントと対話し、その3Pエージェントが適切ではないと特定し、次いで別の3Pエージェントとの対話を介して、意図されているアクションを実行することを試みなければならないからである。その上、さまざまな3Pエージェントを利用できることにユーザが気づいていないケースがしばしばあり得、さまざまな自動アシスタントインターフェースにとっては、利用可能な3Pエージェントおよび関連付けられている機能性のリストを、しばしば制限されている自動アシスタントインターフェースにおいてユーザに明示的に提供することは、非実用的であるおよび/または望ましくない場合がある。たとえば、いくつかの自動アシスタントは、「音声のみ」であり、ユーザに対して3Pエージェントおよび関連付けられている機能性の「リストを読み上げる」ことは、非実用的であるおよび/または望ましくない場合がある。
【００３０】
さまざまな実施態様は、ユーザが自動アシスタントとのダイアログに従事することを可能にし、そのダイアログを通じて、自動アシスタントは、ユーザの意図されているアクションを特定し、意図されているアクションに関連付けて格納されているパラメータに関する値を特定し、特定された値に基づいて、意図されているアクションを達成することができる特定の3Pエージェントを選択し、特定された値を用いてその3Pエージェントを呼び出すことが可能である。したがって、3Pエージェントの明示的な呼び出しから開始することをユーザに要求する代わりに、本明細書において開示されている実施態様は、代わりに、いずれかの3Pエージェントを呼び出す前にユーザとのダイアログに従事し、特定された値を用いて、意図されているアクションを達成することができる特定の3Pエージェントを特定した後に、その特定の3Pエージェントを呼び出すのみである。これらおよびその他の実施態様は、ユーザが明示的に呼び出した3Pエージェントが間違った3Pエージェントであると判明した場合に直面する可能性がある人的リソースおよび計算リソースの浪費を軽減することが可能である。その上、3Pエージェントを呼び出す際に、自動アシスタントは、特定された値を3Pエージェントへ伝送し、3Pエージェントがそれらの値を懇請する必要性をなくすことが可能である。これは、意図されているアクションが特定の3Pエージェントを介してさらに迅速に達成されることを可能にすることができ、それは、さまざまな計算リソース(たとえば、値の提供がなければ必要となる可能性がある追加の「順番」によって消費されるネットワークトラフィック)を節約することが可能である。
【００３１】
3Pエージェントを呼び出すことは、本明細書において使用される際には、自動アシスタントダイアログを3Pエージェントへ(実際にまたは実質的に)転送することを指すことが可能である。ダイアログが3Pエージェントへ転送された場合には、3Pエージェントは、ダイアログの内容を「操作」し、自動アシスタントは、(たとえば、3Pエージェントを介した意図されているアクションの完了に応答した)3Pエージェントによる終了、(たとえば、3Pエージェントセッションを終了したいという要望を示す入力をユーザが提供したことに応答した)ユーザによる終了、タイムアウト等などの1つまたは複数の状況に応答して引き継ぐのみである。3Pエージェントを呼び出すことは、本明細書において使用される際には、追加として、または代替として、3Pエージェントがダイアログを直接操作することなく、意図されているアクションを達成するために、3Pエージェントとのネットワーク通信を含むことが可能である。たとえば、意図されているアクションのすべての必須パラメータに関する値が自動アシスタントによって特定された場合には、自動アシスタントは、それらの値を3Pエージェントへ通信して、意図されているアクションを3Pエージェントに実行させ、意図されているアクションが実行されたことを示す、および/または意図されているアクションの実行の詳細を含む3P応答コンテンツを3Pエージェントから受け取ることが可能であり、次いで(たとえば、意図されているアクションが実行されたことを確認する)受け取られた3P応答コンテンツに基づく出力をユーザに提供することが可能である。
【００３２】
本明細書において開示されている上述のおよびその他の実施態様の一例として、ユーザが、「映画A」への2枚の大人用の映画チケットを購入するという意図されているアクションを実行することを望んでいると想定されたい。意図されているアクションを達成することができる際に経由する3Pエージェントをはじめに指定することをユーザが必要とする代わりに、ユーザは、代わりに、「映画Aへの2枚の映画チケットを買ってください」という自然言語入力を提供することが可能である。自動アシスタントは、そのような入力を解析し、解析された入力を、「大人用チケットの数」というパラメータに関する「2」という値、および「映画の名前」というパラメータに関する「映画A」(または関連付けられている識別子)という値とともに、「映画チケットを買う」という意図されているアクションにマップすることが可能である。
【００３３】
自動アシスタントはさらに、「劇場のロケーション」というパラメータなど、「映画チケットを買う」という意図されているアクションに関して定義されている(たとえば、APIにおいて定義されている)追加の必須パラメータを特定し、その追加の必須パラメータが自然言語入力によって指定されていないと特定することが可能である。それに応答して、自動アシスタントは、「どの劇場ですか」とユーザに促し、「Baxter Avenueです」という応答を受け取り、次いでそのパラメータに関する値として「Baxter Avenue Theater」(または関連付けられている識別子)を特定することが可能である。
【００３４】
自動アシスタントはさらに、「映画チケットを買う」という意図されているアクションを実行することができる候補3Pエージェントを識別し、それらの3Pエージェントのそれぞれによって提供されるデータに基づいて、それらの3Pエージェントのそれぞれが、パラメータに関する特定の特定された値に関してそのアクションを達成することができるかどうか(たとえば、検討されている3Pエージェントが、「Baxter Avenue」用のチケットを売っているか、および/またはその劇場用の「映画A」に利用可能なチケットを有しているか)を特定することが可能である。それらの3Pエージェントのそれぞれによって提供されるデータは、静的および/または動的であることが可能である。動的である場合には、3Pエージェントは、更新されたデータを自動アシスタントによる検討用として定期的に(もしくはその他の規則的なもしくは不規則なインターバルで)提供することが可能であり、および/または自動アシスタントは、検討用として特定のライブデータを入手するようにダイアログの過程で(たとえば、APIを介してネットワークを経由して)3Pエージェントを手配することが可能である。いくつかの状況においては、自動アシスタントは、特定の特定された値に関して、意図されているアクションを達成することができる3Pエージェントのうちの1つを(たとえば、それが唯一のエージェントである場合に、またはそれが、選択された少数のうちの1つであって、ユーザによって強く好まれている場合に)決定論的に選択し、選択された3Pエージェントへの呼び出し要求を、特定された値とともに伝送することが可能である。その他のいくつかの状況においては、複数の3Pエージェントが、特定の特定された値を伴って、意図されているアクションを達成することができる場合には、自動アシスタントは、それらのうちの少なくともいくつかの間における選択肢(たとえば、「3Pエージェント1を使用したいですか、または3Pエージェント2を使用したいですか」)をユーザに提示することが可能である。それらのその他の状況のうちのいくつかにおいては、自動アシスタントは、追加として、または代替として、ユーザによる選択を手助けするために、ユーザによって指定されていない、提示された3Pエージェントに固有の値(たとえば、それぞれの3Pエージェン
トに関するチケットの価格、それぞれのエージェントに関するユーザによる格付け)をユーザに提示することが可能である。その上、それらのその他の状況のうちのいくつかにおいては、(特定された値を伴って、意図されているアクションを達成することができる複数の3Pエージェントのうちの)どの3Pエージェントが、選択肢としてユーザへ提示するために実際に選択されるかは、ユーザによって指定されていない、それらの3Pエージェントに固有の値に基づくことが可能である。たとえば、価格パラメータに関する値がユーザによって指定されていない場合には、それが利用されることが可能である。また、たとえば、3Pエージェントに関するユーザおよび/またはその他のユーザの格付けが利用されることが可能である。
【００３５】
いくつかの実施態様においては、3Pエージェントとの、および自動アシスタントとのユーザの対話は、共通の自動アシスタントインターフェースを介して発生することが可能である。たとえば、音声ベースの自動アシスタントインターフェースに関しては、自動アシスタントおよび3Pエージェントの両方との対話は、音声ベースの対話を介して発生することが可能である(提供される出力の「音声」は、それら2つの間において変わることが可能であるが)。また、たとえば、グラフィカルな自動アシスタントインターフェースに関しては、ユーザは、自動アシスタントおよび3Pエージェントの両方との対話中に同じダイアログインターフェース内にとどまることが可能である(グラフィカルアイコンおよび/またはその他のしるしが、3Pエージェントが呼び出された場合を示すことが可能であるが)。これは、複数のインターフェースの間においてユーザが切り替えを行うことを必要とすることなく、ユーザがさまざまな3Pエージェントと対話すること、および/またはさまざまなサービスセクタにわたってさまざまな意図されているアクションを達成することを可能にすることができる。
【００３６】
次いで図1を参照すると、本明細書において開示されている技術が実施されることが可能である例示的な環境が示されている。この例示的な環境は、クライアントデバイス106、自動アシスタント110、および複数のサードパーティー(3P)エージェント140a〜nを含む。クライアントデバイス106は、たとえば、スタンドアロンの音声によってアクティブ化されるスピーカーデバイス、デスクトップコンピューティングデバイス、ラップトップコンピューティングデバイス、タブレットコンピューティングデバイス、モバイル電話コンピューティングデバイス、ユーザの車のコンピューティングデバイス(たとえば、車載通信システム、車載エンターテイメントシステム、車載ナビゲーションシステム)、および/または、コンピューティングデバイスを含むユーザのウェアラブル装置(たとえば、コンピューティングデバイスを有するユーザの腕時計、コンピューティングデバイス、仮想もしくは拡張現実コンピューティングデバイスを有するユーザのメガネ)であることが可能である。追加のおよび/または代替のクライアントデバイスが提供されることが可能である。
【００３７】
自動アシスタント110は、図1においてはクライアントデバイス106とは別個のものとして示されているが、いくつかの実施態様においては、自動アシスタント110の態様のうちのすべてが、クライアントデバイス106によって実施されることが可能である。たとえば、いくつかの実施態様においては、入力処理エンジン112が、クライアントデバイス106によって実施されることが可能である。自動アシスタント110の1つまたは複数の(たとえば、すべての)態様が、クライアントデバイス106から離れている1つまたは複数のコンピューティングデバイスによって実施される実施態様においては、クライアントデバイス106、および自動アシスタント110のそれらの態様は、ワイドエリアネットワーク(WAN)(たとえば、インターネット)などの1つまたは複数のネットワークを介して通信する。
【００３８】
1つのみのクライアントデバイス106が、自動アシスタント110との組合せで示されているが、多くの実施態様においては、自動アシスタント110は、離れていることが可能であり、複数のユーザの複数のクライアントデバイスのそれぞれとインターフェース接続することが可能である。たとえば、自動アシスタント110は、別々のセッションを介して複数のデバイスのそれぞれとの通信を管理することが可能であり、複数のセッションを並行して管理することが可能である。たとえば、いくつかの実施態様における自動アシスタント110は、クラウドインフラストラクチャーを採用する、たとえば、複数のユーザからの大量の要求を取り扱うのに適しているソフトウェアを稼働させるハイパフォーマンスコンピュータのサーバファームまたはクラスタを使用するクラウドベースのサービスとして実施されることが可能である。しかしながら、簡単にするために、本明細書における多くの例は、単一のデバイス106に関して記述されている。
【００３９】
自動アシスタント110は、3Pエージェント140A〜Nとは別個であり、WANなどの1つまたは複数のネットワークを介して3Pエージェント140A〜Nと通信する。多くの実施態様においては、3Pエージェント140A〜Nのうちの1つまたは複数(たとえば、すべて)はそれぞれ、自動アシスタント110を管理する当事者とは別個のそれぞれの当事者によって管理される。
【００４０】
3Pエージェント140A〜Nはそれぞれ、3Pエージェントデータベース152内に格納するためのデータを直接または間接的に提供することが可能である。所与の3Pエージェントのためのデータは、たとえば、その3Pエージェントによって解決されることが可能である意図されているアクションを定義することが可能である。その上、所与の3Pエージェントのためのデータは、それぞれの意図されているアクションに関して、その意図されているアクションに関して定義されている複数のパラメータに関してその3Pエージェントによって取り扱われることが可能である値を定義することが可能である。いくつかの実施態様においては、自動アシスタント110および/またはその他のコンポーネントは、意図されているアクション、それらの意図されているアクションのそれぞれに関するパラメータ、およびそれらのパラメータのそれぞれに関して定義されることが可能である許容可能な値を定義することが可能である。たとえば、そのような基準は、自動アシスタント110によって保持されているAPIを介して定義されることが可能である。3Pエージェントのうちのそれぞれは次いで、自分の意図されているアクション、および意図されているアクションのパラメータに関する自分の値を自動アシスタント110および/またはその他のコンポーネントに提供すること(たとえば、WANを介して伝送すること)が可能であり、自動アシスタント110および/またはその他のコンポーネントは、それらのデータを検証して3Pエージェントデータベース152内に格納することが可能である。いくつかの実施態様においては、3Pエージェント140A〜Nのうちの1つまたは複数は、(たとえば、在庫の変化、機能性に対する変化、サービスオファリングに対する変化に応答して)さまざまなパラメータに関する値に対する更新を動的に提供することが可能である。また、いくつかの実施態様においては、自動アシスタント110は、追加として、または代替として、3Pエージェントデータベース152からの値を入手することに加えて、またはその代わりに、3Pエージェント140A〜Nのうちの1つまたは複数からのさまざまな値を求めるライブ要求を実行することが可能である。
【００４１】
一例として、「レストランの予約」という意図されているアクションに関しては、「人数」、「ロケーション」、および「時間」などの必須パラメータが定義されることが可能である。3Pエージェントは、自分が「レストラン予約アクション」を実行することができるそれらの必須パラメータに関する利用可能な値を示すデータを提供することが可能である。たとえば、3Pエージェントは、自分がサービス供給するロケーションのうちのそれぞれを示す値を提供すること、そしてまた、それらのロケーションのそれぞれに関して、特定の数の人(たとえば、特定の量および/もしくは特定の範囲の量)ならびに/または時間(たとえば、特定の時間および/もしくは特定の範囲の時間)に関して、意図されているアクションを自分が現在サービス供給することができるかどうかを示す値を提供することが可能である。また、たとえば、「レストランの予約」という意図されているアクションに関しては、「テーブルタイプの好み」(たとえば、ブース、テーブル、ハイトップ)、「座席ロケーションの好み」(たとえば、屋内、屋外、窓際)等などの任意選択のパラメータが定義されることが可能である。3Pエージェントは、これらの任意選択のパラメータに関する利用可能な値を(もしあれば)示すデータを、それらの値のうちの1つまたは複数が、その他の任意選択のおよび/または必須の値に任意選択で依存している状態で同様に提供することが可能である。たとえば、3Pエージェントは、自分が「テーブルタイプの好み」を伴って、意図されているアクションをサービス供給することができるかどうかを示す、ならびに/またはどんなテーブルタイプが利用可能であるかを(任意選択で、時間、人数に関する値、および/もしくはその他のパラメータに関する値とペアにされて)示すデータを提供することが可能である。別の例として、「車による移送」という意図されているアクションに関しては、「出発ロケーション」および「出発時間」などの必須パラメータが定義されることが可能であり、「行き先ロケーション」、「車のサイズ」、「価格」等などの任意選択のパラメータが定義されることが可能である。3Pエージェントは、自分が「車による移送」という意図されているアクションを実行することができるそれらの必須パラメータおよび任意選択のパラメータに関する利用可能な値を示すデータを提供することが可能である。たとえば、3Pエージェントは、「出発地ロケーション」および「行き先ロケーション」というパラメータに関する値として、自分がサービス供給する地理的領域を示す値を提供することが可能である。
【００４２】
3Pエージェントによって示されることが可能である意図されているアクションは、さまざまな異なるサービスセクタにわたることが可能である。本明細書において使用される際には、サービスセクタは、サービスの粗い粒度のセクタであり、それ自体が、いくつかのさらに細かい粒度のサブセクタを有することが可能である。たとえば、「旅行」は、それ自体が、飛行機による旅行、車による旅行、列車による旅行、宿泊等などのいくつかのサブセクタを有するサービスセクタである。また、たとえば「インタラクティブゲーム」は、それ自体が、「トリビアゲーム」、「ロールプレイングゲーム」等などのいくつかのサブセクタを有するサービスセクタである。したがって、自動アシスタント110によって呼び出されることが可能であって3Pエージェント140A〜Nによって実行可能な意図されているアクションは、多数(たとえば、10以上)の粗い粒度のサービスセクタのうちのいずれか1つからのものであることが可能である。
【００４３】
自動アシスタント110は、入力処理エンジン112、ローカルコンテンツエンジン130、3Pエージェントエンジン120、および出力エンジン135を含む。いくつかの実施態様においては、自動アシスタント110のエンジンのうちの1つまたは複数は、省略されること、組み合わされること、および/または自動アシスタント110とは別個のコンポーネントにおいて実装されることが可能である。その上、自動アシスタント110は、簡単にするために本明細書においては示されていない追加のエンジンを含むことが可能である。
【００４４】
自動アシスタント110は、クライアントデバイス106からユーザ入力のインスタンスを受け取る。たとえば、自動アシスタント110は、ストリーミングオーディオレコーディングの形態での自由形式の自然言語の音声入力を受け取ることが可能である。ストリーミングオーディオレコーディングは、クライアントデバイス106のユーザの話された入力を取り込むクライアントデバイス106のマイクロフォンから受け取られる信号に応答してクライアントデバイス106によって生成されることが可能である。別の例として、自動アシスタント110は、いくつかの実施態様においては、自由形式の自然言語のタイプされた入力を、および/または構造化された(非自由形式の)入力さえ受け取ることが可能である。いくつかの実施態様においては、ユーザ入力は、クライアントデバイス106のユーザによる自動アシスタント110の明示的な呼び出しに応答してクライアントデバイス106によって生成されること、および/または自動アシスタント110に提供されることが可能である。たとえば、呼び出しは、ユーザの特定の音声入力(たとえば、「ねえアシスタント」などの自動アシスタント110用のホットワード/フレーズ)のクライアントデバイス106による検知、ハードウェアボタンおよび/もしくは仮想ボタンとのユーザ対話(たとえば、ハードウェアボタンのタップ、クライアントデバイス106によって表示されているグラフィカルインターフェース要素の選択)、ならびに/またはその他の特定のユーザインターフェース入力であることが可能である。
【００４５】
自動アシスタント110は、クライアントデバイス106からユーザ入力のインスタンスを受け取ったことに応答して出力のインスタンスを提供する。出力のインスタンスは、たとえば、デバイス106によって可聴式に提示される(たとえば、クライアントデバイス106のスピーカーを介して出力される)ことになる音響、デバイス106によってグラフィカルに提示される(たとえば、クライアントデバイス106のディスプレイを介してレンダリングされる)ことになるテキストおよび/またはグラフィカルコンテンツなどであることが可能である。本明細書において記述されているように、出力のいくつかのインスタンスは、自動アシスタント110によって(任意選択で、自動アシスタント110を管理する同じエンティティーによって同様に管理される1つまたは複数の外部コンポーネントを利用して)生成されたローカル応答コンテンツに基づくことが可能であり、その一方で出力のその他のインスタンスは、3Pエージェント140A〜Nのうちの選択された1つによって生成された3P応答コンテンツに基づくことが可能である。
【００４６】
自動アシスタント110の入力処理エンジン112は、クライアントデバイス106を介して受け取られた自然言語入力および/またはその他のユーザ入力を処理し、ローカルコンテンツエンジン130および/または3Pエージェントエンジン120など、自動アシスタント110の1つまたは複数のその他のコンポーネントによって使用するための注釈付きの出力を生成する。たとえば、入力処理エンジン112は、クライアントデバイス106の1つまたは複数のユーザインターフェース入力デバイスを介してユーザによって生成される自然言語の自由形式入力を処理することが可能である。生成された注釈付きの出力は、自然言語入力の1つまたは複数の注釈、および任意選択で自然言語入力の用語のうちの1つまたは複数(たとえば、すべて)を含む。別の例として、入力処理エンジン112は、追加として、または代替として、音声/テキストモジュールを含むことが可能であり、音声/テキストモジュールは、音声入力のインスタンスを(たとえば、デジタルオーディオデータの形態で)受け取り、その音声入力を、1つまたは複数のテキストの単語またはフレーズを含むテキストへと変換する。いくつかの実施態様においては、音声/テキストモジュールは、ストリーミング音声/テキストエンジンである。音声/テキストモジュールは、1つまたは複数の格納されている音声/テキストモデル(言語モデルとも呼ばれる)に依存することが可能であり、それらの音声/テキストモデルはそれぞれ、オーディオ信号と、言語における音韻単位との間における関係を、その言語における語順とともにモデル化することが可能である。
【００４７】
いくつかの実施態様においては、入力処理エンジン112は、自然言語入力(たとえば、タイプされた入力、および/またはオーディオ入力から変換されたテキスト)におけるさまざまなタイプの文法情報を識別して注釈付けするように構成されている。たとえば、入力処理エンジン112は、用語にそれらの用語の文法的な役割を注釈付けするように構成されているスピーチタガーの部分を含むことが可能である。たとえば、スピーチタガーの部分は、それぞれの用語に、「名詞」、「動詞」、「形容詞」、「代名詞」等などのその用語の品詞をタグ付けすることが可能である。また、たとえば、いくつかの実施態様においては、入力処理エンジン112は、追加として、および/または代替として、自然言語入力における用語どうしの間の構文関係を特定するように構成されている依存関係パーサを含むことが可能である。たとえば、依存関係パーサは、どの用語が文のその他の用語、主語、および動詞などを修飾しているか(たとえば、解析木)を特定することが可能であり、そのような依存関係の注釈を作成することが可能である。
【００４８】
いくつかの実施態様においては、入力処理エンジン112は、追加として、および/または代替として、人々、組織、ロケーションなどに対する参照など、1つまたは複数のセグメントにおけるエンティティー参照に注釈付けするように構成されているエンティティータガーを含むことが可能である。エンティティータガーは、(たとえば、人々などのエンティティークラスに対するすべての参照の識別を可能にするために)高いレベルの粒度、および/または(たとえば、特定の人などの特定のエンティティーに対するすべての参照の識別を可能にするために)より低いレベルの粒度でエンティティーに対する参照を注釈付けることが可能である。エンティティータガーは、特定のエンティティーを解決するために自然言語入力の内容に依存することが可能であり、および/または任意選択で、特定のエンティティーを解決するために知識グラフまたはその他のエンティティーと通信することが可能である。
【００４９】
いくつかの実施態様においては、入力処理エンジン112は、追加として、および/または代替として、1つまたは複数の文脈上の手がかりに基づいて同じエンティティーに対する参照をグループ化、または「クラスタ化」するように構成されている同一指示リゾルバを含むことが可能である。たとえば、同一指示リゾルバは、ユーザ入力のインスタンスにおける「それ」という用語を、ユーザ入力の直前のインスタンスにおける「映画A」の先行する言及へ解決するために利用されることが可能である。
【００５０】
いくつかの実施態様においては、入力処理エンジン112の1つまたは複数のコンポーネントは、入力処理エンジン112の1つまたは複数のその他のコンポーネントからの注釈に依存することが可能である。たとえば、いくつかの実施態様においては、名付けられたエンティティータガーが、特定のエンティティーに対するすべての言及に注釈付けする際に同一指示リゾルバおよび/または依存関係パーサからの注釈に依存することが可能である。また、たとえば、いくつかの実施態様においては、同一指示リゾルバは、同じエンティティーに対する参照をクラスタ化する際に依存関係パーサからの注釈に依存することが可能である。いくつかの実施態様においては、特定の自然言語入力を処理する際に、入力処理エンジン112の1つまたは複数のコンポーネントは、1つまたは複数の注釈を特定するために、その特定の自然言語入力の外部の関連した以前の入力および/またはその他の関連したデータを使用することが可能である。
【００５１】
入力処理エンジン112は、ユーザ入力のセマンティクスまたは意味を見分けることを試みて、そのユーザ入力のセマンティック表示をローカルコンテンツエンジン130および/または3Pエージェントエンジン120に、それらのエンジンによる使用のために提供することが可能である。入力処理エンジン112は、テキスト(またはその他の入力)を特定のアクションにマップするために、およびそのようなアクションの実行を制限する属性、たとえば、そのようなアクションに対する入力変数を識別するために、1つまたは複数の格納されている文法モデルに依存することが可能である。
【００５２】
ローカルコンテンツエンジン130は、受け取られたユーザ入力が(3Pエージェントアクションとは対照的に)「ローカルアクション」に関連付けられている場合には、そのユーザ入力に対する応答を生成することが可能である。いくつかの実施態様においては、入力処理エンジン112は、ユーザ入力がローカルアクションに関連付けられているか、または3Pエージェントの意図されているアクションに関連付けられているかを特定する。ローカルコンテンツエンジン130は、入力処理エンジン112と連携して機能し、入力処理エンジン112によって提供された解析されたテキスト(たとえば、アクションおよびアクションパラメータ)によって示されているように1つまたは複数のアクションを実行することが可能である。ローカルアクションに関しては、ローカルコンテンツエンジン130は、ローカル応答コンテンツを生成し、そのローカル応答コンテンツを、デバイス106を介してユーザに提示するための対応する出力を提供するために出力エンジン135に提供することが可能である。ローカルコンテンツエンジン130は、ローカルコンテンツを生成するために、および/またはその他のアクションを実行するために、1つまたは複数の格納されているローカルコンテンツモデル154を利用することが可能である。コンテンツモデル154は、たとえば、ローカル応答コンテンツを作成するためのさまざまなルールを組み込むことが可能である。いくつかの実施態様においては、ローカルコンテンツエンジン130は、自動アシスタント110を管理するエンティティーによって管理される検索エンジンなど、ローカル応答コンテンツを生成する際に1つまたは複数のその他の「ローカル」コンポーネントと通信することが可能である。
【００５３】
出力エンジン135は、出力のインスタンスをクライアントデバイス106に提供する。出力のインスタンスは、(ローカルコンテンツエンジン130からの)ローカル応答コンテンツ、および/または(たとえば、自動アシスタント110が仲介者の役割を果たしている場合の3Pエージェント140A〜Nのうちの1つからの)3P応答コンテンツに基づくことが可能である。いくつかの実施態様においては、出力エンジン135は、応答コンテンツのテキストコンポーネントをオーディオフォーマットへ変換するテキスト/スピーチエンジンを含むことが可能であり、出力エンジン135によって提供される出力は、(たとえば、ストリーミングオーディオとしての)オーディオフォーマットである。いくつかの実施態様においては、応答コンテンツは、既にオーディオフォーマットであることが可能である。いくつかの実施態様においては、出力エンジン135は、追加として、または代替として、(任意選択でデバイス106によって音響へ変換するための)出力としてテキスト返答コンテンツを提供し、および/またはクライアントデバイス106によるグラフィカルな表示のための出力としてその他のグラフィカルコンテンツを提供する。
【００５４】
3Pエージェントエンジン120は、パラメータモジュール122、エージェント選択モジュール124、ダイアログモジュール126、および呼び出しモジュール128を含む。いくつかの実施態様においては、3Pエージェントエンジン120のモジュールは、省略されること、組み合わされること、および/または3Pエージェントエンジン120とは別個のコンポーネントにおいて実装されることが可能である。その上、3Pエージェントエンジン120は、簡単にするために本明細書においては示されていない追加のモジュールを含むことが可能である。
【００５５】
クライアントデバイス106によって提供されたユーザ入力が、3Pの意図されているアクションに関連付けられている場合には、パラメータモジュール122は、そのユーザ入力が、その意図されているアクションに関連付けて格納されている(たとえば、データベース152内に格納されている)いずれかのパラメータに関する値を含んでいるかどうかを特定し、そうである場合には、それらの値をユーザの意図されているアクションに関連付けて格納することが可能である。パラメータモジュール122はさらに、意図されているアクションに関するいずれかの指定されていない必須パラメータに関連したさらなるユーザ入力を懇請するためのプロンプトを生成するためにダイアログモジュール126と対話することが可能である。ダイアログモジュール126によって生成されたいかなるプロンプトも、出力エンジン135によってユーザへ提示するために提供されることが可能であり、さらなる応答ユーザ入力が受け取られることが可能である。それらのさらなるユーザ入力はそれぞれ、(任意選択で、入力処理エンジン112によって注釈付けられたものとして)パラメータモジュール122によって分析されて、それらの入力がパラメータに関する値を含んでいるかどうかを特定し、そうである場合には、それらの値をユーザの意図されているアクションに関連付けて格納することが可能である。
【００５６】
エージェント選択モジュール124は、意図されているアクションに関連付けて(たとえば、データベース152内に)格納されている3Pエージェントのグループから、意図されているアクションの実行において利用するための特定の3Pエージェントを選択するために、パラメータモジュール122によって特定された値を利用する。エージェント選択モジュール124は、追加として、または代替として、特定の3Pエージェントを選択する際にその他の基準を利用することが可能であり、任意選択で、3Pエージェントを選択する際にさらなるユーザ入力を懇請するためのプロンプトを生成するためにダイアログモジュール126と対話することが可能である。ダイアログモジュール126によって生成されたいかなるプロンプトも、出力エンジン135によってユーザへ提示するために提供されることが可能であり、さらなる応答ユーザ入力が受け取られることが可能である。それらのさらなるユーザ入力はそれぞれ、(任意選択で、入力処理エンジン112によって注釈付けられたものとして)エージェント選択モジュール124によって分析されて、特定の3Pエージェントを特定することが可能である。
【００５７】
パラメータモジュール122および/またはエージェント選択モジュール124と対話する際にプロンプトを生成する場合に、ダイアログモジュール126は、それらのモジュールによって求められているパラメータおよび/または3Pエージェントのプロパティーを利用することが可能である。その上、ダイアログモジュール126は、プロンプトを生成してクライアントデバイス106を介してユーザと対話する際に入力処理エンジン112からの1つまたは複数の文法モデル、ルール、および/または注釈を利用することが可能である。
【００５８】
呼び出しモジュール128は、エージェント選択モジュール124によって選択された3Pエージェント140A〜Nのうちの特定の3Pエージェントへ、パラメータモジュール122によって特定された任意選択のパラメータおよび/または必須パラメータを含む呼び出し要求を伝送する。伝送された呼び出し要求は、特定の3Pエージェントを呼び出す。3Pエージェントを呼び出すことは、本明細書において使用される際には、クライアントデバイス106のユーザと自動アシスタント110との間におけるダイアログを3Pエージェントへ(実際にまたは実質的に)転送することを指すことが可能である。3Pエージェントを呼び出すことは、追加として、または代替として、3Pエージェントがダイアログを直接操作することなく、意図されているアクションを達成するために、3Pエージェントとの自動アシスタント110のネットワーク通信を含むことが可能である。
【００５９】
本明細書において記述されているように、いくつかの状況においては、自動アシスタント110は、ダイアログが特定の3Pエージェントへ実質的に転送される際に依然として仲介者としての役割を果たすことが可能である。たとえば、ユーザの自然言語入力が音声入力である場合に仲介者としての役割を果たす際に、自動アシスタント110の入力処理エンジン112は、その音声入力をテキストへ変換することが可能であり、自動アシスタント110は、そのテキスト(および任意選択で入力処理エンジン112からのそのテキストの注釈)を3Pエージェントに伝送し、3Pエージェントから3P応答コンテンツを受け取ることが可能であり、出力エンジン135は、3P応答コンテンツに基づく出力を、クライアントデバイス106を介してユーザへ提示するために提供することが可能である。また、たとえば、仲介者としての役割を果たす際に、自動アシスタント110は、追加として、または代替として、ユーザ入力および/または3P応答コンテンツを分析して、3Pエージェントとのダイアログが終了されるべきであるかどうか、代替3Pエージェントへ転送されるべきであるかどうかなどを特定することが可能である。やはり本明細書において記述されているように、いくつかの状況においては、ダイアログは、3Pエージェントへ実際に転送され(いったん転送されると、自動アシスタント110が仲介者としての役割を果たすことなく)、1つまたは複数の状況の発生時に自動アシスタント110へ返送されることが可能である。
【００６０】
3Pエージェント140A〜Nのそれぞれは、3Pコンテキストパラメータエンジン、3Pコンテンツエンジン、および/またはその他のエンジンを含むことが可能である。その上、多くの実施態様においては、3Pエージェントは、3P応答コンテンツを生成する際にさまざまな格納されているモデルおよび/またはその他のリソース(たとえば、自分自身の文法モデルおよび/またはコンテンツモデル)にアクセスすることが可能である。
【００６１】
次いで図2A、図2B、および図3を参照して、図1の環境のコンポーネントによって実行されることが可能である方法の例が記述される。
【００６２】
図2Aは、本明細書において開示されている実施態様による例示的な方法200Aを示すフローチャートである。便宜のために、このフローチャートの動作は、それらの動作を実行するシステムに関連して記述されている。このシステムは、自動アシスタント110の1つまたは複数のコンポーネントなど、さまざまなコンピュータシステムのさまざまなコンポーネントを含むことが可能である。その上、方法200の動作は特定の順序で示されているが、これは、限定的なものではない。1つまたは複数の動作は、並べ替えられること、省略されること、または追加されることが可能である。
【００６３】
ブロック250において、システムは、ユーザ入力を受け取る。いくつかの実施態様においては、ブロック250において受け取られるユーザ入力は、自由形式である自然言語入力である。たとえば、システムは、クライアントデバイスの物理キーボードまたは仮想キーボードによって感知されたユーザ入力に基づいてクライアントデバイスによって生成されたテキストの形態で、タイプされた入力を受け取ることが可能である。また、たとえば、システムは、クライアントデバイスのトランスデューサによって感知された話された入力に基づいて音声対応型クライアントデバイスによって生成されたストリーミングオーディオデータの形態で音声入力を受け取ることが可能である。それらの例のいくつかにおいては、システムは、任意選択で音声入力をテキストへ変換することが可能である。たとえば、システムの音声/テキストモジュールは、有限状態デコーディンググラフなどの音声/テキストモデルを使用して音声入力をテキストへ変換することが可能である。
【００６４】
ブロック252において、システムは、受け取られたユーザ入力がサードパーティー(3P)の意図されているアクションを示しているかどうかを特定する。たとえば、システムは、受け取られた自然言語入力のテキスト(または受け取られた音響自然言語入力から変換されたテキスト)を解析し、解析されたテキストがいずれかの3Pの意図されているアクションにマップするかどうかを特定することが可能である。たとえば、システムは、解析されたテキストがいずれかの3Pの意図されているアクションにマップするかどうかを、そのテキスト内に含まれている用語/フレーズが、3Pの意図されているアクションに関連付けて格納されている用語/フレーズにマッチするかどうかに基づいて特定することが可能である。また、たとえば、システムは、テキストから得られた1つまたは複数のエンティティーが、3Pの意図されているアクションに関連付けて格納されている1つまたは複数のエンティティーにマッチするかどうかを特定することが可能である。
【００６５】
3Pの意図されているアクションが示されていないとブロック252においてシステムが特定した場合には、システムは、ブロック254、256、および258へ進む。ブロック254において、システムは、サードパーティーエージェントの呼び出しを伴わずにローカル応答コンテンツを生成する。たとえば、システムは、システムのローカル文法モデルおよび/またはローカルコンテンツモデルを利用してローカル応答コンテンツを生成することが可能である。ブロック256において、システムは、ローカル応答コンテンツに基づく出力を提供する。たとえば、その出力は、ローカル応答コンテンツ、またはローカル応答コンテンツの変換(たとえば、テキスト/スピーチ変換)であることが可能である。その出力は、クライアントデバイスを介した(たとえば、可聴式のまたはグラフィカルな)提示のために提供される。ブロック258において、システムは、追加の音声入力を待ち、追加の音声入力を受け取ると、ブロック250へ戻る。
【００６６】
3Pの意図されているアクションが示されているとブロック252の反復においてシステムが特定した場合には、システムは、ブロック260へ進む。ブロック260において、システムは、必須であるとして、意図されているアクションに関連付けて格納されているすべてのパラメータに関して値が解決されているかどうかを特定する。ブロック260の第1の反復において、これは、ブロック250の最も直近の反復および/またはブロック250の1つもしくは複数の前の反復において受け取られたユーザ入力(たとえば、値を提供しているが、意図されているアクションをまだ示していなかった以前のユーザ入力)によって必須の値が示されているかどうかを特定することを含む。ブロック260は、格納されているユーザの好みおよび/またはその他のデータに基づいて1つまたは複数の必須パラメータに関する値を推測することを含むことも可能である。ブロック260のさらなる反復においては、(以降で記述されている)ブロック264において提供されるさらなるユーザ入力も考慮されることになる。
【００６７】
ブロック260の一例として、「今夜のその映画の大人用チケットを2枚購入してください」という自然言語入力が、ブロック250の最も直近の反復において受け取られており、ブロック250の直前の反復における「映画Aについて教えてください」という自然言語入力によって先行されており、フィクションの「映画A」に関するローカルコンテンツを提供するためにブロック250の直前の反復の間にブロック254、256、および258が呼び出されたと想定されたい。「今夜のその映画の大人用チケットを2枚購入してください」という自然言語入力に基づいてブロック252において「映画チケットを買う」という3Pの意図されているアクションを特定しておくことが可能である。ブロック260において、システムは、その自然言語入力を利用して、「大人用チケットの数」という必須パラメータに関する「2」という値を特定することが可能である。システムは、その自然言語入力およびブロック250の前の反復の前の自然言語入力を利用して(たとえば、「その映画」を「映画A」へ解決するための同一指示解決を使用して)、「映画の名前」という必須パラメータに関する「映画A」(または関連付けられている識別子)という値を特定することも可能である。システムはさらに、「映画チケットを買う」という3Pの意図されているアクションに関して、「劇場のロケーション」という追加の必須パラメータがあるということ、および「劇場のロケーション」という必須パラメータに関する値が解決されていないということを特定することが可能である。
【００６８】
すべての必須パラメータに関して値が解決されていないとブロック260においてシステムが特定した場合には、システムは、ブロック262および264へ進む。ブロック262において、システムは、解決されていない必須パラメータのうちの1つまたは複数に関する値を懇請するためのプロンプトを、ユーザへ提示するために提供する。たとえば、前のパラグラフの例を続けると、システムは、「劇場のロケーション」という必須パラメータに関する値を懇請するための「どの劇場ですか」というプロンプトを生成することが可能である。ブロック264において、システムは、プロンプトに応答したさらなるユーザ入力を受け取る。たとえば、同じ例を続けると、システムは、「Megaplex」という自由形式の自然言語入力を受け取ることが可能である。システムは次いで、ブロック260へ戻る。たとえば、ブロック260の次の反復において、システムは、(たとえば、テキストおよび任意選択でユーザのロケーションに基づいて)「Megaplex」という入力を特定の劇場ロケーションへ解決し、すべての必須パラメータが解決されたと特定することが可能である。いくつかのケースにおいては、ブロック260、262、および264の複数の反復が実行されることになるということ、およびそれぞれの反復は、1つまたは複数の対応する必須パラメータに関連付けられている値を促すこと、受け取ること、および/または解決することを含むことが可能であるということが理解される。
【００６９】
すべての必須パラメータに関して値が解決されているとブロック260においてシステムが特定した場合には、システムは、ブロック270へ進む。ブロック270において、システムは、意図されているアクションをそれぞれ実行することができる3Pエージェントのグループから特定の3Pエージェントが選択されることが可能であるかどうかを特定する。いくつかの実施態様においては、システムは、ブロック250および/またはブロック264の1つまたは複数の反復におけるユーザ入力に基づいて特定されたパラメータに関する値を、意図されているアクションを実行することができる3Pエージェントのそれぞれに関して定義されているパラメータに関する対応する値と比較することに基づいて、選択からグループの1つまたは複数の3Pエージェントを削除することが可能である。たとえば、「劇場のロケーション」という必須パラメータに関しては、「Megaplex」という値が特定されることが可能であり、所与の3Pエージェントに関する「劇場のロケーション」というパラメータが、「Megaplex」という値を含んでいないことに基づいて、その所与の3Pエージェントが選択から削除されることが可能である。
【００７０】
必須パラメータに関して例が提供されているが、多くの実施態様においては、システムは、追加として、または代替として、意図されているアクションに関して定義されている1つまたは複数の任意選択のパラメータを利用して、1つまたは複数の3Pエージェントを削除することが可能である。たとえば、任意選択のパラメータは、格納されているユーザの好みに基づいて推測されることが可能であり、ならびに/またはシステムによってプロンプトにおいて懇請されること、および/もしくはブロック250および/もしくはブロック264の1つもしくは複数の反復におけるユーザ入力を介してユーザによって自由に提供されることが可能である。たとえば、ブロック262におけるプロンプトが、(「劇場のロケーション」という必須パラメータに関する値を懇請するための)「どの劇場ですか」であり、ブロック264における応答ユーザ入力が、「Megaplex - 7:00上映です」であると想定されたい。そのような応答ユーザ入力は、「映画の時間」という任意選択のパラメータに関する「7:00」という値を、たとえそれが明示的に懇請されていなかったとしても特定するために利用されることが可能である。さらに、ブロック270において(および/または以降で記述されているブロック280において)、その任意選択のパラメータが利用されることが可能である。たとえば、ブロック270において、「7:00」は、「Megaplex」における「映画A」のためのその時間用の在庫を自分が有していないということを示す「映画の時間」というパラメータに関する値を有する3Pエージェントを削除するために利用されることが可能である。
【００７１】
意図されているアクションをそれぞれ実行することができる3Pエージェントのグループから特定の3Pエージェントが選択されることが可能であるかどうかを特定するために、その他の基準が、追加として、または代替として、ブロック270において利用されることが可能である。たとえば、複数の3Pエージェントが、パラメータに関する特定された値を伴って、意図されているアクションを実行することができると特定された場合には、システムは、任意選択で、1つまたは複数の基準に基づいて単一の特定の3Pエージェントを選択することが可能である。たとえば、システムは、ユーザが以前に、その他の利用可能な3Pエージェントよりも特定の3Pエージェントに対する好みを黙示的にまたは明示的に示したことに基づいて、特定の3Pエージェントを選択することが可能である。また、たとえば、システムは、追加として、または代替として、特定の3Pエージェントの格付けに基づいて(たとえば、複数のユーザによるフィードバックおよび/または使用に基づいて)、特定の3Pエージェントを用いて、意図されているアクションを完遂することの対価に基づいて、といった具合に特定の3Pエージェントを選択することが可能である。
【００７２】
特定の3Pエージェントが選択されることが不可能であるとブロック270においてシステムが特定した場合には、システムは、ブロック272へ進む。ブロック272において、システムは、複数のオプションから3Pエージェントを選択するようにユーザに懇請するプロンプトを、ユーザへ提示するために提供する。ユーザへ提示される複数のオプションは、「削除されていない」3Pエージェントのうちの1つまたは複数を含む。言い換えれば、特定の特定された値を伴って、意図されているアクションを実行することができる3Pエージェントのうちの1つまたは複数である。一例として、システムは、そのような3Pエージェントのうちの2つ以上の間における選択をユーザに提示するプロンプト(たとえば、「3Pエージェント1を使用したいですか、または3Pエージェント2を使用したいですか」)を提供することが可能である。いくつかの実施態様においては、システムは、追加として、または代替として、ユーザによる選択を手助けするために、ユーザによって指定されていない、提示された3Pエージェントに固有の値をプロンプト内に含めることが可能である。たとえば、複数の3Pエージェントのそれぞれを明示的に識別する代わりに、プロンプトは、複数の3Pエージェントの間において異なるパラメータ値を識別するのみであることが可能である(たとえば、「一方は、月曜日までに15ドルでそれを行うことができ、他方は、火曜日までに12ドルでそれを行うことができます、どちらにしますか?」)。また、いくつかの実施態様においては、(特定された値を伴って、意図されているアクションを達成することができる複数の3Pエージェントのうちの)どの3Pエージェントが、プロンプト内に含めるために実際に選択されるかは、ユーザによって指定されていない、それらの3Pエージェントに固有の値に基づくことが可能である。たとえば、価格パラメータに関する値がユーザによって指定されていない場合には、それは、特定された値を伴って、意図されているアクションを実行することがやはり可能であるその他の利用可能な3Pエージェントに勝る、プロンプトにおいて提供するための2つの特定の3Pエージェントを選択するために利用されることが可能である。
【００７３】
ブロック274において、システムは、ブロック272のプロンプトに応答したさらなるユーザ入力を受け取る。システムは次いで、ブロック270へ戻って、さらなるユーザ入力を考慮に入れて特定の3Pエージェントが選択されることが可能であるかどうかを特定する。たとえば、ブロック274において、システムは、ブロック272のプロンプトにおいて提示されている3Pエージェントのうちの1つを直接示す(たとえば、その名前を含む)または間接的に示す(たとえば、その値を指定する)自由形式の自然言語入力を受け取ることが可能である。ブロック270において、システムは次いで、示されている3Pエージェントを、それがブロック274のユーザ入力において示されていることに基づいて選択することが可能である。いくつかのケースにおいては、ブロック272および274の複数の反復が実行されることが可能である。たとえば、ブロック272の第1の反復においては、プロンプトは、「2つの3Pエージェントが、10分かからずにあなたをお迎えにあがることができ、料金は15ドルの見込みです。別の3Pエージェントは、20分であなたをお迎えにあがることになり、料金は10ドルの見込みです」であることが可能である。それに応答して、ブロック274の第1の反復において、ユーザ入力は、「10分かからないもの」というものであることが可能である。ブロック272の次なる反復において、プロンプトは次いで、「了解です。3PエージェントAは4.0の格付けを有しており、3PエージェントBは3.9の格付けを有しています、どちらにしますか?」であることが可能である。それに応答して、ブロック274の第2の反復において、ユーザ入力は、「3PエージェントB」であることが可能であり、システムは、それをブロック270において利用して、「3PエージェントB」を選択することが可能である。
【００７４】
特定の3Pエージェントが選択されることが可能であるとブロック270の反復においてシステムが特定した場合には、システムは、ブロック280へ進むことが可能である。いくつかの実施態様においては、システムは、ブロック280へ進む前に、特定の3Pエージェントを利用することをユーザが望んでいることを確認するようにユーザに最初に促すことが可能である(たとえば、ブロック272および274の反復が実行されなかった場合、および/またはユーザが、進めたい要望をその他の形で示していない場合)。それらの実施態様においては、システムは、ブロック280へ進む前にプロンプトに応答した肯定的なユーザ入力を要求することが可能である。その他の実施態様においては、システムは、確認するようにユーザに最初に促すことなく、ブロック280へ自動的に進むことが可能である。
【００７５】
ブロック280において、システムは、ブロック270において選択された3Pエージェントへ呼び出し要求を伝送する。たとえば、システムは、1つまたは複数のネットワークを介して呼び出し要求を伝送することが可能であり、任意選択でAPIを利用することが可能である。いくつかの実施態様においては、呼び出し要求は、上述のように特定されたパラメータに関する値を含む。いくつかの実施態様においては、呼び出し要求はまた、任意選択で、意図されているアクションを含む(たとえば、選択された3Pエージェントが、複数の意図されているアクションを実行することができる場合)。
【００７６】
ブロック282において、システムは、ブロック280において呼び出し要求を伝送したことに応答して3Pエージェントから3P応答コンテンツを受け取る。たとえば、システムは、1つまたは複数のネットワークインターフェースを介して3P応答コンテンツを受け取ることが可能であり、任意選択でAPIを利用することが可能である。3P応答コンテンツは、呼び出し要求に応答するものであり、3Pエージェントによって、それ自体のセマンティック処理エンジン、それ自体のセマンティックモデル、および/またはその他の3Pエージェント固有のコンポーネントを利用して生成されることが可能である。いくつかの実施態様においては、3P応答コンテンツはさらに、ブロック280において呼び出し要求とともに提供されるパラメータに関する値に基づく。
【００７７】
ブロック284において、システムは、3P応答コンテンツに基づく出力を提供する。たとえば、その出力は、3P応答コンテンツ、または3P応答コンテンツの変換(たとえば、テキスト/スピーチ変換)であることが可能である。その出力は、クライアントデバイスを介した(たとえば、可聴式のまたはグラフィカルな)提示のために提供される。
【００７８】
ブロック286において、システムは、ブロック284において提供された出力に応答したユーザからの追加の入力を待つ。
【００７９】
ブロック288において、システムは、追加の入力を受け取る。たとえば、システムは、自由形式の自然言語入力である追加の入力を受け取ることが可能である。
【００８０】
ブロック290において、システムは、受け取られた追加の入力が、ブロック280の最も直近の反復において呼び出された3Pエージェントに向けられているかどうかを特定する。そうである場合には、システムは、対応するコンテンツ(たとえば、受け取られた追加の入力、その変換、および/またはその注釈)を3Pエージェントへ伝送する。システムは次いで、ブロック282の別の反復へ進み、ブロック292における伝送に応答するさらなる応答コンテンツを3Pエージェントから受け取る。自動アシスタントが仲介者としての役割を果たしている間に、ユーザが3Pエージェントとのダイアログに実質的に従事することを可能にするために、ブロック282、284、286、288、290、および292の複数の反復が実行されることが可能である。本明細書において記述されているように、いくつかの実施態様においては、システムは、ブロック280においてダイアログを3Pエージェントへ実際に転送することが可能であり、いったんダイアログがシステムへ返送されると、ブロック250(および/またはその他のブロック)へ戻ることが可能である。それらの実施態様のいくつかにおいては、ブロック282、284、286、288、290、292、および/または294は、省略されることが可能である。
【００８１】
いくつかの実施態様においては、ブロック290において、システムは、ブロック280において伝送された呼び出し要求、および/またはブロック282において受け取られた3P応答コンテンツに基づいて、受け取られた追加の入力が3Pエージェントに向けられているかどうかを特定することが可能である。たとえば、ブロック280において、システムは、すべての必須パラメータとともに呼び出し要求を伝送することが可能であり、および/またはそれは、3Pエージェントがダイアログに従事することなく、意図されているアクションを実行するように3Pエージェントに要求する。そのような例においては、システムは、追加の入力が3Pエージェントに向けられていないとブロック290において結果として特定することが可能である。別の例として、ブロック282において受け取られた3P応答コンテンツは、3Pエージェントに向けられているさらなる音声入力を3Pエージェントが予期しているかどうかを示すことが可能である。たとえば、3P応答コンテンツは、それが、さらなる3Pエージェント関連の音声入力を要求する「依頼」/「プロンプト」であるか(そのケースにおいては、3Pエージェントに向けられているさらなる入力が予期されている)、または代替として、さらなる3Pエージェント関連の音声入力を予期していない「告知」/「解決」であるか(そのケースにおいては、3Pエージェントに向けられているさらなる入力は予期されていない)を示すことが可能である。
【００８２】
いくつかの実施態様においては、たとえ選択された3Pエージェントに向けられている追加の入力をシステムが予期していても、ブロック288において受け取られた実際の入力に応じて、それは、それでもなお、受け取られた追加の入力が3Pエージェントに向けられていないと特定することが可能である。たとえば、システムは、「やめる」、「よす」、「別の3Pエージェントと話す」、「異なる3Pエージェント」等などの入力が、選択された3Pエージェントに向けられていないと特定することが可能である。
【００８３】
ブロック290において、受け取られた追加の入力が3Pエージェントに向けられていないとシステムが特定した場合には、システムは、ブロック294へ進む。ブロック294において、システムは、受け取られた追加の入力が、異なる3Pエージェントへ切り替えたいという要望を示しているかどうかを特定する。そうである場合には、および特定された値を伴って、意図されているアクションを実行することができる追加の3Pエージェントが利用可能である場合には、システムは、ブロック280へ進んで、追加の3Pエージェントのうちの1つへ呼び出し要求を伝送することが可能である。システムは、特定された値をブロック280における追加の3Pエージェントへの呼び出し要求とともに含めることが可能である。その上、いくつかの実施態様においては、追加の値を3Pエージェントとの対話中に特定しておくことが可能であり、それらの値は、追加の3Pエージェントへの呼び出し要求において提供されることも可能である。追加の呼び出し要求を伝送するために複数の追加の3Pエージェントのうちのどれが選択されるかは、追加の入力そのもの(たとえば、それが名前または特徴によって追加の3Pエージェントのうちの1つを参照する場合)に基づくこと、および/またはその他のファクタ(たとえば、追加の入力が「次なるエージェント」である場合には、次に最も人気のある3Pエージェント)に基づくことが可能である。
【００８４】
ブロック294において、受け取られた追加の入力が、異なる3Pエージェントへ切り替えたいという要望を示していないとシステムが特定した場合には、システムは、ブロック252へ進む。
【００８５】
図2Bは、図2Aの方法200の特定のブロックのいくつかの実施態様の例200Bを示すフローチャートである。便宜のために、このフローチャートの動作は、それらの動作を実行するシステムに関して記述されている。このシステムは、自動アシスタント110の3Pエージェントエンジン120および/または1つもしくは複数のその他のコンポーネントなど、さまざまなコンピュータシステムのさまざまなコンポーネントを含むことが可能である。その上、例200Bの動作は特定の順序で示されているが、これは、限定的であるものではない。1つまたは複数の動作は、並べ替えられること、省略されること、または追加されることが可能である。
【００８６】
例200Bは、図2Aのブロック252、260、270、および280のいくつかの特定の例を提供している。
【００８７】
図2Bのブロック252Aは、図2Aのブロック252の特定の例である。ブロック252Aにおいて、システムは、ユーザ入力に基づいて3Pの意図されているアクションを選択する。
【００８８】
図2Bのブロック260A、260B、および2660Cは、図2Aのブロック260の特定の例である。ブロック260Aにおいて、システムは、ブロック252Aにおいて選択された意図されているアクションに関する必須パラメータおよび任意選択のパラメータを識別する。
【００８９】
ブロック260Bにおいて、システムは、ブロック252Aにおいて受け取られたユーザ入力において示されているパラメータに関する値を(もしあれば)特定して格納する。
【００９０】
ブロック260Cにおいて、システムは、意図されているアクションに関するすべての必須パラメータがブロック260Bの最も直近の反復において特定されているかどうかを特定する。それらが特定されていない場合には、システムは、図2Aのブロック262および264へ進み、次いでブロック260Bへ戻って、ブロック264において提供されたさらなるユーザ入力におけるパラメータを(もしあれば)特定して格納する。
【００９１】
ブロック260Cの反復において、意図されているアクションに関するすべての必須パラメータが特定されている場合には、システムは、ブロック270Aへ進む。ブロック270Aにおいて、システムは、ブロック260Bの1つまたは複数の反復において特定されて格納されている値、過去のユーザ対話、および/またはその他の基準に基づいて、意図されているアクションに関する単一の3Pエージェントが解決可能であるかどうかを特定する。そうでない場合には、システムは、図2Aのブロック272および274へ進み、次いでブロック270Aへ戻って、ブロック274において提供されたさらなるユーザ入力が単一の3Pエージェントの解決を可能にするかどうかを特定する。
【００９２】
ブロック270Aの反復において、単一の3Pエージェントが解決可能である場合には、システムは、ブロック280Aへ進む。ブロック280Aにおいて、システムは、ブロック260Bの1つまたは複数の反復において特定されて格納されているパラメータを含む呼び出し要求を単一の3Pエージェントへ伝送する。システムは次いで、図2Aのブロック282へ進む。
【００９３】
図3は、本明細書において開示されている実施態様による、サードパーティーエージェントによって実行されることが可能である例示的な方法300を示すフローチャートである。このシステムは、3Pエージェント140A〜Nのうちの1つの1つまたは複数のコンポーネントなど、さまざまなコンピュータシステムのさまざまなコンポーネントを含むことが可能である。その上、方法300の動作は特定の順序で示されているが、これは、限定的であるものではない。1つまたは複数の動作は、並べ替えられること、省略されること、または追加されることが可能である。
【００９４】
ブロック352において、システムは、自動アシスタントからの呼び出し要求を受け取る。呼び出し要求は、意図されているアクション(たとえば、システムが、複数の意図されているアクションを実行することが可能である場合)、意図されているアクションのパラメータに関する値、および/またはその他のデータを含むことが可能である。いくつかの実施態様においては、呼び出し要求は、システムがダイアログを実質的にまたは実際に引き継ぐべきであるということを示すことが可能である。システムがダイアログを実際に引き継ぐべきであるということを呼び出し要求が示している場合には、システムは、対応するクライアントデバイスとの直接のネットワーク通信セッションを確立することが可能である。システムがダイアログを実質的に引き継ぐべきであるということを呼び出し要求が示している場合には、システムは、呼び出し要求を提供したコンポーネントおよび/または関連したコンポーネントと依然として通信している間にダイアログを引き継ぐことが可能である。
【００９５】
ブロック354において、システムは、必須パラメータおよび/または任意選択のパラメータに関する値など、呼び出し要求内に含まれているパラメータに関する値に基づいて応答コンテンツを生成する。
【００９６】
ブロック356において、システムは、応答コンテンツを提供する。たとえば、システムがダイアログを実質的に引き継ぐべきである、および/またはダイアログに従事することなく、意図されているアクションを実行するのみであるべきであると呼び出し要求が示している場合には、システムは、呼び出し要求を送信したコンポーネント(または関連したコンポーネント)へ応答コンテンツを伝送することが可能である。また、たとえば、システムがダイアログを実際に引き継ぐべきであると呼び出し要求が示している場合には、システムは、対応するクライアントデバイスへ応答コンテンツを伝送することが可能である。
【００９７】
ブロック358において、システムは、ブロック356において提供された応答コンテンツへの返答であるさらなるコンテンツを受け取る。さらなるコンテンツは、たとえば、応答コンテンツに応答して提供されたユーザ入力、そのユーザ入力の変換、および/またはそのユーザ入力の注釈を含むことが可能である。たとえば、自動アシスタントまたはその他のコンポーネントが仲介者としての役割を果たしている場合には、自動アシスタントは、そのユーザ入力の変換、および/またはそのユーザ入力の注釈を提供することが可能である。
【００９８】
ブロック360において、システムは、ブロック358の受け取られたさらなるコンテンツに基づいて、さらなる応答コンテンツを生成する。
【００９９】
ブロック362において、システムは、ブロック360において生成されたさらなる応答コンテンツを提供する。システムは、任意選択で、次いでブロック358へ戻り、ブロック358、360、および362の追加の反復を実行することが可能である。いくつかの実施態様においては、システムは、ダイアログを操作してダイアログに従事している間にブロック358、360、および362の複数の反復を実行することが可能であるということが理解される。システムは、1つまたは複数の状況(たとえば、意図されているアクションの実行)の充足に応答して方法300を終了することが可能であり、システムが方法300を終了しているということを示すための通信を、ブロック352の呼び出し要求を提供したコンポーネントへ任意選択で伝送することが可能である。
【０１００】
ブロック358、360、および362は、いくつかの状況においてはそれらが実行されない場合があるということを示すために、図3においては破線で示されている。たとえば、本明細書において記述されているように、いくつかの実施態様においては、システムは、ブロック352の呼び出し要求に応答して、意図されているアクションを実行し、意図されているアクションが実行されたことを示すブロック354における応答コンテンツを生成し、その応答コンテンツをブロック356において提供し、次いで、その呼び出し要求に関連付けられているさらなるコンテンツを受け取らないことが可能である。
【０１０１】
図4、図5、および図6はそれぞれ、ユーザ101、音声対応クライアントデバイス406、および、ユーザ101と、クライアントデバイス406に関連付けられている自動アシスタントと、サードパーティーエージェントとの間において発生する可能性があるダイアログの例を示している。クライアントデバイス406は、1つまたは複数のマイクロフォン、および1つまたは複数のスピーカーを含む。図1の自動アシスタント110の1つまたは複数の態様は、クライアントデバイス406上で、および/またはクライアントデバイス406とネットワーク通信状態にある1つもしくは複数のコンピューティングデバイス上で実施されることが可能である。したがって、説明における容易さのために、図4、図5、および図6の記述において自動アシスタント110が言及されている。
【０１０２】
図4において、ユーザは、「今夜の映画Aの大人用チケットを2枚買ってください」という話された入力480Aを提供する。その話された入力に対応する音声入力が、デバイス606によって生成され、自動アシスタント110に(たとえば、ストリーミング音声入力として)提供される。自動アシスタント110は、音声入力をテキストへ変換すること、およびそのテキストが、「映画チケットを買う」という意図されているアクションを示していると特定することが可能である。自動アシスタント110はさらに、そのテキストが、「大人用チケットの数」というパラメータに関する「2」という値、および「映画の名前」というパラメータに関する「映画A」(または関連付けられている識別子)という値を示しているということを特定することが可能である。
【０１０３】
自動アシスタント110はさらに、「映画チケットを買う」という意図されているアクションに関して定義されている「劇場のロケーション」という追加の必須パラメータが、話された入力480Aによって指定されていないと特定することが可能である。それに応答して、自動アシスタント110は、その必須パラメータに関する値を懇請するために「どの劇場ですか」というプロンプト482Aを生成して提供することが可能である。
【０１０４】
応答出力482Aに応答して、ユーザは、「Baxter Avenueです」というさらなる話された入力480Bを提供する。その話された入力に対応する音声入力が、デバイス606によって生成され、自動アシスタント110に提供される。自動アシスタント110は、音声入力をテキストへ変換すること、およびそのテキストに基づいて、「劇場のロケーション」という必須パラメータに関する値として「Baxter Avenue Theater」(または関連付けられた識別子)を特定することが可能である。
【０１０５】
自動アシスタント110はさらに、2つの3Pエージェント(「3P1」および「3P2」)が、「2」、「映画A」、および「Baxter Avenue Theater」という値を伴って、「映画チケットを買う」という意図されているアクションを実行することができるということを特定することが可能である。いくつかの実施態様においては、自動アシスタント110は、「映画チケットを買う」という意図されているアクションを実行することができる3Pエージェントのさらに大きなグループからそれらを選択することを、それらの選択された3Pエージェントが、特定された値を伴って、意図されているアクションを実行することが可能である一方で、そのさらに大きなグループのその他の3Pエージェントは不可能であることに基づいて行うことができる。
【０１０６】
自動アシスタント110はさらに、それらの選択された3Pエージェント、ならびに、それらの3Pエージェントのそれぞれに関する追加の指定されていないパラメータ(価格)に関する値を識別するプロンプト482Bを生成して提供する。
【０１０７】
応答出力482Bに応答して、ユーザは、「3P2を使います」というさらなる話された入力480Cを提供する。その話された入力に対応する音声入力が、デバイス606によって生成され、自動アシスタント110に提供される。自動アシスタント110は、音声入力をテキストへ変換すること、およびそのテキストに基づいて、3Pエージェント3P2が選択されていると特定することが可能である。自動アシスタント110は次いで、パラメータに関する特定された値とともに、呼び出し要求を3Pエージェント3P2へ送信することが可能である。
【０１０８】
3Pエージェント3P2は次いで、ダイアログを実質的にまたは実際に引き継ぎ(すなわち、操作し)、3Pエージェント3P2によって生成された応答コンテンツに基づいてプロンプト482Cが提供される。プロンプト482Cは、3Pエージェント3P2によって直接、および/または自動アシスタント110を介して提供されることが可能である。
【０１０９】
応答出力482Bに応答して、ユーザは、「7:00のチケットを買ってください」というさらなる話された入力480Cを提供する。その話された入力に対応する音声入力が、デバイス606によって生成され、自動アシスタント110に提供され(自動アシスタント110は次いで、それおよび/または変換を3Pエージェントへ転送する)、および/または直接3Pエージェント3P2に提供される。
【０１１０】
3Pエージェント3P2は、話された入力480D(および/またはその変換)に基づいて、さらなる応答コンテンツを生成し、その応答コンテンツに基づいて応答出力482Dが提供される。ダイアログの操作は、次いで自動アシスタント110へ戻される。
【０１１１】
ユーザは次いで、「Hypothetical Cafeで5:30に2人分のテーブルを予約してください」という話された入力480Eを提供する。その話された入力に対応する音声入力が、デバイス606によって生成され、自動アシスタント110に提供される。自動アシスタント110は、音声入力をテキストへ変換すること、およびそのテキストが、「レストランの予約」という意図されているアクションを示していると特定することが可能である。自動アシスタント110はさらに、そのテキストが、意図されているアクションに関するすべての必須パラメータを示していると特定することが可能である。さらに、自動アシスタント110は、それらのパラメータを伴って、意図されているアクションを実行する目的で呼び出すために特定の3Pエージェントを自動的に選択することが可能である。たとえば、特定の3Pエージェントは、意図されているアクションを実行することができる唯一の3Pエージェントであることに基づいて、または意図されているアクションにとって好ましいものとしてその特定の3Pエージェントを示すユーザアクションおよび/もしくは入力に基づいて選択されることが可能である。呼び出しに応答して、特定の3Pエージェントは、意図されているアクションを実行し、実行を確認する自動アシスタント110への応答コンテンツ、および/またはその他のデータを伝送する。自動アシスタント110は次いで、意図されているアクションが特定の3Pエージェントによって実行されたことを示す応答出力482E、およびその3Pエージェントによって提供される追加のデータ(「Eメールによる確認を送信中です」)を提供する。
【０１１２】
図5においては、話された入力580Aは、話された入力480A(図4)と同様であるが、また「映画の名前」という必須パラメータを指定していない。それに応答して、自動アシスタントは、「劇場のロケーション」および「映画の名前」という両方のパラメータに関する値を懇請するプロンプト582Aを提供する。
【０１１３】
ユーザは次いで、両方のパラメータに関する値を指定する話された入力580Bを提供する。自動アシスタント110は、複数の「映画チケットを買う」ための3Pエージェントのうちで、3Pエージェント3P1が、話された入力580Aおよび580Bに基づいて特定された値を伴って、意図されているアクションを実行することができる唯一の3Pエージェントであるということを特定する。自動アシスタント110は、これを示す、およびユーザが3Pエージェント3P1へ転送されることになるということを示す出力582Bを提供する。その他の実施態様においては、出力582Bは提供されないことが可能であり、ユーザは、代わりに3Pエージェント3P1へ直接転送されることが可能である。
【０１１４】
自動アシスタント110は、特定された値を伴って3Pエージェント3P1を呼び出し、3Pエージェント3P1からの応答コンテンツに基づいてプロンプト582Cが提供される。話された入力580Cは、ユーザが3Pエージェント3P1から映画チケットを購入したがっているということを確認する。出力582Dが次いで、購入を確認するために応答コンテンツに基づいて3Pエージェント3P1から提供される。
【０１１５】
図6は、話された入力680A〜Fおよび応答出力682A〜E、ならびにサードパーティーエージェント3P4が最初に呼び出されて出力682Cおよび682Dにおけるダイアログを操作する状況を示している。しかしながら、その他の対応可能な3Pエージェント3P5へ切り替えたいという要望を示す話された入力680Eに応答して、自動アシスタント110が介入し、3Pエージェント3P4をダイアログから終了させる一方で3Pエージェント3P5を呼び出す。出力682Eが次いで、応答コンテンツに基づいて3Pエージェント3P5から提供される。3Pエージェント3P5を呼び出す際に、自動アシスタント110は、話された入力680Bおよび680Dに基づいて特定されたパラメータに関する値を提供するということに留意されたい。したがって、3Pエージェント3P5は、3Pエージェント3P4によって操作されたダイアログ中に特定されたパラメータ(「車のサイズ」)に関する値(「大きな車」)を考慮に入れる応答コンテンツを生成することが可能である。これは、改善されたユーザ経験につながることが可能であり、計算リソースを少なくすることが可能である(たとえば、さもなければ、計算リソースは、3Pエージェント3P5が「車のサイズ」というパラメータに関する値を促した応答コンテンツを生成しなければならなかった場合に消費されるであろう)。
【０１１６】
図7は、別のクライアントデバイス706、およびクライアントデバイス706のディスプレイスクリーン740を示している。クライアントデバイス706は、自動アシスタント110を含むこと、および/または自動アシスタント110と通信状態にあることが可能である。ディスプレイスクリーン740は、ユーザが仮想キーボードを介してユーザ入力を生成するために選択することができる返答インターフェース要素788と、ユーザがマイクロフォンを介してユーザ入力を生成するために選択することができる音声返答インターフェース要素789とを含む。いくつかの実施態様においては、ユーザは、音声返答インターフェース要素789の選択を伴わずにマイクロフォンを介してユーザ入力を生成することが可能である。たとえば、ダイアログセッション中に、マイクロフォンを介して可聴式のユーザインターフェース入力のためのアクティブモニタリングが発生して、音声返答インターフェース要素789をユーザが選択する必要性をなくすことが可能である。それらのうちのいくつかにおいては、および/またはその他の実施態様においては、音声返答インターフェース要素789は、省略されることが可能である。その上、いくつかの実施態様においては、返答インターフェース要素788は、追加として、および/または代替として、省略されることが可能である(たとえば、ユーザは、可聴式のユーザインターフェース入力を提供することのみが可能である)。ディスプレイスクリーン740はまた、1つまたは複数のアクションをクライアントデバイス710に実行させるためにユーザによって対話されることが可能であるシステムインターフェース要素781、782、783を含む。
【０１１７】
図7においては、ダイアログは、図4のダイアログと同様であり、図4におけるように共通の自動アシスタントインターフェースを介して発生する(ただしそれは、図4のインターフェースとは異なるインターフェースである)。しかしながら、図7は、別々のインターフェースが使用される、および/または別々のユーザインターフェース入力デバイスが利用可能である場合に対話どうしがいかに異なり得るかについてのいくつかの例を示している。
【０１１８】
図7において、ユーザは、「今夜の映画Aの大人用チケットを2枚買ってください」というタイプされたまたは話された入力780Aを提供する。その入力に基づいて、自動アシスタント110は、「映画チケットを買う」という意図されているアクションを特定することが可能である。自動アシスタント110はさらに、「大人用チケットの数」というパラメータに関する「2」という値、および「映画の名前」というパラメータに関する「映画A」(または関連付けられている識別子)という値を特定することが可能である。
【０１１９】
自動アシスタント110はさらに、「映画チケットを買う」という意図されているアクションに関して定義されている「劇場のロケーション」という追加の必須パラメータが入力780Aによって指定されていないと特定することが可能である。それに応答して、自動アシスタント110は、その必須パラメータに関する値を懇請するためにプロンプト782Aを生成して提供することが可能である。図7においては、ユーザは、さらなる話されたまたはタイプされたテキスト入力を提供することなく、下線付きの「ここ」という用語のうちのいずれかを「タップ」して、対応する劇場を選択することが可能であるということに留意されたい。しかしながら、ユーザは、代わりに「Baxter Avenue」という話されたまたはタイプされた入力780Bを提供している。
【０１２０】
入力780Bに基づいて、自動アシスタント110は、「劇場のロケーション」という必須パラメータに関する値として「Baxter Avenue Theater」(または関連付けられた識別子)を特定することが可能である。自動アシスタント110はさらに、2つの3Pエージェント(「3P1」および「3P2」)が、「2」、「映画A」、および「Baxter Avenue Theatre」という値を伴って、「映画チケットを買う」という意図されているアクションを実行することができるということを特定することが可能である。
【０１２１】
自動アシスタント110はさらに、それらの選択された3Pエージェント、ならびに、それらの3Pエージェントのそれぞれに関する追加の指定されていないパラメータ(価格)に関する値を識別するプロンプト782Bを生成して提供する。図7においては、ユーザは、下線付きの「3P1」を「タップ」して、対応するエージェントを選択することが可能であり、または下線付きの「3P2」を「タップ」して、対応するエージェントを選択することが可能であるということに留意されたい。ユーザは、任意選択で、話されたまたはタイプされた入力を提供できることも可能である。
【０１２２】
図7の例においては、ユーザは、下線付きの「3P2」をタップしている。応答「タップ」入力に応答して、自動アシスタントは、3Pエージェント3P2を選択している。自動アシスタント110は次いで、パラメータに関する特定された値とともに、呼び出し要求を3Pエージェント3P2へ送信することが可能である。
【０１２３】
3Pエージェント3P2は次いで、ダイアログを実質的にまたは実際に引き継ぎ、3Pエージェント3P2によって生成された応答コンテンツに基づいてプロンプト782Cが提供される。プロンプト782Cは、3Pエージェント3P2によって直接、および/または自動アシスタント110を介して提供されることが可能である。ダイアログは、図7における省略記号によって示されているように、さらに続くことが可能である。
【０１２４】
図8は、本明細書において記述されている技術の1つまたは複数の態様を実行するために任意選択で利用されることが可能である例示的なコンピューティングデバイス810のブロック図である。いくつかの実施態様においては、デバイス106、自動アシスタント110、3Pエージェント、および/またはその他のコンポーネントのうちの1つまたは複数が、例示的なコンピューティングデバイス810の1つまたは複数のコンポーネントを含むことが可能である。
【０１２５】
コンピューティングデバイス810は、典型的には、バスサブシステム812を介して複数の周辺デバイスと通信する少なくとも1つのプロセッサ814を含む。これらの周辺デバイスは、ストレージサブシステム824(たとえば、メモリサブシステム825およびファイルストレージサブシステム826を含む)、ユーザインターフェース出力デバイス820、ユーザインターフェース入力デバイス822、ならびにネットワークインターフェースサブシステム816を含むことが可能である。入力デバイスおよび出力デバイスは、コンピューティングデバイス810とのユーザ対話を可能にする。ネットワークインターフェースサブシステム816は、ネットワーク外へのインターフェースを提供し、その他のコンピューティングデバイス内の対応するインターフェースデバイスに結合されている。
【０１２６】
ユーザインターフェース入力デバイス822は、キーボード、ポインティングデバイス(たとえば、マウス、トラックボール、タッチパッド、もしくはグラフィックスタブレット)、スキャナ、ディスプレイ内に組み込まれているタッチスクリーン、オーディオ入力デバイス(音声認識システム、マイクロフォンなど)、および/またはその他のタイプの入力デバイスを含むことが可能である。一般には、「入力デバイス」という用語の使用は、コンピューティングデバイス810内に、または通信ネットワーク上に情報を入力するためのすべての可能なタイプのデバイスおよび方法を含むことを意図されている。
【０１２７】
ユーザインターフェース出力デバイス820は、ディスプレイサブシステム、プリンタ、ファックス機、または、オーディオ出力デバイスなどの非視覚的なディスプレイを含むことが可能である。ディスプレイサブシステムは、ブラウン管(CRT)、フラットパネルデバイス(液晶ディスプレイ(LCD)など)、投影デバイス、または、可視画像を作成するためのその他の何らかのメカニズムを含むことが可能である。ディスプレイサブシステムは、オーディオ出力デバイスを介するなど、非視覚的なディスプレイを提供することも可能である。一般には、「出力デバイス」という用語の使用は、コンピューティングデバイス810からユーザへ、または別のマシンもしくはコンピューティングデバイスへ情報を出力するためのすべての可能なタイプのデバイスおよび方法を含むことを意図されている。
【０１２８】
ストレージサブシステム824は、本明細書において記述されているモジュールのうちのいくつかまたはすべての機能性を提供するプログラミングおよびデータ構造を格納している。たとえば、ストレージサブシステム824は、図2A、図2B、および/または図3の方法の選択された態様を実行するためのロジックを含むことが可能である。
【０１２９】
これらのソフトウェアモジュールは一般に、プロセッサ814のみによって、またはその他のプロセッサとの組合せで実行される。ストレージサブシステム824において使用されているメモリ825は、プログラムの実行中における命令およびデータの格納のためのメインランダムアクセスメモリ(RAM)830と、固定された命令が格納されている読み取り専用メモリ(ROM)832とを含む複数のメモリを含むことが可能である。ファイルストレージサブシステム826は、プログラムおよびデータファイルのための永続的な格納を提供することが可能であり、ハードディスクドライブ、関連付けられている取り外し可能なメディアを伴うフロッピーディスクドライブ、CD-ROMドライブ、光ドライブ、または取り外し可能なメディアカートリッジを含むことが可能である。特定の実施態様の機能性を実施するモジュールは、ストレージサブシステム824内のファイルストレージサブシステム826により、またはプロセッサ814によってアクセス可能なその他のマシン内に格納されることが可能である。
【０１３０】
バスサブシステム812は、コンピューティングデバイス810のさまざまなコンポーネントおよびサブシステムに、意図されているように互いに通信させるためのメカニズムを提供する。バスサブシステム812は、概略的に単一のバスとして示されているが、バスサブシステムの代替実施態様は、複数のバスを使用することが可能である。
【０１３１】
コンピューティングデバイス810は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、またはその他の任意のデータ処理システムもしくはコンピューティングデバイスを含むさまざまなタイプのものであることが可能である。コンピュータおよびネットワークの絶え間なく変わる性質に起因して、図8において示されているコンピューティングデバイス810の記述は、いくつかの実施態様を例示する目的での特定の例としてのみ意図されている。図8において示されているコンピューティングデバイスよりも多くのまたは少ないコンポーネントを有するコンピューティングデバイス810のその他の多くの構成が可能である。
【０１３２】
本明細書において論じられている特定の実施態様が、ユーザに関する個人情報(たとえば、その他の電子通信から抽出されたユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザのロケーション、ユーザの時間、ユーザのバイオメトリック情報、ならびにユーザのアクティビティーおよび人口統計情報)を収集または使用することが可能である状況においては、ユーザは、情報が収集されるかどうか、個人情報が格納されるかどうか、個人情報が使用されるかどうか、および情報がユーザに関してどのように収集、格納、および使用されるかを制御するための1つまたは複数の機会を提供される。すなわち、本明細書において論じられているシステムおよび方法は、ユーザの個人情報を収集、格納、および/または使用することを、そうするための関連したユーザからの明示的な承認を受け取ったときにのみ行う。たとえば、ユーザは、プログラムまたは機能が、そのプログラムまたは機能に関連したその特定のユーザまたはその他のユーザに関するユーザ情報を収集するかどうかについての制御を提供される。個人情報が収集されることになるそれぞれのユーザは、情報が収集されるかどうかに関して、および情報のどの部分が収集されることになるかに関して許可または承認を提供する目的で、そのユーザに関連した情報収集についての制御を可能にするための1つまたは複数のオプションを提示される。たとえば、ユーザは、通信ネットワークを介して1つまたは複数のそのような制御オプションを提供されることが可能である。加えて、特定のデータは、格納または使用される前に、個人を識別できる情報が削除されるような1つまたは複数の方法で処理されることが可能である。一例として、ユーザのアイデンティティーは、個人を識別できる情報が特定されることが不可能であるように処理されることが可能である。別の例として、ユーザの地理的ロケーションは、ユーザの特定のロケーションが特定されることが不可能であるように、より大きな領域へ一般化されることが可能である。
【０１３３】
いくつかの実施態様が本明細書において記述および例示されているが、本明細書において記述されている機能を実行するための、ならびに/または結果、および/もしくは利点のうちの1つもしくは複数を入手するためのさまざまなその他の手段および/または構造が利用されることが可能であり、そのような変形形態および/または修正形態のそれぞれは、本明細書において記述されている実施態様の範囲内にあるとみなされる。より一般的には、本明細書において記述されているすべてのパラメータ、寸法、材料、および構成は、例示的なものであり、実際のパラメータ、寸法、材料、および/または構成は、本教示が使用される特定の1つまたは複数の用途に依存することになる。当業者なら、日常的なものにすぎない実験を使用して、本明細書において記述されている特定の実施態様に対する多くの均等物を認識するか、または確認できるであろう。したがって、前述の実施態様は単なる例として提示されているということ、ならびに添付の特許請求の範囲およびそれに対する均等物の範疇内で、実施態様は、具体的に記述され特許請求されている以外の形で実施されることが可能であるということを理解されたい。本開示の実施態様は、本明細書において記述されているそれぞれの個々の機能、システム、物品、材料、キット、および/または方法を対象としている。加えて、2つ以上のそのような機能、システム、物品、材料、キット、および/または方法のいかなる組合せも、そのような機能、システム、物品、材料、キット、および/または方法どうしが相互に矛盾しない場合には、本開示の範囲内に含まれる。
【符号の説明】
【０１３４】
106  クライアントデバイス
110  自動アシスタント
112  入力処理エンジン
120  3Pエージェントエンジン
122  パラメータモジュール
124  エージェント選択モジュール
126  ダイアログモジュール
128  呼び出しモジュール
130  ローカルコンテンツエンジン
135  出力エンジン
140A〜N  サードパーティー(3P)エージェント
152  3Pエージェントデータベース
154  ローカルコンテンツモデル
406  音声対応クライアントデバイス
480A  話された入力
480B  さらなる話された入力
480C  さらなる話された入力
480D  話された入力
480E  話された入力
482A  プロンプト
482B  応答出力
482C  プロンプト
482D  応答出力
482E  応答出力
580A  話された入力
580B  話された入力
580C  話された入力
582A  プロンプト
582B  出力
582C  プロンプト
582D  出力
606  デバイス
680A〜F  話された入力
682A〜E  応答出力
706  クライアントデバイス
740  ディスプレイスクリーン
780A  話された入力
780B  話されたまたはタイプされた入力
782A  プロンプト
782B  プロンプト
782C  プロンプト
788  返答インターフェース要素
789  音声返答インターフェース要素
810  コンピューティングデバイス
812  バスサブシステム
814  プロセッサ
816  ネットワークインターフェース
820  ユーザインターフェース出力デバイス
822  ユーザインターフェース入力デバイス
824  ストレージサブシステム
825  メモリサブシステム
826  ファイルストレージサブシステム
830  メインランダムアクセスメモリ(RAM)
832  読み取り専用メモリ(ROM)
【図１】
0006963700.tif 000002
【図２Ａ】
0006963700.tif 000003
【図２Ｂ】
0006963700.tif 000004
【図３】
0006963700.tif 000005
【図４】
0006963700.tif 000006
【図５】
0006963700.tif 000007
【図６】
0006963700.tif 000008
【図７】
0006963700.tif 000009
【図８】
0006963700.tif 000010