図1は、本開示の1つまたは複数の態様による、1つまたは複数の例示的な仮想アシスタントを実行する例示的なシステムを示す概念図である。図1のシステム100は、ネットワーク130を介してコンピューティングデバイス110Aおよび110B(集合的にコンピューティングデバイス110とする)と通信しているデジタルアシスタントサーバ160を含む。システム100は、デジタルアシスタントサーバ160およびコンピューティングデバイス110の間に分散しているものとして示してあるが、他の例では、システム100に属する特徴および技術がコンピューティングデバイス110のローカル構成要素によって内部で実行されることもある。同様に、デジタルアシスタントサーバ160が、特定の構成要素を含み、以下の説明では他のかたちでコンピューティングデバイス110に属するものとされる様々な技術を実行することもある。図1は、2つのコンピューティングデバイス110Aおよび110Bを示しているが、2つ以上の任意の適当な数のコンピューティングデバイス110を使用し得る。
コンピューティングデバイス110は、ネットワーク130を介してデジタルアシスタントサーバ160と通信して、デジタルアシスタントサーバ160によって提供される仮想アシスタントサービスにアクセスし得る。ネットワーク130は、例えばセルラネットワーク、Wi-Fiネットワーク、および/またはその他のタイプのネットワークなど、コンピューティングシステム、サーバ、およびコンピューティングデバイスの間でデータを伝送する任意の公衆または私設通信ネットワークを代表するものである。デジタルアシスタントサーバ160は、ネットワーク130を介してコンピューティングデバイス110とデータを交換して、コンピューティングデバイス110がネットワーク130に接続されているときにコンピューティングデバイス110がアクセスできる仮想アシスタントサービスを提供し得る。
ネットワーク130は、動作可能に相互結合され、それによりデジタルアシスタントサーバ160とコンピューティングデバイス110との間の情報の交換を実現する、1つまたは複数のネットワークハブ、ネットワークスイッチ、ネットワークルータ、またはその他の任意のネットワーク機器を含む可能性がある。コンピューティングデバイス110およびデジタルアシスタントサーバ160は、任意の適当な技術を使用してネットワーク130を介してデータを伝送および受信し得る。コンピューティングデバイス110およびデジタルアシスタントサーバ160はそれぞれ、それぞれのネットワークリンクを用いて動作可能にネットワーク130に結合し得る。コンピューティングデバイス110およびデジタルアシスタントサーバ160をネットワーク130に結合するリンクは、イーサネット(登録商標)またはその他のタイプのネットワーク接続であり得るし、このような接続は、ワイヤレス接続および/または有線接続であり得る。
デジタルアシスタントサーバ160は、1つまたは複数のデスクトップコンピュータ、ラップトップコンピュータ、メインフレーム、サーバ、クラウドコンピューティングシステムなど、ネットワーク130などのネットワークへの情報の送信およびネットワークからの情報の受信の両方を行うことができる任意の適当な遠隔コンピューティングシステムを表し得る。デジタルアシスタントサーバ160は、仮想アシスタントサービスのホストとなる(または少なくとも仮想アシスタントサービスへのアクセスを提供する)。いくつかの例では、デジタルアシスタントサーバ160は、クラウドを介したそれぞれのサービスへのアクセスを提供するクラウドコンピューティングシステムを表すこともある。
第三者(3P)サーバシステム170は、1つまたは複数のデスクトップコンピュータ、ラップトップコンピュータ、メインフレーム、サーバ、クラウドコンピューティングシステムなど、ネットワーク130などのネットワークへの情報の送信およびネットワークからの情報の受信の両方を行うことができる任意の適当な遠隔コンピューティングシステムを表し得る。いくつかの例では、第三者サーバシステム170は、クラウドを介したそれぞれのサービスへのアクセスを提供するクラウドコンピューティングシステムを表すこともある。第三者サーバシステム170は、実行されるとアシスタントモジュール122が様々なアクションを実行するのを支援し得る第三者アプリケーション172のホストとなる(または少なくとも第三者アプリケーション172へのアクセスを提供する)。例えば、第三者アプリケーション172は、映画チケット購入アプリケーション、およびレストラン予約アプリケーションなどを含む可能性がある。アシスタントモジュール122は、第三者アプリケーション172と通信して、映画のチケットの購入またはレストランの予約などの特定のアクションを実行するように第三者アプリケーション172に指示し得る。
コンピューティングデバイス110は、ネットワーク130を介して提供される仮想アシスタントサービスにアクセスするように構成された個々のモバイルまたは非モバイルのコンピューティングデバイスを表す。コンピューティングデバイス110の例は、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバ、メインフレーム、セットトップボックス、テレビジョン、ウェアラブルデバイス(例えばコンピュータ内蔵腕時計、コンピュータ内蔵アイウェア、コンピュータ内蔵手袋など)、ホームオートメーションデバイスまたはシステム(例えばインテリジェントサーモスタットまたはセキュリティシステム)、音声インタフェースまたはカウンタトップホームアシスタントデバイス、携帯情報端末(PDA)、ゲームシステム、メディアプレイヤ、電子書籍リーダ、モバイルテレビジョンプラットフォーム、自動車ナビゲーションまたはインフォテインメントシステム、あるいはネットワーク130などのネットワークを介して仮想アシスタントを実行する、または仮想アシスタントにアクセスし、情報を受信するように構成されたその他の任意のタイプのモバイル、非モバイル、ウェアラブル、および非ウェアラブルコンピューティングデバイスを含む。
図1の例では、デジタルアシスタントサーバ160は、アシスタントモジュール122C、およびユーザ情報データ記憶装置124Cを含む。コンピューティングデバイス110Aは、ユーザインタフェース構成要素(UIC)112A、ユーザインタフェース(UI)モジュール120A、アシスタントモジュール122A、およびユーザ情報データ記憶装置124Aを含む。コンピューティングデバイス110Aと同様に、コンピューティングデバイス110Bは、UIC112B、UIモジュール120B、アシスタントモジュール122B、およびユーザ情報データ記憶装置124Bを含むことがある。
モジュール120A、120B、122A〜122C、および124A〜124Cは、コンピューティングデバイス110A、コンピューティングデバイス110B、またはデジタルアシスタントサーバ160のうちの1つに常駐し、かつ/またはそこで実行されるソフトウェア、ハードウェア、ファームウェア、またはハードウェア、ソフトウェア、およびファームウェアの混合物を用いて記述される動作を実行し得る。コンピューティングデバイス110A、コンピューティングデバイス110B、およびデジタルアシスタントサーバ160は、複数のプロセッサまたは複数のデバイスでモジュール120A、120B、122A〜122C、および124A〜124Cを実行し得る。コンピューティングデバイス110A、コンピューティングデバイス110B、およびデジタルアシスタントサーバ160は、モジュール120A、120B、122A〜122C、および124A〜124Cを、基礎となるハードウェア上で実行される仮想マシンとして実行し得る。モジュール120A、120B、122A〜122C、および124A〜124Cは、オペレーティングシステムまたはコンピューティングプラットフォームの1つまたは複数のサービスとして、あるいはオペレーティングシステムまたはコンピューティングプラットフォームの1つまたは複数の実行可能プログラムとして実行されることもある。
コンピューティングデバイス110のUIC112は、コンピューティングデバイス110Aの入力および/または出力デバイスとして機能し得る。UIC112は、様々な技術を用いて実施される可能性がある。例えば、UIC112は、抵抗性タッチスクリーン、表面弾性波タッチスクリーン、容量性タッチスクリーン、投影静電容量式タッチスクリーン、感圧式スクリーン、音響パルス認識タッチスクリーン、またはその他の感圧式ディスプレイ技術などの存在感知型入力スクリーンを使用した入力デバイスとして機能することもある。
UIC112は、マイクロフォン技術、赤外線センサ技術、またはその他のユーザ入力を受け取る際に使用される入力デバイス技術を用いる入力デバイスとして機能もし得る。例えば、UIC112は、内蔵マイクロフォン技術を使用して、UIモジュール120および/またはアシスタントモジュール122がタスクを完了するために処理する音声入力を検出し得る。別の例として、UIC112は、コンピューティングデバイス110のユーザから触覚入力を受け取り得る存在感知型ディスプレイを含むことがある。UIC112は、ユーザからの1つまたは複数のジェスチャを検出することによって触覚入力についての指示(例えば、ユーザが指またはスタイラスペンによってUIC112の1つまたは複数の位置に触れる、または1つまたは複数の位置を指すこと)を受け取り得る。
UIC112は、出力(例えば表示)デバイスとして機能して、ユーザに対して出力を提示もし得る。UIC112は、液晶ディスプレイ(LCD)、ドットマトリクスディスプレイ、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、電子ペーパー(e-ink)、あるいは可視情報をコンピューティングデバイス110のユーザに対して出力し得るそれらに類するモノクロまたはカラーのディスプレイなど、任意の1つまたは複数の表示デバイスを使用した出力デバイスとして機能し得る。UIC112は、ユーザに対して情報を出力する際に使用されるスピーカ技術、触覚フィードバック技術、またはその他の出力デバイス技術を使用した出力デバイスとして機能もし得る。UIC112は、アシスタントモジュール122によって提供される仮想アシスタントに関係するユーザインタフェース(例えばユーザインタフェース114)を提示し得る。UIC112は、コンピューティングプラットフォーム、オペレーティングシステム、アプリケーション、ならびに/あるいはコンピューティングデバイス110で実行されるサービス、および/またはコンピューティングデバイス110からアクセス可能なサービス(例えば電子メール、チャット、オンラインサービス、電話、ゲームなど)の他の特徴に関係するユーザインタフェースを提示もし得る。
コンピューティングデバイス110のUIC112は、同じ、または異なるセットの入力デバイスおよび/または出力デバイスを含む可能性がある。例えば、コンピューティングデバイス110AのUIC112Aは、表示デバイスまたは感圧式入力スクリーンを含まないが、コンピューティングデバイス110BのUIC112Bは表示デバイスまたは感圧式入力スクリーンを含むということもある。別の例では、コンピューティングデバイス110AのUIC112Aおよびコンピューティングデバイス110BのUIC112Bが両方とも表示デバイスまたは感圧式入力スクリーンを含むが、UIC112Aに含まれる表示デバイスが、UIC112Bより小さいサイズ(小さい可視領域)であることもある。
UIモジュール120は、コンピューティングデバイス110のUIC112およびその他の構成要素とのユーザ対話を管理し得るし、デジタルアシスタントサーバ160と対話して、UIC112を介してアシスタントサービスを提供し得る。UIモジュール120およびUIC112は、様々な時点で、またユーザとコンピューティングデバイス110の位置が異なるときに、ユーザがユーザインタフェースと対話するときにユーザからの入力(例えば音声入力、ジェスチャ入力など)を示す1つまたは複数の指示を受け取り得る。UIモジュール120およびUIC112は、UIC112で検出された入力を解釈し得るし、アシスタントモジュール122、ならびに/あるいはコンピューティングデバイス110で実行される1つまたは複数のその他の関連するプラットフォーム、オペレーティングシステム、アプリケーション、および/またはサービスにUIC112で検出された入力についての情報を中継して、コンピューティングデバイス110に様々な機能を実行させ得る。
UIモジュール120は、コンピューティングデバイス110AのユーザがUIC112で出力を見、かつ/または入力を提供するときに、UIC112にユーザインタフェースを出力または表示するなどして提示させることもし得る。例えば、図1に示すように、UIモジュール120Bは、UIC112BにUIC112Bのディスプレイスクリーンにユーザインタフェース114を表示させる命令を、UIC112Bに送信することもある。UIモジュール120は、また、オーディオ出力など非視覚的形態のユーザインタフェースをUIC112に出力させることもし得る。例えば、図1に示すように、UIモジュール120は、UIC112に音声出力を含むオーディオを出力させる命令をUIC112に送信することもある。図1の例では、ユーザインタフェース114は、グラフィカルユーザインタフェースである。ユーザインタフェース114は、いくつかの例では、可聴式ユーザインタフェースであることもある。ユーザインタフェース114は、可聴音、振動、テキスト、グラフィック、コンテンツカード、画像など、様々な形態の仮想アシスタント情報を含む可能性がある。
UIモジュール120およびUIC112は、様々な時点で、またユーザとコンピューティングデバイス110Aの位置が異なるときに、ユーザがユーザインタフェース114と対話するときにユーザからの入力(例えば音声入力、タッチ入力、非タッチ入力または感圧入力、ビデオ入力、オーディオ入力など)を示す1つまたは複数の指示を受け取り得る。UIモジュール120およびUIC112は、UIC112で検出された入力を解釈し得るし、アシスタントモジュール122 A、ならびに/あるいはコンピューティングデバイス110Aで実行される1つまたは複数のその他の関連するプラットフォーム、オペレーティングシステム、アプリケーション、および/またはサービスにUIC112で検出された入力についての情報を中継して、コンピューティングデバイス110Aに様々な機能を実行させ得る。
UIモジュール120は、コンピューティングデバイス110Aで実行される1つまたは複数の関連するプラットフォーム、オペレーティングシステム、アプリケーション、および/またはサービス、ならびに/あるいはアシスタントサーバ160など1つまたは複数の遠隔のコンピューティングシステムから、情報および命令を受け取り得る。さらに、UIモジュール120は、コンピューティングデバイス110Aで実行される1つまたは複数の関連するプラットフォーム、オペレーティングシステム、アプリケーション、および/またはサービスと、コンピューティングデバイス110Aの様々な出力デバイス(例えばスピーカ、LEDインジケータ、オーディオまたは触覚出力デバイスなど)との間の中間体として作用して、コンピューティングデバイス110Aとともに出力(例えばグラフィック、閃光、音声、触覚応答など)を生成もし得る。例えば、UIモジュール120は、UIC112に、UIモジュール120がネットワーク130を介してデジタルアシスタントサーバ160から受け取るデータに基づくユーザインタフェース114を出力させることもある。UIモジュール120は、デジタルアシスタントサーバ160および/またはアシスタントモジュール122Aからの入力として、ユーザインタフェース114として提示される情報(例えばオーディオデータ、テキストデータ、画像データなど)および命令を受け取り得る。
アシスタントモジュール122Aとアシスタントモジュール122Cとが、コンピューティングデバイス110Aを介してアクセスされる仮想アシスタントサービスの一部として、ユーザ情報データ記憶装置124Aおよび124Cを協働して維持することがある。同様に、アシスタントモジュール122Bとアシスタントモジュール122Cとが、コンピューティングデバイス110Bを介してアクセスされる仮想アシスタントサービスの一部として、ユーザ情報データ記憶装置124Bおよび124Cを協働して維持することもある。
明示的なユーザ同意を受け取った後で、アシスタントモジュール122は、例えばコンピューティングデバイス110のユーザとの会話をサポートする動作を実行する間などに、ユーザに関連する情報、またはユーザに関連する情報の位置を指すポインタ(例えばコンピューティングデバイス110に位置する情報源、デジタルアシスタントサーバ160、あるいはネットワーク130上の他の位置に位置するその他の任意のサーバまたはデバイスによって記憶される)を自動的に維持し得る。アシスタントモジュール122は、ユーザに関連する情報、またはユーザに関連する情報を指すポインタを、ユーザ情報データ記憶装置124に維持し得る。データ記憶装置124は、アシスタントモジュール122によって実行されるアシスタントが、現実世界のタスクまたは仮想タスクを完了する、あるいはその他のかたちでコンピューティングデバイス110のユーザの即時および/または将来の必要に応答するためにそのアシスタントが必要とするユーザ情報に迅速にアクセスすることを可能にし得る。
例えば、ユーザに関連する情報は、ユーザとアシスタントとの間の会話中にユーザからの許可によって得られる情報、カレンダ情報、連絡先情報、ユーザの関心、ユーザの好み、およびアシスタントモジュール122が意味のある情報をユーザに提供するために使用される可能性があるユーザに関連するその他の任意の情報である可能性がある。ユーザに関連する情報の情報源の例は、これらに限定されるわけではないが、ユーザに関連するコンピューティングデバイス、電子メールシステムに内蔵された情報、アシスタントモジュール122とのユーザ対話、ユーザに関連するデバイス上で(例えばコンピューティングデバイス110)のユーザ対話およびアプリケーション使用状況、またはその他の情報源を含む可能性がある。
本明細書を通じて使用する「会話」という用語は、初期セットアップ時、インストール時、初めて使うときなどに行われる可能性がある対話に対して、コンピューティングデバイスのユーザと、そのコンピューティングデバイスで実行される、またはそのコンピューティングデバイスからアクセス可能なアシスタントとの間の通常の対話を指す。換言すれば、会話は、ユーザによるアシスタントの毎日の使用中に、ユーザがアシスタントのセットアップ以外のタスクを実行しているときに発生する。本明細書で使用する「会話」は、ユーザがアプリケーションのセットアップの一部として質問に答えるなどしてアシスタントと対話すること、またはユーザインタフェースのプリセットフィールドを埋めるための情報を提供することは指さない。
いくつかの例では、会話は、ユーザからアシスタントモジュール122に送信される一連の(例えば1つまたは複数の)問合せまたは要求、およびアシスタントモジュール122によって生成され、UIC112によって出力されるそれらの問合せまたは要求に対する応答を含むことがある。問合せまたは要求の例は、「可愛い子犬の写真がないかインターネットを検索して」、「去年のアカデミー賞受賞者のリストを見せて」、または「今日は雨が降る?」など、コマンドまたは質問の形態の自然言語フレーズを含む可能性がある。問合せまたは要求に対する応答の例は、問合せまたは要求を構成するコマンドまたは質問に答えるためにUIC112によって出力される、アカデミー賞受賞者のリストの出力などの可聴的に提示されるリストの出力、「今日は雨は降りそうにありません」などの自然言語フレーズ、および子犬のグラフィックまたはビデオ表現などを含むことがある。
アシスタントモジュール122Cおよびユーザ情報データ記憶装置124Cは、例示的なアシスタントのサーバ側またはクラウド実施態様を表し、アシスタントモジュール122A〜122Bおよびユーザ情報データ記憶装置124A〜124Bは、例示的なアシスタントのクライアント側またはローカル実施態様を表す。いくつかの例では、アシスタントモジュール122Aに属する機能の一部または全てが、アシスタントモジュール122Cによって実行されることもある。同様に、いくつかの例では、アシスタントモジュール122Bに属する機能の一部または全てが、アシスタントモジュール122Cによって実行されることもある。さらに、いくつかの例では、アシスタントモジュール122Cに属する機能の一部または全てが、アシスタントモジュール122Aおよび122Bによって実行されることもある。
アシスタントモジュール122は、コンピューティングデバイス110Aまたはコンピューティングデバイス110Bのユーザなどの個人のためのタスクまたはサービスを実行し得るインテリジェントパーソナルアシスタントとして実行されるように構成されたそれぞれのソフトウェアエージェントをそれぞれ含むことがある。アシスタントモジュール122は、これらのタスクまたはサービスを、ユーザから受け取った問合せに対する応答の生成の一部として実行し得る。アシスタントモジュール122は、これらのタスクまたはサービスを、ユーザ入力(例えばUIC112AまたはUIC112Bで検出される)、位置認識(例えば状況に基づく)、および/あるいは様々な情報源(例えばコンピューティングデバイス110もしくはデジタルアシスタントサーバ160にローカルに記憶されている、検索サービスを介して得られる、第三者アプリケーション172によって得られる、またはインターネットを介してその他のサービスもしくは情報サービスにアクセスすることによって得られる)のその他の情報(例えば気象状況または交通状況、ニュース、株価、スポーツの点数、ユーザのスケジュール、輸送機関のスケジュール、小売価格など)にアクセスし得る能力に基づいて実行し得る。発語によるユーザ入力に基づいてタスクまたはサービスを実行することを、本明細書では、ユーザ発語を満足すると表現することもある。アシスタントモジュール122は、人工知能および/または機械学習技術を実行して、ユーザの代わりに1つまたは複数のタスクを自動的に識別して完了し得る。
いくつかの例では、アシスタントモジュール122は、発語によるユーザ入力に基づいてタスクまたはサービスを実行し得る。UIC112の1つまたは複数のマイクロフォンは、発語によるユーザ入力を受け取り得るし、アシスタントモジュール122は、UIC112のこの1つまたは複数のマイクロフォンによって生成されるオーディオデータを(すなわちUIモジュール120AまたはUIモジュール120Bから)受け取り得る。アシスタントモジュール122は、音声受信がアクティブであるときに、受け取ったオーディオデータを選択的に処理して発語を認識し得る。音声受信は、いくつかの方法法で起動し得る。1例として、アシスタントモジュール122は、受け取ったオーディオデータ内での所定の起動フレーズ(例えば「聞いて、アシスタント」)の認識に応答して音声受信を起動することもある。別の例として、UIモジュール120は、ユーザによるコンピューティングデバイス110のうちの1つの音声受信ボタンの押圧に応答して、モジュール122に音声受信を起動させることもある。
アシスタントモジュール122は、タスクを実行し、そのタスクを実行した結果を、コンピューティングデバイス110の1つまたは複数の構成要素によって提示されるユーザ発語に対する応答として出力することによって、ユーザ発語を満足し得る。例えば、アシスタントモジュール122は、UIC112の1つまたは複数の構成要素(例えばディスプレイ、スピーカなど)に、出力を生成させる(例えばビデオを表示させる、グラフィカルユーザインタフェースを表示させる、音声を発生させる、音声出力を発生させるなど)ことをし得る。いくつかの例では、アシスタントモジュール122が、他のコンピューティングデバイスに出力を提示させることによっていくつかのユーザ発語を満足することが望ましいこともある。例えば、あるユーザ発語を満足するのに別のコンピューティングデバイスの方がより適している場合には、アシスタントモジュール122が、その別のコンピューティングデバイスを介して出力を提示することが望ましいこともある。
本開示の1つまたは複数の技術によれば、コンピューティングデバイス110Aによるユーザからの問合せを示すユーザ入力の受取りに応答して、システム100は、1つまたは複数のタスクを実行して問合せを満足し得るし、その問合せに応答してその1つまたは複数のタスクを実行した結果である応答を、問合せを受け取った同じコンピューティングデバイス110Aが出力するか、またはコンピューティングデバイス110Bなど、要求を受け取った同じコンピューティングデバイス110A以外のシステム100のコンピューティングデバイスが出力するかを決定し得る。このような決定は、コンピューティングデバイス110A上で実行されるアシスタントモジュール122Aによって行われてもよいし、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cによって行われてもよいし、あるいはコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとデジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cの組合せによって行われてもよい。
コンピューティングデバイス110Aがユーザから受け取った問合せ、ならびにコンピューティングデバイス110Aがユーザから受け取った以前の問合せおよびコンピューティングデバイス110Aが出力したそれらの問合せに対する以前の応答は、その問合せを発行したユーザとコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとの間の会話の少なくとも一部分を構成する。アシスタントモジュール122Aは、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cと通信するなどして対話して問合せに対する応答を決定し得るが、コンピューティングデバイス110Aが受け取るそれらの問合せ、およびコンピューティングデバイス110Aが出力する対応する応答は、ユーザとコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとの間の会話を構成すると考えられる。
アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが、コンピューティングデバイス110Bなど、問合せを受け取った同じコンピューティングデバイス110A以外のコンピューティングデバイスを決定した場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザとコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとの間の会話をコンピューティングデバイス110Bにハンドオフしている。これに応答して、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ハンドオフを実行して、アシスタントモジュール122Aが受け取った問合せに対する応答が、112Bを介してコンピューティングデバイス110Bによって出力されるようにし得る。会話をコンピューティングデバイス110Bにハンドオフすることによって、コンピューティングデバイス110Bは、追加の問合せを受け取って、アシスタントモジュール122Bおよび/または122Cを介してそれらの問合せに対する応答を生成して会話を継続し得る。
会話のハンドオフは、ハンドオフ以前の会話の意味論的な意図および文脈情報などの会話に関する情報を、アシスタントモジュール122Bおよび/または122Cが利用できるようにして、アシスタントモジュール122Bおよび/または122Cが、コンピューティングデバイス110Bが受け取った問合せに対する応答を構築する際にそれらの情報を使用できるようにすることを含むことがある。このようにして、アシスタントモジュール122Bおよび/または122Cは、コンピューティングデバイス110Bが受け取った問合せがコンピューティングデバイス110Aで行われた会話の一部分に遡って参照するときでも、それらの問合せに対する関連する応答を生成し得る。
コンピューティングデバイス110Aは、ユーザからの問合せを含むユーザ入力(例えば音声入力、テキスト入力、またはその他の任意の適当な形態のユーザ入力)を受け取り得る。コンピューティングデバイス110Aのアシスタントモジュール122Aは、ユーザからの問合せの受取りに応答して、ユーザの要求を満足する問合せに対する応答、ならびにその応答を提示する形態を決定し得る。例えば、受け取った要求がある位置までの道順を求める要求を含む場合には、アシスタントモジュール122Aは、その要求に対する応答は要求された道順であると決定し、その道順を表示デバイスに表示される対話型マップの形態で提示すると決定し得る。アシスタントモジュール122Aは、コンピューティングデバイス110Aが表示デバイスに動作可能に結合されているかどうか、またはコンピューティングデバイス110Aが道順を対話型マップとして提示し得る対話型マップ作成ソフトウェアを含むかどうかなどを判定することによって、コンピューティングデバイス110Aが道順を対話型マップとして視覚的に提示し得るかを判定し得る。コンピューティングデバイス110Aが道順を対話型マップとして視覚的に提示し得ないとアシスタントモジュール122Aが判定した場合には、アシスタントモジュール122Aは、ユーザが、表示デバイスを含む、または表示デバイスに動作可能に結合された別のコンピューティングデバイス(例えばスマートフォン)と関連付けられているかどうかを判定し得る。ユーザが表示デバイスを含むコンピューティングデバイス110Bに関連付けられているとアシスタントモジュール122Aが判定した場合には、アシスタントモジュール122Aは、その要求をコンピューティングデバイス110Bのアシスタントモジュール122Bにハンドオフし得るし、コンピューティングデバイス110Bは、道順を表示デバイスによって表示されるマップの形態で出力し得る。
図1の例では、コンピューティングデバイス110Aは、UIC112Aを介して、問合せ126を含む音声入力の形態のユーザ入力を受け取り得る。換言すれば、コンピューティングデバイス110Aは、1つまたは複数のオーディオ入力デバイス(例えばマイクロフォン)を介して、「そのレストランにはどのように行けばよいですか」など、ユーザによって発語された音声を受け取り得る。一般に、コンピューティングデバイス110Aへの問合せは、アシスタントモジュール122Aおよび/またはコンピューティングデバイス110Aにその要求に応答して1つまたは複数のアクションまたはタスクを実行することを要求するコンピューティングデバイス110Aとのユーザ対話(例えばユーザ入力)である可能性がある。
問合せの受取りに応答して、コンピューティングデバイス110Aで実行されるアシスタントモジュール122Aおよび/またはデジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cは、1つまたは複数のタスクを実行し、その問合せに対する応答を決定し得る。いくつかの例では、アシスタントモジュール122Aは、その問合せについての指示をデジタルアシスタントサーバ160に送信することなく、その問合せに対する応答を決定し得る。コンピューティングデバイス110Aが音声入力の形態のユーザ入力を受け取った場合には、アシスタントモジュール122Aは、その音声入力を解析して発語を認識したり問合せの意味論的意図を決定したりすることなどによって問合せを処理して、問合せに対する応答を構築し得ることもある。
いくつかの例では、アシスタントモジュール122Aは、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cを利用して、問合せを処理もし得る。コンピューティングデバイス110Aは、少なくとも問合せについての指示をデジタルアシスタントサーバ160に送信して、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cが問合せを処理して発語を認識したり、問合せの意味論的意図を決定したりできるようにし得る。要求が音声入力の形態である例では、要求を示すこのような指示は、その要求のオーディオ記録または音声/テキスト音訳であることもある。要求が(例えばキーボードを介した)テキスト入力の形態である他の例では、ユーザからの要求を示すこのような指示は、ユーザによって入力されたテキストであることもある。問合せについての指示とともに、アシスタントモジュール122Aは、コンピューティングデバイス110Aの識別についての指示、および問合せを発行したユーザについての指示などの追加の情報もデジタルアシスタントサーバ160に送信して、デジタルアシスタントサーバ160が問合せを解析した結果についての指示を適切なコンピューティングデバイスに返送できるようにもし得る。
デジタルアシスタントサーバ160は、問合せを解析した結果についての指示をコンピューティングデバイス110Aに返送し得る。例えば、デジタルアシスタントサーバ160は、認識した発語についての指示、および問合せの意味論的意図についての指示などをコンピューティングデバイス110Aに送信することもある。問合せを解析した結果についての指示のデジタルアシスタントサーバ160からの受取りに応答して、アシスタントモジュール122Aは、その問合せを解析した結果についての指示に少なくとも部分的には基づいて、問合せに対する応答を構築し得る。
いくつかの例では、デジタルアシスタントサーバ160は、コンピューティングデバイス110Aが受け取った問合せに対する応答を、アシスタントモジュール122Aを用いて決定することも、アシスタントモジュール122Aを用いずに決定することもある。コンピューティングデバイス110Aは、少なくとも要求についての指示をデジタルアシスタントサーバ160に送信して、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cが問合せを処理して発語を認識したり、問合せの意味論的意図を決定したり、問合せに応答して実行すべきタスクを決定したりできるようにし得る。要求が音声入力である例では、要求を示すこのような指示は、その要求のオーディオ記録または音声/テキスト音訳であることもある。要求が(例えばキーボードを介した)テキスト入力の形態である他の例では、ユーザからの要求を示すこのような指示は、ユーザによって入力されたテキストであることもある。問合せの処理に応答して、アシスタントモジュール122Cは、その問合せの解析に少なくとも部分的には基づいて、問合せに対する応答を構築し得る。
上記のように、アシスタントモジュール122Aが単独で、またはアシスタントモジュール122Cが単独で、あるいはアシスタントモジュール122Aと122Cとが協働して、アシスタントモジュール122Aが受け取った問合せに対する応答を決定し得る。したがって、本開示ではアシスタントモジュール122Aによって実行されるものとしてアクションを説明することもあるが、それらのアクションは、アシスタントモジュール122C、またはアシスタントモジュール122Aと122Cの組合せによっても同様に実行される可能性があることを理解されたい。さらに、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cによって実行されるものとして本明細書に記載されるアクションは、アシスタントモジュール122Aのみによって実行されるアクション、アシスタントモジュール122Cのみによって実行されるアクション、アシスタントモジュール122Aと122Cの組合せによって実行されるアクション、および第三者アプリケーション172またはその他のインターネットサービスを併用して実行されるアクションなども同様に含む可能性があることも理解されたい。
アシスタントモジュール122Aが受け取った問合せに対する応答を決定し、会話を別のアシスタントモジュールにハンドオフするかどうかを決定する一部として、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザとアシスタントモジュール122Aとの間の会話を追跡して、様々な意味をユーザとアシスタントモジュール122Aとの間の様々な対話と関連付けることによって会話の中で使用される単語およびフレーズの文脈を決定する、あるいはその他のかたちで会話に関係する、またはその他のかたちで関連する文脈情報を決定し得ることもある。例えば、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話を構成する問合せおよび/または応答における単語およびフレーズなど、会話の様々な部分を、場所、日にち、時間、位置、出来事、人などの概念およびカテゴリと関連付け、それらの関連をユーザ情報データ記憶装置124Aおよび/またはユーザ情報データ記憶装置124Cに記憶し得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話の中で使用される単語およびフレーズの文脈を含むこのような文脈情報を決定し、その会話の部分とカテゴリとの間の関連を機械学習およびディープラーニングなどの技術によって決定し得る。このようにして、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話の以前の部分を参照して、ユーザまたはその他のユーザ入力によって使用された様々な単語およびフレーズの意味論的意図を決定して、受け取った問合せに関連する応答を生成し得る。
いくつかの例では、アシスタントモジュール122Cは、会話に関係するこのような文脈情報を決定し、この文脈情報をユーザ情報データ記憶装置124Cに記憶し得る。いくつかの他の例では、アシスタントモジュール122Aが、会話に関係するこのような文脈情報を決定し、その文脈情報をユーザ情報データ記憶装置124Aに記憶することもある。このような文脈情報がユーザ情報データ記憶装置124Aに記憶される場合には、アシスタントモジュール122Aは、会話をコンピューティングデバイス110Bまたは別のコンピューティングデバイスにハンドオーバする一部として、文脈情報をアシスタントモジュール122Cに送信して、ユーザ情報データ記憶装置124Cに記憶されるようにする、またはアシスタントモジュール122Bに送信して、ユーザ情報データ記憶装置124Bに記憶されるようにもし得る。
図1の例では、ユーザは、アシスタントモジュール122Aとの会話132の中で、アシスタントモジュール122Aが、Luigi'sという名前のイタリアンレストランに午後7時のディナーの予約を入れることを要求している。この問合せに応答して、アシスタントモジュール122Aおよび/または122Cは、第三者アプリケーション172のレストラン予約サービスと対話して要求された予約を行うことができ、アシスタントモジュール122Aは、UIC112Aを介して、アシスタントモジュール122AがLuigi'sに午後7時という要求された予約を行ったという確認を出力し得る。アシスタントモジュール122Aおよび/または122Cは、ディナーの予約を出来事と関連付け、Luigi'sをレストランおよび位置と関連付け、午後7時を時間と関連付け、これらの関連を会話132に関連する文脈情報の一部としてユーザ情報データ記憶装置124Aおよび/またはユーザ情報データ記憶装置124Cに記憶もし得る。したがって、ユーザがその後にアシスタントモジュール122Aと対話して、「予約」、「ディナー」および「レストラン」などの単語を含む問合せを発行した場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、記憶されている文脈情報に基づいて、それらの単語がLuigi'sの午後7時のディナーの予約のことを指していると判定し得る。これは、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが、会話132を追跡して、会話132の文脈においてそれらの単語がレストランLuigi'sの午後7時の予約のことを指していると判定しているからである。
アシスタントモジュール122Aが「そのレストランにはどのように行けばよいですか」という問合せ126を受け取ると、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話132から決定されたこのような文脈情報に基づいて問合せ126の意味を決定し得ることがあり、問合せ126の「そのレストラン」というフレーズが、会話132の中で以前に言及されたイタリアンレストラン「Luigi's」を指していると判定し得る。問合せ126内の「そのレストラン」というフレーズを特定のレストラン(例えば「Luigi's」)に関連付けることができることによって、アシスタントモジュール122Aは、問合せ126に対する適切な応答は、ユーザの現在位置からイタリアンレストラン「Luigi's」までの道順であると決定し得る。例えば、アシスタントモジュール122Aは、問合せ126がLuigi'sまでの道順を求める要求であると決定し得るし、Luigi'sまでの道順を含む応答を構築し得る。
問合せに対する応答を決定するのがアシスタントモジュール122Aであるか、アシスタントモジュール122Cであるか、あるいはアシスタントモジュール122Aと122Cの組合せであるかに関わらず、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cの一方または両方が、ユーザとアシスタントモジュール122Aとの間の会話を別のコンピューティングデバイス(例えばコンピューティングデバイス110B)で実行される別のアシスタントモジュール(例えばアシスタントモジュール122B)にハンドオフするかどうかを決定もし得る。会話をハンドオフするかどうかを決定する1つまたは複数のアシスタントモジュール122は、ユーザとコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとの間の会話における問合せに対する応答を決定するのと同じ1つまたは複数のアシスタントモジュール122であってもよいし、異なる1つまたは複数のアシスタントモジュール122であってもよい。
アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが会話をハンドオフする場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザから問合せを受け取ったコンピューティングデバイス110A以外のコンピューティングデバイスに、その問合せに対する応答を出力するように指示することもある。ユーザとアシスタントモジュール122Aとの間の会話を別のコンピューティングデバイスで実行される別のアシスタントにハンドオフすることにより、ハンドオフを受け取ったコンピューティングデバイスが、コンピューティングデバイス110Aで実行されるアシスタントモジュール122Aが受け取った問合せに対する応答を出力すること、およびユーザとアシスタントモジュール122Aとの間の会話のスレッドをピックアップすることを行うことができるようになり、ユーザとアシスタントモジュール122Aとの間で行われた会話の一部分を参照する問合せに対する適切な応答を生成し得るようになる可能性がある。
ユーザとコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとの間の会話がコンピューティングデバイス110Bにハンドオフされるときには、その会話は、コンピューティングデバイス110Bで実行されるアシスタントモジュール122Bにハンドオフされ、ユーザがコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aの代わりにコンピューティングデバイス110Bで実行されるアシスタントモジュール122Bと会話を継続し得るようになる。したがって、ユーザは、マイクロフォン、キーボード、またはコンピューティングデバイス110Bのその他の入力デバイスなどのUIC112Bを介してアシスタントモジュール122Bに対して問合せを送信することによってアシスタントモジュール122Bとの会話を継続し得るし、アシスタントモジュール122Bは、問合せに対する応答を決定し、その応答を表示デバイスおよびスピーカなどのUIC112Bを介して出力し得る。
さらに、上述のように、ユーザとコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとの間の会話がコンピューティングデバイス110Bにハンドオフされるときには、システム100は、コンピューティングデバイス110Bにハンドオフされる会話のスレッドを保存し得る。換言すれば、ユーザが、ハンドオフ前にユーザとコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとの間で行われた会話の一部に遡って参照する問合せをコンピューティングデバイス110Bで実行されるアシスタントモジュール122Bに発行したときに、アシスタントモジュール122Bは、その参照の意図および意味を推測して、それらの問合せに対する適切な応答を決定し得る可能性がある。特に、アシスタントモジュール122Bは、ユーザのアシスタントモジュール122Aとの会話中にアシスタントモジュール122Aおよび/またはアシスタントモジュール122Cによって決定されたその会話に関連する文脈情報を利用して、ユーザの問合せを、そのユーザとコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとの間で行われた会話の一部分の間に以前に言及された概念、要素、場所、時間、および出来事などに結びつけることができる。
いくつかの例では、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、問合せの一部として、会話を別のコンピューティングデバイスにハンドオフする明示的な命令を(例えばユーザから)受け取ることがある。例えば、問合せ126が「そのレストランまでの道順を私の電話に送信して下さい」というものであった場合には、アシスタントモジュール122Aおよび/または122Cは、コンピューティングデバイス110Aおよび/またはデジタルアシスタントサーバ160のユーザ情報データ記憶装置124に記憶されている情報、あるいはクラウドを介して記憶され、かつ/またはアクセス可能であるそのユーザに関連するコンピューティングデバイスに関する情報に基づいて、そのユーザが言及しているそのユーザに関連する電話を決定し得る。アシスタントモジュール122Aが、コンピューティングデバイス110Bがその同じユーザに関連するスマートフォンであると決定し、コンピューティングデバイス110Bが、会話のハンドオフを受けるために利用可能であると決定した場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、それに応答して、ユーザの明示的な命令に従うことができ、会話132をコンピューティングデバイス110Bにハンドオフし得る。
いくつかの例では、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、予め規定された好みに基づいて会話をハンドオフするかどうかを決定もし得る。予め規定された好みは、アシスタントモジュール122Aが生成される応答に少なくとも部分的には基づいて会話をハンドオフする可能性がある相手のデバイスに関してユーザによって以前に定義された好みであることがある。例えば、ユーザは、全ての音楽はそのユーザに関連するスマートホームシアターシステムで再生されるという好み、または全ての写真はそのユーザに関連するデジタルメディアデバイス(例えばテレビジョンセットトップボックス)によってそのデジタルメディアデバイスに接続されたテレビジョンセットに出力されるという好みを予め規定することもある。したがって、問合せに対する応答がある歌の再生であるとアシスタントモジュール122Aが決定した場合には、ユーザが音楽を再生する機能をそれぞれが有する多数の異なるデバイス(例えばスマートフォン)に関連付けられている場合でも、アシスタントモジュール122Aは、ユーザによって規定されたスマートホームシアターシステムがハンドオフを受け取るために利用可能であれば、そのスマートホームシアターシステムに会話をハンドオフし得る。
いくつかの例では、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザから明示的な命令を受け取らなくても、また以前に規定された好みがなくても、会話を別のコンピューティングデバイスにハンドオフするかどうかを決定し得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、問合せ、問合せに対する応答、ユーザに関連する文脈情報(例えばユーザの活動)、ユーザに関連付けられたコンピューティングデバイス、およびコンピューティングデバイスの利用可能性など様々な要因に基づいて、ユーザとアシスタントモジュール122Aとの間の会話を別のコンピューティングデバイスにハンドオフするかどうかを決定し、会話がハンドオフされる相手のコンピューティングデバイスを選択し得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ハンドオフを受け取るために利用可能なコンピューティングデバイスに会話をハンドオフするだけであることもある。
コンピューティングデバイスは、電源が投入されていない、ハンドオフを受けることが認可されていない、またはユーザに関連付けられていない場合には、ハンドオフを受け取るために利用し得ないこともある。いくつかの例では、コンピューティングデバイスは、ユーザがそのコンピューティングデバイスにログインした場合、ユーザが仮想アシスタントサービス(例えばデジタルアシスタントサーバ160)にログインした場合、および/またはユーザがその他の方法でそのコンピューティングデバイスにアクセスすることが認可された(例えばそのコンピューティングデバイスにユーザ入力を提供し、そのコンピューティングデバイスから出力を受け取った)場合に、ユーザに関連付けられる。
アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザに関連するコンピューティングデバイス(例えばコンピューティングデバイス110Aおよび110B)の機能的能力および/または特徴に少なくとも部分的には基づいて、会話を別のコンピューティングデバイスにハンドオフするかどうかを決定もし得る。機能的能力は、ハードウェア、ソフトウェア、またはその他の機能性の差であることもある。異なるコンピューティングデバイスは、異なる機能的能力、特徴、および特性を有する可能性がある。このような機能的能力は、コンピューティングデバイスが表示デバイスを含む、または表示デバイスに動作可能に結合されているかどうか、その表示デバイスのサイズ、コンピューティングデバイスのタイプ(例えばそのコンピューティングデバイスが携帯電話であるかどうか、そのコンピューティングデバイスがウェアラブルデバイスであるかどうか、およびそのコンピューティングデバイスがTVセットトップボックスであるかどうかなど)、コンピューティングデバイスの位置(例えばコンピューティングデバイス110Aに対するコンピューティングデバイスの位置など)、ならびに/またはその他の任意の適当な要因を含む可能性がある。
例えば、独立型の仮想アシスタントまたはスマートスピーカシステムは、表示デバイスを含まないこともあるが、スマートフォンは表示デバイスを含む。自動車のインフォテインメントシステムは、表示デバイスを含むこともあるが、その車両がロック解除または始動されるまでに応答を出力し得ないこともある。スマートウォッチなどのウェアラブルデバイスは、表示デバイスを含むことがあるが、この表示デバイスは、スマートフォンに含まれる表示デバイスより物理的にはるかに小さいこともある。さらに、ウェアラブルデバイスおよびスマートフォンは、ほぼ常にユーザによって携帯されている、またはユーザの付近にある可能性が高い携帯可能デバイスであるが、独立型の仮想アシスタントは、通常は同じ部屋または位置にいるユーザしか使うことができない据え付け型のデバイスである可能性がある。一方、自動車のインフォテインメントシステムは、通常はユーザが自動車内にいる間しか使用されない可能性がある。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話をハンドオフするかどうかを決定し、会話がハンドオフされる相手のコンピューティングデバイスを決定するときに、これらのこと、ならびにその他の任意の適当な機能的能力、特徴、および/または特性を考慮し得る。
アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、応答を提示する形態(例えば可聴的に、視覚的に、リストとして、地図として、およびビデオとしてなど)を決定し得るし、ユーザに関連するコンピューティングデバイスのうちの1つがハンドオフを受けるために利用可能であり、かつユーザに関連するコンピューティングデバイスの機能的能力に少なくとも部分的に基づいて、応答を決定された形態で提示し得るかどうかを決定し得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、コンピューティングデバイス110AのUIC112Aが応答を決定された形態で提示し得るかどうかを決定し得る。コンピューティングデバイス110AのUIC112Aが応答を決定された形態で提示し得る場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話をハンドオフすることを控えることができ、その代わりに、コンピューティングデバイス110AのUIC112Aを介して応答を出力し得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが、コンピューティングデバイス110AのUIC112Aが応答を決定された形態で提示し得ないと決定した場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザに関連する利用可能なコンピューティングデバイスのうちの別の1つが応答を決定された形態で提示し得るかどうかを決定し得る。ユーザに関連する別のコンピューティングデバイス(例えばコンピューティングデバイス110B)が応答を決定された形態で提示し得る場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話をその別のコンピューティングデバイスにハンドオフし得る。
例えば、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが応答を視覚的に提示する(例えば表示デバイスに表示する)と決定した場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、UIC112Aが表示デバイスに動作可能に結合されているかどうかを決定し得る。結合されている場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話をハンドオフすることを控えることができ、UIC112Aに応答を視覚的に提示させるようにUIモジュール120Aに指示し得る。一方で、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが、UIC112Aが表示デバイスを含まず、したがって応答を決定された形態で提示し得ないと決定した場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザに関連する別のコンピューティングデバイス(例えばコンピューティングデバイス110B)が表示デバイスに動作可能に結合されているかどうかを決定し得るし、結合されている場合には、会話をその別のコンピューティングデバイスにハンドオフして、その別のコンピューティングデバイスが応答としてビデオを出力するようにし得る。
アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、任意の適当な方法で、問合せを発行したユーザに関連する1つまたは複数のコンピューティングデバイスと、そのユーザに関連するその1つまたは複数のコンピューティングデバイスの特徴、能力、および/または特性とを決定し得る。例えば、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザのユーザアカウントにサインオンされるなどして関連付けられているコンピューティングデバイス、ならびにその1つまたは複数のコンピューティングデバイスの特徴、能力、および/または特性を指定し得る、ユーザ情報データ記憶装置124A、ユーザ情報データ記憶装置124C、またはその他の場所(例えばクラウド)に記憶されているユーザに関連する情報にアクセスし得る。他の例では、ユーザに関連するコンピューティングデバイスは、その能力についての指示をアシスタントモジュール122Aおよび/またはアシスタントモジュール122Cに通信して、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが、コンピューティングデバイス110Aが、かどうかを決定できるようにし得る。
アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、また、少なくとも部分的には信用に基づいて、コンピューティングデバイス110Aが会話を別のコンピューティングデバイスにハンドオフすべきか、または会話を別のコンピューティングデバイスにハンドオフすることを控えるべきかを決定することもある。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが、ハンドオフを受ける可能性がある対象デバイスがユーザに関連付けられている、かつ/またはユーザによって認可されていることを確認し得ない場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話をその可能性のある対象デバイスにハンドオフすることを控え得る。信用の1つの形態は、デバイスのアシスタントモジュール122Aおよび/またはアシスタントモジュール122Cへの登録であることもある。可能性のある対象デバイスがアシスタントモジュール122Aおよび/またはアシスタントモジュール122Cに登録されていない場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、その可能性のある対象デバイスが会話のハンドオフを受けることを認可されていることを確認し得ないことがある。信用の別の形態は、ユーザがその可能性のある対象デバイスにログインすること、またはユーザがその可能性のある対象デバイスを介して仮想アシスタントサービスにログオンすることである。したがって、ユーザがその可能性のある対象デバイスにログインしていない場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、その可能性のある対象デバイスが会話のハンドオフを受けることを認可されていることを確認し得ないことがある。いくつかの例では、いくつかの会話が、別のデバイスにハンドオフし得ないものとして明示的にマークまたは指示されていることもある。会話がそのようにマークされていると、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが決定した場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、その会話を可能性のある対象デバイスにハンドオフすることを控えることがある。
いくつかの例では、ユーザに関連する2つ以上のコンピューティングデバイスが、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cによって決定された形態で応答を出力し得ることもある。例えば、ユーザに関連する2つ以上のコンピューティングデバイスが、応答を視覚的に出力し得ることもある。これらの場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、様々な要因に基づいて、応答を決定された形態で出力し得るそのユーザに関連する2つ以上のコンピューティングデバイスからコンピューティングデバイスを選択し得ることもある。例えば、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、この2つ以上のコンピューティングデバイスに動作可能に結合された表示デバイスの相対サイズ、この2つ以上のコンピューティングデバイスの位置、および/またはその他の任意の適当な要因に基づいて、この選択を行うことができる。例えば、コンピューティングデバイス110Aがスマートウォッチであり、かつコンピューティングデバイス110Bがスマートフォンである場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、応答のサイズ(例えば提示する画像のサイズ、および提示するウェブサイトのサイズなど)を決定し得る。応答のサイズが比較的大きく、コンピューティングデバイス110Bの方がコンピューティングデバイス110Aに動作可能に結合された表示デバイスよりも相対的に大きな表示領域を有する表示デバイスに動作可能に結合されている場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、コンピューティングデバイス110Bに会話をハンドオフすると判断し得る。
別の例では、アシスタントモジュール122Aは、ユーザによって実行されている活動、またはユーザによって実行される可能性がある活動を決定することにさらに少なくとも部分的に基づいて、会話をハンドオフするコンピューティングデバイスを選択し得る。例えば、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが、受け取った要求に対する応答がある位置への道順であると決定し、ユーザが自分の車に乗り込んでいる最中である、乗り込んだところである、または乗り込もうとしていると検出された場合には、アシスタントモジュール122Aは、ユーザの車のインフォテインメントシステムで実行されるアシスタントに会話をハンドオフして、そのインフォテインメントシステムがその位置までの道順を表示できるようにし得る。例えば、ユーザが車に乗り込むときに電話を携帯している場合には、そのユーザの電話が、車との接続(例えばBluetooth(登録商標)接続)を確立もし得る。このような接続が確立されると、スマートフォンおよび/またはインフォテインメントシステムは、この接続をデジタルアシスタントサーバ160に報告し得る。これに応答して、デジタルアシスタントサーバ160は、その位置までの道順をスマートフォンおよび/またはインフォテインメントシステムに通信する、あるいは第三者サーバシステム170のうちの1つに、その位置までの道順をコンピューティングデバイス110Bに通信するように指示し得る。このようにして、コンピューティングデバイス110Aは、ユーザの現在の活動、または可能性のある将来の活動に基づいて、会話をハンドオフすることを決定し得る。
別の例では、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザに関連する1つまたは複数の他のコンピューティングデバイスの位置を決定することに基づいて、会話をハンドオフするコンピューティングデバイスを選択もし得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが、応答を視覚的に提示する(例えば表示デバイスに表示する)と決定し、UIC112Aが表示デバイスを含まない場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、応答を視覚的に提示し得る(例えば表示デバイスを含む、または表示デバイスに動作可能に結合されている)ユーザに関連する1つまたは複数のコンピューティングデバイスを決定し得る。ただし、ユーザは、応答を視覚的に提示し得る複数のコンピューティングデバイスに関連付けられていることもある。例えば、ユーザは、応答を視覚的に提示し得る1つまたは複数のTVセットトップボックス、コンピュータ、タブレット、およびスマートフォンなどに関連付けられていることもある。
会話がハンドオフされる対象のコンピューティングデバイスを選択する別の方法は、そのコンピューティングデバイスのコンピューティングデバイス110Aに対する近接度に少なくとも部分的に基づくことがある。例えば、2つ以上のコンピューティングデバイスが、会話のハンドオフを受けるために利用可能であり、かつ応答を提示し得る場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、応答を所望の形態で提示し得るユーザに関連するコンピューティングデバイスの中で、コンピューティングデバイス110Aに物理的に最も近いそのユーザに関連するコンピューティングデバイスに会話をハンドオフし得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、多数の方法で、ユーザに関連するコンピューティングデバイスの物理的近接度を決定し得る。例えば、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、それらのコンピューティングデバイスに、それぞれの現在位置を問い合わせることもある。アシスタントモジュール122Aは、コンピューティングデバイス110Aに物理的に近いそのユーザに関連するコンピューティングデバイスに短距離通信(例えばBluetooth(登録商標)、超音波通信、および赤外線など)を介して直接接続しようと試みることもある。ユーザは自分に近いコンピューティングデバイスにアクセスする可能性が比較的高いので、またユーザはコンピューティングデバイス110Aに対して問合せを発行するためにはコンピューティングデバイス110Aの物理的に近くにいる可能性が高いので、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、コンピューティングデバイス110Aに物理的に近いコンピューティングデバイスに会話をハンドオフすることによって、ユーザが近い将来にアクセスする可能性が低いコンピューティングデバイスへの会話のハンドオフを防止し得る。
別の例では、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、少なくとも部分的に最近の活動に基づいて、会話をハンドオフする対象のコンピューティングデバイスを決定することもある。例えば、2つのコンピューティングデバイスの両方が、応答を所望の形態で(例えば視覚的に)出力するために同じまたは類似の機能的能力を有する場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、極めて最近に活動状態になった(例えば極めて最近にユーザによって使用された)コンピューティングデバイスを、会話をハンドオフする対象のコンピューティングデバイスとして選択し得る。
いくつかの例では、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cと関連して実行される第三者アプリケーション172が、別のコンピューティングデバイスへの会話のハンドオフを引き起こす、あるいはその他のかたちでアシスタントモジュール122Aおよび/またはアシスタントモジュール122Cに別のコンピューティングデバイス(例えばコンピューティングデバイス110B)に会話をハンドオフするように命令することもある。第三者アプリケーション172は、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが要求されたタスクを実行する、またはその他のかたちで問合せに対する応答を生成するために対話するアプリケーションまたはサービスであることがある。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、第三者アプリケーション172がアシスタントモジュール122Aおよび/またはアシスタントモジュール122Cと対話するためにアクセスし得るアプリケーションプログラミングインタフェース(API)を提供することもある。
例えば、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、アシスタントモジュール122Aが映画のチケットを購入することをユーザが要求する会話の途中で、第三者サーバシステム170で実行される第三者映画チケット購入アプリケーションと対話し得る。この要求の受取りに応答して、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、第三者映画チケット購入アプリケーションと通信して、そのアプリケーションに映画のチケットを購入するように指示し得る。これに応答して、第三者映画チケット購入アプリケーションは、表示デバイスを含む、または表示デバイスに動作可能に結合されている別のコンピューティングデバイス(例えばコンピューティングデバイス110B)に会話をハンドオフして、その別のコンピューティングデバイスがその映画の座席表の視覚的表現を出力できるようにし、それによりユーザがその映画の空いている座席を見て選択できるようにする要求を、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cに先回りして送信し得る。この要求の受取りに応答して、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、表示デバイスに動作可能に結合されているコンピューティングデバイスに会話をハンドオフし得る。
いくつかの例では、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザに関連するコンピューティングデバイスの機能的能力に少なくとも部分的に基づいて、応答の形態を決定することがある。さらに詳細には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザのコンピューティングデバイスのうちの少なくとも1つの適する応答の形態を決定し得る。例えば、コンピューティングデバイス110Aが今日の天気についての問合せを受け取った場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、天気予報を提示するための形態を決定し得る。その問合せを発行したユーザに関連するコンピューティングデバイスの中に、表示デバイスに動作可能に結合されているものがない場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、天気予報の視覚的表現を出力すると決定することを控え得る。その代わりに、ユーザに関連するコンピューティングデバイスのうちの少なくとも1つがオーディオ出力デバイス(例えばスピーカ)に動作可能に結合されている場合には、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、天気予報のオーディオ表現を出力すると決定し得る。
図1の例では、問合せ126が道順を求める要求であるので、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、問合せ126に対する応答は対話型マップの形態にすると決定し得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、コンピューティングデバイス110Aがレストランまでの道順の対話型マップを提示し得るか
どうかを決定し得る。
例えば、コンピューティングデバイス110Aは、その機能的能力またはその識別についての指示を、デジタルアシスタントサーバ160に送信して、アシスタントモジュール122Cがその情報を利用して、コンピューティングデバイス110Aがレストランまでの道順の対話型マップを提示し得る表示デバイスに動作可能に結合されているかどうかを決定できるようにし得る。あるいは、デジタルアシスタントサーバ160は、コンピューティングデバイス110Aがレストランまでの道順の対話型マップを提示し得る表示デバイスに動作可能に結合されているかを決定するためにアシスタントモジュール122Cが利用し得る、コンピューティングデバイス110Aの能力に関する情報を既に記憶していることもある。コンピューティングデバイス110Aがレストランまでの道順の対話型マップを提示し得る表示デバイスに動作可能に結合されているかどうかの決定をアシスタントモジュール122Aが行う場合には、コンピューティングデバイス110Aは、それ自体についての情報をデジタルアシスタントサーバ160に送信する必要がないこともある。
アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、コンピューティングデバイス110Aがレストランまでの道順の対話型マップを提示し得ないと決定することもある。例えば、コンピューティングデバイス110Aは、表示デバイスに動作可能に結合されていない独立型のアシスタントデバイスであることもある。したがって、レストランまでの道順の対話型マップを提示することは、ユーザに関連する任意のその他のコンピューティングデバイスが会話132のハンドオフを受け取るために利用可能であり、かつレストランまでの道順の対話型マップを提示し得るかどうかを決定することがある。
アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、いくつかの方法で、ユーザに関連するコンピューティングデバイスを決定し、それらのコンピューティングデバイスが会話のハンドオフを受け取るために利用可能であるかどうかを決定し得る。例えば、ユーザ情報データ記憶装置124Aおよび/またはユーザ情報データ記憶装置124Bは、ユーザに関連するコンピューティングデバイスのリストと、それらの機能的能力および/または可用性状況とを記憶することがある。あるいは、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザに関連するコンピューティングデバイスを「ピング(ping)」して(例えばネットワーク130を介してそれらのコンピューティングデバイスと短期間通信して)、それらの可用性状況および/またはそれらの機能的能力を決定もし得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、また、上述のように、ユーザに関連するコンピューティングデバイスのコンピューティングデバイス110Aに対する近接度、ユーザに関連するコンピューティングデバイスのうちで極めて最近に活動状態になったコンピューティングデバイス、ならびにハンドオフを受け取るコンピューティングデバイスを選択するために利用し得るその他の情報など、その他の関連する情報を同様に決定もし得る。
上述の決定のうちのいずれか、または全てに基づいて、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、スマートフォンはレストランまでの道順の対話型マップを提示し得るし、かつユーザが車両内に持ち込んで運転指示に使用する可能性が高いという理由で、ユーザに関連するスマートフォンに会話132をハンドオフすると決定し得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、コンピューティングデバイス110Bがユーザに関連するスマートフォンであると決定し得るし、コンピューティングデバイス110Bで実行されるアシスタントモジュール122Bに会話132をハンドオフし得る。
いくつかの例では、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話をハンドオフするかどうかを先回りして決定することもある。換言すれば、この決定は、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cを引き起こす問合せを受け取らなくても行うことができる。問合せを受け取らなくても、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザとアシスタントモジュール122Aとの間でそれまでに行われた会話に少なくとも部分的に基づいて、会話を別のコンピューティングデバイスにハンドオフするかどうかを決定もし得る。
図1の例では、アシスタントモジュール122AがレストランLuigi'sに予約を入れることをユーザが要求し、アシスタントモジュール122Aが要求された予約を会話132の一部として行った後、問合せ126の前に、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが、会話132を別のコンピューティングデバイスにハンドオフするかどうかを決定することもある。例えば、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話132の内容に基づいて近い将来にユーザが行う可能性が高いアクションを決定することに少なくとも部分的に基づいて、会話132を別のコンピューティングデバイスにハンドオフするかどうかを先回りして決定することもある。
会話132の内容に基づいて近い将来にユーザが行う可能性が高いアクションを決定することは、近い将来にユーザが対話する可能性が高い別のコンピューティングデバイスと、ユーザがその別のコンピューティングデバイスと対話するときにユーザにとって有用である可能性が高い情報とを決定することを含むことがある。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザ情報データ記憶装置124Aおよび/またはユーザ情報データ記憶装置124Cに記憶されているユーザの好みまたはユーザの履歴を解析することに基づくなど多数の方法で、会話132の内容に基づいて近い将来にユーザが行う可能性が高いアクションを決定し得る。アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話132の内容を、ユーザとアシスタントモジュール122Aとの間の以前の会話と比較し得るし、ユーザがアシスタント122Aと会話した後で行った以前のユーザアクションを決定し得る。このようにして、アシスタントモジュール122Aは、会話132をハンドオフするかどうかを先回りして決定し得るし、会話132をハンドオフする相手のコンピューティングデバイスを決定もし得る。
図1の例では、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話132が、ユーザがレストランLuigi'sの予約を要求していることについての指示と、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが予約を行ったことの確認とを含んでいるので、ユーザは自分のスマートフォンを手に取り、そのスマートフォンをそのレストランまでのナビゲートに使用する可能性が高いと決定し得る。したがって、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話132をユーザのスマートフォン(例えばコンピューティングデバイス110B)にハンドオフすると決定し得る。
会話がハンドオフされる出所となるコンピューティングデバイス110Aのアシスタントモジュール122Aは、その会話が別のコンピューティングデバイスにハンドオフされることになることについての指示を出力もし得る。図1では、会話132を別のコンピューティングデバイスにハンドオフすると決定した後で、アシスタントモジュール122Aは、アシスタントモジュール122Aが会話132をハンドオフした相手のコンピューティングデバイスを識別し、さらにその識別されたコンピューティングデバイスが問合せ126に対する応答を出力することになることを示すメッセージ127をUIC112Aを介して出力することによって、アシスタントモジュール122Aが会話132を別のコンピューティングデバイスにハンドオフしたことをユーザに通知し得る。
アシスタントモジュール122Aからアシスタントモジュール122Bに会話(例えば会話132)をハンドオフするためには、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話のハンドオフを受け取ることを求める要求をアシスタントモジュール122Bに送信すればよく、アシスタントモジュール122Bは、会話のハンドオフを受け取るかどうかを決定すればよい。アシスタントモジュールが会話のハンドオフを受け取ると決定した場合には、アシスタントモジュール122Bは、アシスタントモジュール122Bが会話のハンドオフを受け入れることについての指示を、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cに送信すればよい。これに応答して、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、アシスタントモジュール122Bにハンドオフされた会話についての指示を送信し得る。
いくつかの例では、会話についての指示は、テキスト形態、ハッシュの形態、またはその他の任意の適当な形態の会話の少なくとも一部分を含むことがある。このような会話の一部分は、コンピューティングデバイス110Aが(例えばUIC112Aを介して)ユーザから受け取った入力の内容、および会話の途中でコンピューティングデバイス110Bによって出力された内容の全体または少なくとも一部など、コンピューティングデバイスとのユーザの対話のログであることもある。
いくつかの例では、会話についての指示は、ハンドオフを受け取るコンピューティングデバイスとの会話に関連する文脈情報の少なくとも一部分を含むこともある。例えば、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、ユーザ情報データ記憶装置124Aおよび/またはユーザ情報データ記憶装置124Cに記憶されている文脈情報の少なくとも一部分をコンピューティングデバイス110Bに転送して、ユーザ情報データ記憶装置124Bに記憶されるようにもし得る。したがって、ユーザがコンピューティングデバイス110Bのアシスタントモジュール122Bと対話して会話を継続するときには、アシスタントモジュール122Bは、この文脈情報を使用して、コンピューティングデバイス110Aのアシスタントモジュール122Aと以前のユーザの対話に基づいて、アシスタントモジュール122Bが受け取る追加の問合せを解釈して(例えば問合せから意味を推測して)、アシスタントモジュール122Bがそれらの問合せに対する適切な応答を生成できるようにし得る。このようにして、ユーザは、会話の一部であるアシスタントモジュール122Aとの以前の対話のスレッドを失うことなく、コンピューティングデバイス110Bのアシスタントモジュール122Bと対話することによってシームレスに会話を継続し得る。
会話についての指示は、問合せに応答してコンピューティングデバイス110Bによって出力される応答についての指示を含むこともある。1つの例では、このような実行されるアクションについての指示は、アシスタントモジュール122Bがアクションを決定して実行する可能性がある問合せについての指示を含むことがある。この場合には、アシスタントモジュール122Bは、コンピューティングデバイス110Aによって特定のアクションを実行するように指示されることなく、問合せ126自体を構文解析して問合せ126に対する適当な応答を決定しなければならないこともある。他の例では、コンピューティングデバイス110Bによって出力される応答についての指示は、コンピューティングデバイス110Bに応答を出力させる任意の情報であってもよい。
アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cが先回りして会話をハンドオフする例では、会話についての指示は、コンピューティングデバイス110Bによって実行されるタスクについての指示、またはレストランまでの道順を提供する対話型マップなど、コンピューティングデバイス110Bによって出力される情報についての指示を含むことがある。図1の例では、アシスタントモジュール122Aが、問合せ126の解析から、適当な応答はユーザの位置からレストランLuigi'sまでの道順の視覚的マップを出力することであろうと決定した場合には、アシスタントモジュール122Aは、ユーザの位置からレストランLuigi'sまでの道順の視覚的マップをコンピューティングデバイス110Bに出力させるようにアシスタントモジュール122Bに指示し得る。別の例では、アシスタントモジュール122Aは、ユーザの位置からレストランLuigi'sまでの道順を、その道順をどのように出力するかは指定せずに、コンピューティングデバイス110Bに出力させるようにモジュール122Bに指示することもある。この場合には、アシスタントモジュール122Bが、その道順を視覚的に提示すると決定し得る。
コンピューティングデバイス110Bのアシスタントモジュール122Bは、問合せ126に応答するためにコンピューティングデバイス110Bによって出力される応答についての指示を含む会話132についての指示を受け取ることも含めて、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cからのハンドオフを受け取ることがある。図1の場合では、アシスタントモジュール122Bは、ユーザの位置からレストランLuigi'sまでの道順の視覚的マップを生成し得る。アシスタントモジュール122Bは、多数の方法で、この生成した応答を出力し得る。例えば、アシスタントモジュール122Bは、ユーザインタフェース114において通知116の形態の応答を出力することもある。UIC112Bが、通知116をタップまたはスワイプするなどして選択することなどによる通知116を起動するユーザ入力を受け取ると、UIC112Bは、ユーザの位置からレストランLuigi'sまでの道順の視覚的マップを出力し得る。他の例では、会話132についての指示、および問合せ126に応答するためにコンピューティングデバイス110Bによって出力される応答についての指示を受け取った後で、コンピューティングデバイス110Bは、ユーザの介入なしで、自動的に地図アプリケーションを開いて、道順の視覚的マップを表示し得る。別の例では、会話132についての指示、および問合せ126に応答するためにコンピューティングデバイス110Bによって出力される応答についての指示を受け取った後で、コンピューティングデバイス110Bは、ユーザの介入なしで、自動的に仮想アシスタントアプリケーションを開いて、道順の視覚的マップを表示もし得る。
アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、多数の方法で、コンピューティングデバイス110Aからコンピューティングデバイス110Bへの会話のハンドオフを実行し得る。上述のように、アシスタントモジュール122Aおよび/またはアシスタントモジュール122Cは、会話をハンドオフするかどうかを決定し得るし、また、ハンドオフを受け取ることになるコンピューティングデバイスを決定もし得る。同様に、アシスタントモジュール122A、アシスタントモジュール122C、またはアシスタントモジュール122Aとアシスタントモジュール122Cの組合せが、コンピューティングデバイス110Aからコンピューティングデバイス110Bへの会話のハンドオフを実行し得る。
1つの例では、アシスタントモジュール122Aは、ネットワーク130(例えばインターネット)を介して、コンピューティングデバイス110Aとコンピューティングデバイス110Bとの間の短距離直接通信(例えばBluetooth(登録商標))を介して、またはネットワーク130と短距離直接通信の組合せを介してアシスタントモジュール122Bと直接通信することによって、コンピューティングデバイス110Aからコンピューティングデバイス110Bへの会話のハンドオフを実行し得る。別の例では、アシスタントモジュール122Cが、ネットワーク130を介してアシスタントモジュール122Bと通信することによって、コンピューティングデバイス110Aからコンピューティングデバイス110Bへの会話のハンドオフを実行もし得る。
あるいは、アシスタントモジュール122Aとアシスタントモジュール122Cの組合せが、コンピューティングデバイス110Aからコンピューティングデバイス110Bへの会話のハンドオフを実行もし得る。アシスタントモジュール122Aは、ネットワーク130(例えばインターネット)を介して、コンピューティングデバイス110Aとコンピューティングデバイス110Bとの間の短距離直接通信(例えばBluetooth(登録商標))を介して、またはネットワーク130と短距離直接通信の組合せを介してアシスタントモジュール122Bと通信し得るし、アシスタントモジュール122Cは、ネットワーク130を介してアシスタントモジュール122Bと通信し得る。
会話132のハンドオフを受け取った後で、アシスタントモジュール122Bは、単独で、またはアシスタントモジュール122Cと協働して、引き続き会話132の一部としてユーザ対話を受け取り得るし、それらのユーザ対話に対する応答を生成もし得る。例えば、アシスタントモジュール122Bが、問合せ128として「彼らに電話して下さい」という音声入力を受け取り、アシスタントモジュール122Bおよび/またはアシスタントモジュール122Cが、問合せ128に対する応答を生成することもある。
アシスタントモジュール122Bがアシスタントモジュール122Cと協働して応答を生成する場合には、アシスタントモジュール122Bは、その応答をアシスタントモジュール122Cに送信し得るし、アシスタントモジュール122Cは、単独で、またはアシスタントモジュール122Bと協働して、その応答を生成し得る。アシスタントモジュール122Bおよび/またはアシスタントモジュール122Cはユーザ情報データ記憶装置124Bおよび/またはユーザ情報データ記憶装置124Cに記憶されている会話132に関連する文脈情報にアクセスし得るので、アシスタントモジュール122Bおよび/またはアシスタントモジュール122Cは、問合せ128が会話132のハンドオフの前にユーザとアシスタントモジュール122Aとの間で行われた会話の一部分を参照するかどうかを決定し得ることもある。
例えば、アシスタントモジュール122Bおよび/またはアシスタントモジュール122Cは、このような文脈情報から、問合せ128中の「彼ら」が、会話132のハンドオフの前にユーザとアシスタントモジュール122Aとの間で行われた会話の一部分に登場したレストランLuigi'sを指していると推測し得る。したがって、アシスタントモジュール122Bは、問合せ128を、レストランLuigi'sに関連する電話番号に電話をかけることを求める要求と解釈し得る。このように、アシスタントモジュール122Bおよび/またはアシスタントモジュール122Cは、問合せ128に対する適切な応答を構築し得ることがある。
アシスタントモジュール122Bがアシスタントモジュール122Cと協働して応答を生成する場合には、アシスタントモジュール122Cは、応答についての指示をアシスタントモジュール122Bに送信して、コンピューティングデバイス110BのUIC112Bによって出力されるようにする。アシスタントモジュール122Bは、したがって、コンピューティングデバイス110BがレストランLuigi'sに関連する電話番号に電話をかけることを可能にし得るし、コンピューティングデバイス110Bがその電話をかけていることについての指示129を出力し得る。
このようにして、コンピューティングデバイス110Aのアシスタントモジュール122Aは、デジタルアシスタントサーバ160のアシスタントモジュール122Cと協働して、ユーザとコンピューティングデバイス110Aとの間で行われる会話を先回りしてコンピューティングデバイス110Bのアシスタントモジュール122Bにハンドオフし得る。会話のハンドオフの受取りに応答して、コンピューティングデバイス110Bのアシスタントモジュール122Bは、コンピューティングデバイス110Aのアシスタントモジュール122Aが受け取った要求に対する応答を出力し得ることがある。アシスタントモジュール122Bは、会話に関連する文脈情報にアクセスして、アシスタントモジュール122Bが受け取る要求がユーザとアシスタントモジュール122Aとの間で行われた会話の一部分を参照するときにそのことを決定できるようにし得ることがある。
図1の状況で、また本開示を通じて説明する技術は、いくつかの方法で、コンピューティングデバイス110Aおよびコンピューティングデバイス110Bの機能を改良し得る。例えば、本開示の技術は、コンピューティングデバイス110Aが、明示的なユーザによるコマンドなしに会話をコンピューティングデバイス110Bにハンドオフすることを可能にするので、ユーザがコンピューティングデバイス110Aに会話をコンピューティングデバイス110Bにハンドオフするように明示的に命令する必要がないので、コンピューティングデバイス110Aとユーザの対話の量が削減される。
さらに、ユーザが問合せを完了するためには異なるデバイスを使用しなければならないことを示すエラーメッセージまたはその他のメッセージをただ出力し、その第2のコンピューティングプラットフォームでユーザが同じ問合せを繰り返すことを求めたりするのではなく、このアシスタントは、ユーザが、第1のコンピューティングプラットフォームで以前にユーザが行った同じユーザ対話を繰り返さなくても、第2のコンピューティングプラットフォームで会話を簡単に継続できるようにし得る。
したがって、本明細書に開示する技術は、コンピューティングデバイス110Bとのユーザの対話の量も削減し得る。本開示の技術はコンピューティングデバイス110Aが先回りして会話をコンピューティングデバイス110Bにハンドオフし、コンピューティングデバイス110Bがコンピューティングデバイス110Aの代わりに応答を出力するようにし得るので、ユーザは、コンピューティングデバイス110Bに対して問合せを発行しなくても、コンピューティングデバイス110Aから110Bへの会話のハンドオフの一部としてコンピューティングデバイス110Bによって出力された同じ応答を受け取り得る。
さらに、コンピューティングデバイス110Aからコンピューティングデバイス110Bに会話をハンドオフすることは、会話の文脈情報についての指示をコンピューティングデバイス110Bに転送することを含むので、コンピューティングデバイス110Bは、コンピューティングデバイス110Aとの間で行われた会話の一部分に遡って参照するユーザ入力をより正確に解釈し得る。この場合、コンピューティングデバイス110Aは、ユーザ入力に応答してより有用かつ有意義である可能性が高いアクションを実行する、または応答を出力し、それによりユーザが同じ応答を受け取るためにコンピューティングデバイス110Bに問合せを発行する必要性を低減し得ることがある。
さらに、本開示の技術は、回答を出力するのにより適している可能性がある他のデバイスを識別することにより、アシスタントによって提供される回答のユーザによる理解度を高めることもできる。このようにして、本開示の技術は、ユーザが回答を受け取って理解するために必要なユーザ入力の数を減少させることができ、アシスタントがコンピューティングデバイスにおいて活発に実行されて情報を処理する時間を削減し得る。
図2は、本開示の1つまたは複数の態様による、例示的な仮想アシスタントを実行するように構成された例示的なコンピューティングデバイスを示すブロック図である。図1のコンピューティングデバイス110Aおよび/または110Bの例として、以下、図2のコンピューティングデバイス210について説明する。図2は、コンピューティングデバイス210の1つの具体例を示しているに過ぎず、他の場合にはコンピューティングデバイス210の他の多数の例が使用される可能性があり、コンピューティングデバイス210の他の多数の例は、例示的なコンピューティングデバイス210に含まれる構成要素の部分集合を含む、または図2には図示されていない追加の構成要素を含むこともある。
図2の例に示すように、コンピューティングデバイス210は、ユーザインタフェース構成要素(UIC)212、1つまたは複数のプロセッサ240、1つまたは複数の通信ユニット242、および1つまたは複数の記憶構成要素248を含む。UIC212は、出力構成要素202、および入力構成要素204を含む。コンピューティングデバイス210の記憶構成要素248は、UIモジュール220、アシスタントモジュール222、ユーザ情報データ記憶装置224、1つまたは複数のアプリケーションモジュール226、およびコンテキストモジュール230を含む。
通信チャネル250は、構成要素間通信のために各構成要素212、240、242、および248を(物理的に、通信可能に、かつ/または動作可能に)相互接続し得る。いくつかの例では、通信チャネル250は、システムバス、ネットワーク接続、プロセス間通信データ構造、またはその他の任意のデータを通信する方法を含む可能性がある。
コンピューティングデバイス210の1つまたは複数の通信ユニット242は、1つまたは複数の有線および/またはワイヤレスのネットワーク上でネットワーク信号を伝送および/または受信することにより、その1つまたは複数のネットワークを介して外部デバイスと通信し得る。通信ユニット242の例は、ネットワークインタフェースカード(例えばイーサネット(登録商標)カードなど)、光トランシーバ、無線周波トランシーバ、全地球測位衛星(GPS)受信器、あるいは情報を送信および/または受信し得るその他のタイプのデバイスを含む。通信ユニット242の他の例には、短波無線、セルラデータ無線、ワイヤレスネットワーク無線、およびユニバーサルシリアルバス(USB)制御装置が含まれることもある。
コンピューティングデバイス210の1つまたは複数の入力構成要素204は、入力を受け取り得る。入力の例としては、触覚的入力、オーディオ入力、およびビデオ入力がある。コンピューティングデバイス210の入力構成要素204は、1つの例では、存在感知入力デバイス(例えばタッチセンシティブスクリーン、PSD)、マウス、キーボード、音声応答システム、ビデオカメラ、マイクロフォン、あるいは人間または機械からの入力を検出するその他の任意のタイプのデバイスを含む。いくつかの例では、入力構成要素204は、1つまたは複数のセンサ構成要素、1つまたは複数の位置センサ(GPS構成要素、Wi-Fi構成要素、セルラ構成要素)、1つまたは複数の温度センサ、1つまたは複数の動きセンサ(例えば加速度計、ジャイロ)、1つまたは複数の圧力センサ(例えば気圧計)、1つまたは複数の周囲光センサ、および1つまたは複数のその他のセンサ(例えばマイクロフォン、カメラ、赤外線近接センサ、および湿度計など)を含む可能性がある。その他のセンサとしては、他の非限定的な例を挙げると、心拍数センサ、磁力計、グルコースセンサ、湿度計センサ、嗅覚センサ、コンパスセンサ、ステップカウンタセンサなどが含まれることもある。
コンピューティングデバイス210の1つまたは複数の出力構成要素202は、出力を生成し得る。出力の例としては、触覚的出力、オーディオ出力、およびビデオ出力がある。コンピューティングデバイス210の出力構成要素202は、1つの例では、PSD、サウンドカード、ビデオグラフィックスアダプタカード、スピーカ、陰極線管(CRT)モニタ、液晶ディスプレイ(LCD)、あるいは人間または機械への出力を生成するその他の任意のタイプのデバイスを含む。
コンピューティングデバイス210のUIC212は、コンピューティングデバイス110Aおよび110BのUIC112Aおよび112Bと同様であることもあり、出力構成要素202および入力構成要素204を含む。出力構成要素202は、UIC212によって情報が表示されるスクリーンなどの表示構成要素であることもあり、入力構成要素204は、出力構成要素202のところにある物体、および/またはその付近にある物体を検出する圧力感知入力構成要素であることもある。出力構成要素202および入力構成要素204は、スピーカとマイクロフォンの対であることもあるし、あるいは入力構成要素204と出力構成要素202など、1つまたは複数の入力構成要素と出力構成要素のその他の任意の組合せであることもある。図2の例では、UIC212は、ユーザインタフェース(図1のユーザインタフェース114など)を提示し得る。
UIC212は、コンピューティングデバイス210の内部構成要素として図示されているが、コンピューティングデバイス210とデータ経路を共有して入力および出力を伝送および/または受信する外部構成要素を表すこともある。例えば、1つの例では、UIC212は、コンピューティングデバイス210の外装内に位置し、その外装に物理的に接続された、コンピューティングデバイス210の内蔵構成要素を表す(例えば携帯電話のスクリーンなど)。別の例では、UIC212は、コンピューティングデバイス210のパッケージまたは筐体の外部に位置し、そのパッケージまたは筐体から物理的に分離している、コンピューティングデバイス210の外部構成要素を表すこともある(例えば、コンピューティングデバイス210と有線および/またはワイヤレスのデータ経路を共有するモニタ、プロジェクタなど)。
コンピューティングデバイス210内の1つまたは複数の記憶構成要素248は、コンピューティングデバイス210の動作中に処理される情報を記憶し得る(例えば、コンピューティングデバイス210は、コンピューティングデバイス210の実行中にモジュール220、222、230および226、ならびにデータ記憶装置224によってアクセスされるデータを記憶し得る)。いくつかの例では、記憶構成要素248は、一時的メモリである。すなわち、記憶構成要素248の主要な目的は、長期記憶ではない。コンピューティングデバイス210の記憶構成要素248は、揮発性メモリとして情報を短期記憶するように構成されることがあり、したがって、電源がオフになった場合には、記憶した内容を保持しない。揮発性メモリの例としては、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、および当技術分野で既知のその他の形態の揮発性メモリが含まれる。
記憶構成要素248は、いくつかの例では、1つまたは複数のコンピュータ可読記憶媒体も含む。記憶構成要素248は、いくつかの例では、1つまたは複数の非一時的コンピュータ可読記憶媒体を含む。記憶構成要素248は、揮発性メモリに通常記憶されるよりも大量の情報を記憶するように構成されることがある。記憶構成要素248は、さらに、不揮発性メモリスペースとして情報を長期記憶するように構成されることもあり、電源のオン/オフサイクル後にも情報を保持することがある。不揮発性メモリの例としては、磁気ハードディスク、光ディスク、フロッピーディスク、フラッシュメモリ、あるいは様々な形態の電気的プログラマブルメモリ(EPROM)または電気的消去可能(EEPROM)メモリが含まれることがある。記憶構成要素248は、モジュール220、222、230および226、ならびにデータ記憶装置224に関連するプログラム命令および/または情報(例えばデータ)を記憶し得る。記憶構成要素248は、モジュール220、222、230および226、ならびにデータ記憶装置224に関連するデータまたはその他の情報を記憶するように構成されたメモリを含むこともある。
1つまたは複数のプロセッサ240は、コンピューティングデバイス210に関連する機能を実施し、かつ/またはコンピューティングデバイス210に関連する命令を実行し得る。プロセッサ240の例としては、アプリケーションプロセッサ、ディスプレイ制御装置、補助プロセッサ、1つまたは複数のセンサハブ、およびプロセッサ、処理ユニット、または処理デバイスとして機能するように構成されたその他の任意のハードウェアが含まれる。モジュール220、222、230および226は、コンピューティングデバイス210の様々なアクション、動作、または機能を実行するようにプロセッサ240によって操作可能であることがある。例えば、コンピューティングデバイス210のプロセッサ240は、モジュール220、222、230および226の動作をプロセッサ240に実行させる、記憶構成要素248に記憶されている命令を取り出して実行し得る。これらの命令は、プロセッサ240によって実行されると、コンピューティングデバイス210に、記憶構成要素248内、例えばデータ記憶装置224に情報を記憶させ得る。
UIモジュール220は、図1のUIモジュール120の全ての機能を含むことがあり、UIモジュール120と同様の動作を実行して、コンピューティングデバイス210の一部としてアシスタントを実行し得る。UIモジュール220は、コンピューティングデバイス210のUIC212およびその他の構成要素とのユーザの対話を管理し得る。UIモジュール220は、コンピューティングデバイス210のユーザがUIC212において出力を見、かつ/または入力を提供するときに、UIC212にユーザインタフェースを出力させ得る。
ユーザ情報データ記憶装置224は、図1のユーザ情報データ記憶装置124Aおよび124Bの例である。アシスタントモジュール222は、図1のアシスタントモジュール122Aおよび122Bの全ての機能を含むことがあり、アシスタントモジュール122Aおよび122Bと同様の動作を実行して、コンピューティングデバイス210の一部としてアシスタントを実行し、ユーザ情報データ記憶装置224にユーザ情報を維持して、この情報にアクセスし得る。いくつかの例では、アシスタントモジュール222は、ローカルで(例えばプロセッサ240で)実行されて、アシスタント機能を提供し得る。いくつかの例では、アシスタントモジュール222は、図1に示すように、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Bなど、コンピューティングデバイス210からアクセス可能な遠隔のアシスタントサービスとのインタフェースとして作用し得る。例えば、アシスタントモジュール222は、図1のデジタルアシスタントサーバ160のアシスタントモジュール122Aおよび/または122Bとのインタフェースまたはアプリケーションプログラミングインタフェース(API)であることもある。
1つまたは複数のアプリケーションモジュール226は、ユーザに情報を提供し、かつ/あるいはタスクまたはアクションを実行するためにアシスタントがアクセスし得る、コンピューティングデバイス210で実行され、コンピューティングデバイス210からアクセス可能な、全ての様々な個別のアプリケーションおよびサービスを表す。アプリケーションモジュール226の例は多数存在する可能性があり、それらの例には、フィットネスアプリケーション、カレンダアプリケーション、検索アプリケーション、地図またはナビゲーションアプリケーション、旅行アプリケーション(例えば計画、予約、チケット手配など)、ソーシャルメディアアプリケーション、ゲームアプリケーション、電子メールアプリケーション、チャットまたはメッセージングアプリケーション、インターネットブラウザアプリケーション、レストラン予約アプリケーション、映画チケットアプリケーション、あるいはコンピューティングデバイス210で実行される可能性があるその他の任意のアプリケーションが含まれる可能性がある。アシスタントモジュール222など、コンピューティングデバイス210で実行されるアシスタントは、そのアシスタントに関連する複数のアクションを実行する命令をアプリケーションモジュール226に実行させ得る。換言すれば、アシスタントは、アプリケーションモジュール226に依拠して、アシスタントの代わりに複数のアクションを実行し得る。
個人情報(例えばデータ記憶装置224に記憶されている情報)を記憶して利用するための明示的な同意をユーザから受け取った後で、コンテキストモジュール230は、コンピューティングデバイス210に関連する文脈情報を処理して解析して、コンピューティングデバイス210の状況、コンピューティングデバイス210のユーザの状況、および/またはアシスタントモジュール222とユーザとの間の会話の文脈を規定し得る。コンテキストモジュール230は、解析および/または記憶されている情報を暗号化するなどして処理して、ユーザの実際の識別を除去した後で、その個人情報を記憶または利用する。例えば、この情報は、コンテキストモジュール230が処理して、記憶されたり、処理のために遠隔のコンピューティングデバイス(例えばデジタルアシスタントサーバ160)に送信されたりするときには任意の個人を識別できる情報が除去されるようにし得る。コンテキストモジュール230は、情報の使用または収集にユーザが肯定的に同意している場合にしか、コンピューティングデバイス210および/またはコンピューティングデバイス210のユーザに関連する情報を解析しないこともある。コンテキストモジュール230は、さらに、ユーザが同意を撤回する機会を提供することもあり、その場合には、コンテキストモジュール230は、コンピューティングデバイス210またはコンピューティングデバイス210のユーザに関連する情報を収集したり、その他のかたちで保持したりすることを中止し得る。
コンピューティングデバイス210の状況は、コンピューティングデバイス210および/またはコンピューティングデバイス210のユーザ、ならびに様々な位置および時間におけるそのユーザの物理的および/または仮想的環境に関連する1つまたは複数の特性を指定することがある。例えば、コンテキストモジュール230は、コンピューティングデバイス210の状況の一部として、特定の時点におけるコンピューティングデバイス210に関連する物理的位置を、その特定の時点におけるコンピューティングデバイス210に関連する文脈情報に基づいて決定し得る。文脈情報が(例えば経時的な動きを示すセンサ情報に基づいて)変化するにつれて、コンテキストモジュール230は、決定したコンピューティングデバイス210の状況における物理的位置を更新し得る。
特定の位置および/または時間についてのコンピューティングデバイスの状況を規定する情報のタイプは、数が多すぎて列挙し得ない。いくつかの例として、コンピューティングデバイスの状況は、様々な位置および時間における音響指紋、ビデオ指紋、位置、動きの軌跡、方向、速度、施設名、所在地住所、場所の種類、建物、気象状況、および交通状況を指定することがある。コンピューティングデバイスの状況は、さらに、様々な位置および時間に関連する会議または出来事、様々な位置および時間に閲覧されたウェブページアドレス、様々な位置および時間に閲覧されたウェブページのデータ欄に入力されたテキストエントリ(例えば検索または閲覧履歴)、ならびに様々な位置および時間に関連するその他のアプリケーション使用データを規定するカレンダ情報を含むこともある。コンピューティングデバイスの状況は、さらに、様々な位置および時間にコンピューティングデバイスからアクセスされた、またはコンピューティングデバイスの存在下で同報通信されているオーディオおよび/またはビデオストリームについての情報、様々な位置および時間にコンピューティングデバイスからアクセスされた、またはコンピューティングデバイスの存在下で同報通信されているテレビジョンまたはケーブル/衛星放送についての情報、ならびに様々な位置および時間にコンピューティングデバイスからアクセスされたその他のサービスについての情報を含むこともある。
コンテキストモジュール230は、コンピューティングデバイス210の状況をアシスタントモジュール222と共有し得るし、アシスタントモジュール222は、この共有した状況を利用して、出来事の通知を出力するなどのアクションを実行するかどうかを決定し得る。コンテキストモジュール230は、ユーザの現在の状態または状況を指定するデータをアシスタントモジュール222に出力することによって、コンピューティングデバイス210に関連する現在の状況または現在の状態についてのアシスタントモジュール222からの要求に応答し得る。
いくつかの例では、コンテキストモジュール230は、アシスタントモジュール222とユーザとの間の会話の文脈を決定し得る。アシスタントモジュール222とユーザとの間の会話の文脈は、アシスタントモジュール222とユーザとの間の会話の単語およびフレーズに関連する1つまたは複数の特性であることがある。アシスタントモジュール222とユーザとの間で会話が行われると、コンテキストモジュール230は、その会話を追跡して、その会話中に使用される様々な単語およびフレーズを分類およびカテゴライズし得る。その会話から、コンテキストモジュール230は、会話中に使用される様々な単語およびフレーズの意味を導出し得ることがあり、会話中に使用される特定の単語またはフレーズを分類および/またはカテゴライズし得る。例えば、コンテキストモジュール230は、会話中に使用される特定の単語またはフレーズを、人、日時、位置、出来事などの概念と関連付け得る。コンテキストモジュール230は、その会話に関連する文脈情報を決定し得るし、その文脈情報を、ユーザ情報データ記憶装置224などのデータ記憶装置に記憶し得る。
コンテキストモジュール230は、任意の適当な方法で文脈情報を決定し得る可能性がある。例えば、コンテキストモジュール230は、会話に対して意味解析を実行して、様々な単語およびフレーズの意味を決定し得る。コンテキストモジュール230は、また、意味を会話の特定の単語および/またはフレーズに関連付けて、特定の単語および/またはフレーズに特定のタグをタグ付けしたり、リンクしたりするなどして関連付けることもできる。基本的に、会話の文脈は、ユーザおよび/またはアシスタントモジュール222が会話の以前の部分に遡って参照することを可能にし、アシスタントモジュール222が会話の以前の部分へのそうした後方参照を正しく解釈できるようにし得る。例えば、会話が特定の地理学的位置(例えば会社、ランドマーク、および住所など)に言及しており、同じ会話の中でその後に以前に言及された位置についての言及がある場合には、アシスタントモジュール222は、その言及を正しく解釈し得る可能性がある。
いくつかの例では、アシスタントモジュール222は、ユーザとの会話の一部として、UIC212を介してユーザと対話し得る。この会話は、図1の会話132と同様であることもある。会話が行われているときに、コンテキストモジュール230は、その会話を解析して、その会話に関連する文脈情報を決定し得るし、その文脈情報をユーザ情報データ記憶装置224に記憶し得る。UIC212は、ユーザとアシスタントモジュール222との間の会話の少なくとも一部であるユーザ入力についての指示を受け取り得る。このユーザ入力は、問合せ、およびアシスタントモジュール222が特定のアクション(例えば道順を調べる、レストランの予約をする、映画のチケットを購入するなど)を実行することを求める要求などであることもある。
問合せの受取りに応答して、アシスタントモジュール222は、その問合せに応答してアクションを実行するか、またはユーザとの会話を別のコンピューティングデバイス(すなわちコンピューティングデバイス210の外部のコンピューティングデバイス)にハンドオフするかを決定し得る。アシスタントモジュール222は、問合せに応答してアクションを実行するか、またはユーザとの会話を別のコンピューティングデバイスにハンドオフするかの決定を、単独で行うこともあるし、あるいは図1に示すデジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cなど、コンピューティングデバイス210がアクセスできる遠隔のアシスタントサービスと協働で行うこともある。
例えば、アシスタントモジュール222が、問合せに応答してアクションを実行するか、またはユーザとの会話を別のコンピューティングデバイスにハンドオフするかの決定を遠隔のアシスタントサービスと協働で行う場合には、アシスタントモジュール222は、ユーザから受け取った問合せについての指示を、通信ユニット242からネットワークを介してその遠隔のアシスタントサービスに送信し得る。それに応答して、アシスタントモジュールは、その問合せに対する応答についての指示、またはユーザとアシスタントモジュール222との間の対話が遠隔のコンピューティングデバイスにハンドオフされることについての指示を、通信ユニット242において、遠隔のアシスタントサービスからネットワークを介して受け取り得る。
他の例では、アシスタントモジュール222は、遠隔のアシスタントサービスを使用せずに、様々な要因に基づいて、問合せに応答してアクションを実行すべきかどうか、またはアシスタントモジュール222とユーザとの間の会話を遠隔のコンピューティングデバイスにハンドオフすべきかどうかを決定もし得る。このような要因の例としては、要求、要求に応答して実行すべきアクションのタイプ、コンピューティングデバイス210の能力、ユーザに関連する他のコンピューティングデバイスの能力、ユーザに関連する他のコンピューティングデバイスの可用性、ユーザに関連する他のコンピューティングデバイスの位置、および/またはユーザに関連する他のコンピューティングデバイスのコンピューティングデバイス210に対する近接度などのうちのいずれか1つ、またはそれらの任意の組合せが含まれる可能性がある。
アシスタントモジュール222は、アシスタントモジュール222とユーザとの間の会話を遠隔のコンピューティングデバイスにハンドオフするかどうかを決定する一部として、ユーザに関連する1つまたは複数のそれらの遠隔のコンピューティングデバイスの能力を決定することもある。いくつかの例では、アシスタントモジュール222は、ユーザ情報データ記憶装置224に記憶されている情報に基づいて、ユーザに関連する遠隔のコンピューティングデバイスの能力を決定し得る。ユーザ情報データ記憶装置224は、限定されるわけではないが、遠隔のコンピューティングデバイスの機能的能力、遠隔のコンピューティングデバイスのコンピューティングデバイス210に対する近接度、遠隔のコンピューティングデバイスが最後に活動状態になった時、および遠隔のコンピューティングデバイスがユーザに信用されているかどうかなど、ユーザに関連する遠隔のコンピューティングデバイスのそれぞれに関する情報を記憶し得る。
他の例では、アシスタントモジュール222は、通信ユニット242を介して遠隔サーバ(例えばクラウド)と通信してその情報を受け取ることによって、または通信ユニット242を介するなどして遠隔のコンピューティングデバイスと直接通信することによって、ユーザに関連する遠隔のコンピューティングデバイスの機能的能力を決定し得る。例えば、ユーザに関連する遠隔のコンピューティングデバイスの機能的能力に関する情報が遠隔サーバに記憶されている場合には、アシスタントモジュール222は、その情報について遠隔サーバに問い合わせ得る。
アシスタントモジュール222は、また、遠隔のコンピューティングデバイスと直接通信して、それらの機能的能力に関してそれらの遠隔のコンピューティングデバイスに問い合わせることもある。さらに、アシスタントモジュール222は、遠隔のコンピューティングデバイスと直接通信して、それらの遠隔のコンピューティングデバイスのその他の特徴、特性、または状況を決定することもある。例えば、アシスタントモジュール222は、Bluetooth(登録商標)無線またはその他の任意の短距離通信ユニットなど、通信ユニット242の特徴を利用して、ユーザに関連する遠隔のコンピューティングデバイスのいずれかがコンピューティングデバイス210に近接しているかどうかを決定し得る。アシスタントモジュール222は、通信ユニット242を利用して、短距離信号を同報通信もし得る。通信ユニット242がユーザに関連する遠隔のコンピューティングデバイスのうちのいずれか1つから、それが短距離信号を受け取ったことについての指示を受け取った場合には、アシスタントモジュール222は、その遠隔のコンピューティングデバイスがコンピューティングデバイス210に近接していると決定し得る。
上述の様々な要因に基づいて、アシスタントモジュール222は、アシスタントモジュール222とユーザとの間の会話を別の遠隔のコンピューティングデバイスにハンドオフするかどうかを決定し得る。アシスタントモジュール222が、要求に応答してアクションを実行するためには会話を特定の遠隔のコンピューティングデバイスにハンドオフすべきであると決定した場合には、アシスタントモジュール222は、会話を遠隔のコンピューティングデバイスにハンドオフすることを求める要求をその遠隔のコンピューティングデバイスに送信し得る。アシスタントモジュール222が、会話のハンドオフを受け取る確認を遠隔のコンピューティングデバイスから受け取った場合には、アシスタントモジュール222は、その遠隔のコンピューティングデバイスに会話をハンドオフし得る。
遠隔のコンピューティングデバイスに会話をハンドオフするためには、アシスタントモジュール222は、その会話についての指示と、その遠隔のコンピューティングデバイスによって出力される問合せに対する応答についての指示とを送信すればよい。会話についての指示は、遠隔のコンピューティングデバイスに対する会話を特定し得る。例えば、会話についての指示は、遠隔のアシスタントシステムに記憶されている、その会話に関連する文脈情報に関連する会話識別子を含むことがある。遠隔のコンピューティングデバイスは、それが会話の一部として受け取る追加の問合せに対する応答を構築するときに、会話識別子を利用して、その会話に関連する文脈情報を取り出し得る。
さらに、遠隔のコンピューティングデバイスに送信される会話についての指示は、会話の部分的または完全なテキスト音訳、コンテキストモジュール230によって生成される会話に関連する文脈情報、要求についての指示、および要求に応答して実行されるアクションについての指示などを含む可能性がある。遠隔のコンピューティングデバイスは、会話に関連する文脈情報を、それ自体のデータ記憶装置に記憶し得るし、それが会話の一部として受け取る追加の問合せに対する応答を構築するときに、その文脈情報を使用し得る。
アシスタントモジュール222は、遠隔のコンピューティングデバイスと直接または間接に通信することによって、遠隔のコンピューティングデバイスへの会話のハンドオフを行うことができる。いくつかの例では、アシスタントモジュール222は、図1のデジタルアシスタントサーバ160と同様の遠隔のアシスタントシステムなど、1つまたは複数の中間体を介して、会話のハンドオフを行うこともできる。したがって、アシスタントモジュール222は、会話をハンドオフするために必要な任意の情報をデジタルアシスタントサーバに送信し、デジタルアシスタントサーバが、その情報を遠隔のコンピューティングデバイスに送信し得る。他の例では、アシスタントモジュール222は、任意の適当な直接接続技術を介して遠隔のコンピューティングデバイスと直接通信することによって、会話のハンドオフを行うこともできる。したがって、アシスタントモジュール222は、会話をハンドオフするために必要な任意の情報を遠隔のコンピューティングデバイスに直接送信し得る。
いくつかの例では、アシスタントモジュール222は、遠隔のコンピューティングデバイスから会話のハンドオフを受け取る、要求の受取り側であることもある。ハンドオフを受け取る一部として、アシスタントモジュールは、遠隔のコンピューティングデバイスに対する会話についての指示を受け取ることがある。このような会話についての指示は、会話に関連する文脈情報についての指示を含むことがある。このような会話についての指示は、会話の一部として遠隔のコンピューティングデバイスが受け取る要求に応答して実行されるアクションについての指示を含むこともある。
アシスタントモジュール222は、このような受け取った情報をユーザ情報データ記憶装置224に記憶し得る。アシスタントモジュール222は、指示されたアクションを実行して、要求に応答もし得る。アシスタントモジュール222は、多数の方法でアクションを実行し得る。実行すべきアクションがレストランの予約である場合には、アシスタントモジュール222は、レストラン予約アプリケーション(例えばアプリケーションモジュール226のうちの1つ、またはコンピューティングデバイス210の外部にあるコンピューティングデバイスのアプリケーション)と通信して、要求されたレストランの予約を行うことができる。実行すべきアクションが、アシスタントモジュール222が特定の位置までの道順を出力することである場合には、アシスタントモジュール222は、出力構成要素202にその位置までの道順を表示するために出力させ得る。
いくつかの例では、アシスタントモジュール222は、実行すべきアクションについての指示または特定のアクションを実行する命令を受け取って、または受け取らずに、要求に応答するために実行すべきアクションを決定し得る。換言すれば、アシスタントモジュール222は、要求についての指示を受け取ることがあり、その要求に応答するためにはどのアクションを実行すべきかを決定し得る。アシスタントモジュール222は、要求を解析して、その要求の所期の意味を決定し得るし、その要求に応答するために実行すべきアクションを決定し得る。
指示されたアクションを実行するだけでなく、アシスタントモジュール222は、遠隔のコンピューティングデバイスからアシスタントモジュール222にハンドオフされた会話を継続もし得る。したがって、アシスタントモジュール222は、ユーザと対話し続けて、ユーザ入力を受け取り、1つまたは複数のアクションを実行することによって、そのユーザ入力に応答し得るし、これらは全てハンドオフされた会話の一部として行われる。アシスタントモジュール222は、遠隔のコンピューティングデバイスから受け取った、ユーザ情報データ記憶装置224に記憶されている文脈情報に基づいて、受け取ったユーザ入力を解釈し得ることもある。したがって、ユーザ入力が遠隔のコンピューティングデバイスで行われた会話の以前の部分に遡って参照するときには、アシスタントモジュール222は、ユーザ情報データ記憶装置224に記憶されている文脈情報を利用して、そのユーザ入力を適切に解釈し得る。さらに、コンテキストモジュール230は、アシスタントモジュール222とユーザとの間の会話の追跡および解析を継続して、ユーザに関連する追加の文脈情報を生成することもでき、その文脈情報をユーザ情報データ記憶装置224に記憶もし得る。
図3は、本開示の1つまたは複数の態様による、例示的な仮想アシスタントを実行するように構成された例示的なコンピューティングシステムを示すブロック図である。以下、図1のデジタルアシスタントサーバ160の例として、図3のデジタルアシスタントサーバ360について説明する。図3は、デジタルアシスタントサーバ360の1つの具体例を示しているに過ぎず、他の場合にはデジタルアシスタントサーバ360の他の多数の例が使用される可能性があり、デジタルアシスタントサーバ360の他の多数の例は、例示的なデジタルアシスタントサーバ360に含まれる構成要素の部分集合を含む、または図3には図示されていない追加の構成要素を含むこともある。例えば、デジタルアシスタントサーバ360は、サーバのクラスタを含むこともあり、デジタルアシスタントサーバ360を構成するサーバのクラスタを構成する各サーバは、本明細書に開示する技術を実行するために、本明細書で図3に記載する構成要素の全て含むこともあるし、あるいはそれらの一部を含むこともある。
図3の例に示すように、デジタルアシスタントサーバ360は、1つまたは複数のプロセッサ340、1つまたは複数の通信ユニット342、および1つまたは複数の記憶デバイス348を含む。記憶デバイス348は、アシスタントモジュール322、ユーザ情報データ記憶装置324、第三者モジュール326、およびコンテキストモジュール328を含む。
プロセッサ340は、図2のコンピューティングデバイス210のプロセッサ240に類似している。通信ユニット342は、図2のコンピューティングデバイス210の通信ユニット242に類似している。記憶デバイス348は、図2のコンピューティングデバイス210の記憶デバイス248に類似している。通信チャネル350は、図2のコンピューティングデバイス210の通信チャネル250に類似しており、したがって、構成要素間通信のために各構成要素340、342、および348を相互接続し得る。いくつかの例では、通信チャネル350は、システムバス、ネットワーク接続、プロセス間通信データ構造、またはその他の任意のデータを通信する方法を含む可能性がある。
いくつかの例では、記憶デバイス348は、一時的メモリである。すなわち、記憶デバイス348の主要な目的は、長期記憶ではない。この例では、記憶デバイス348は、揮発性メモリとして情報を短期記憶するように構成されることがあり、したがって、電源がオフになった場合には、記憶した内容を保持しない。揮発性メモリの例としては、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、および当技術分野で既知のその他の形態の揮発性メモリが含まれる。
いくつかの例では、記憶デバイス348は、1つまたは複数のコンピュータ可読記憶媒体も含むことがある。記憶デバイス348は、いくつかの例では、1つまたは複数の非一時的コンピュータ可読記憶媒体を含む。記憶デバイス348は、揮発性メモリに通常記憶されるよりも大量の情報を記憶するように構成されることがある。記憶デバイス348は、さらに、不揮発性メモリスペースとして情報を長期記憶するように構成されることもあり、電源のオン/オフサイクル後にも情報を保持することがある。不揮発性メモリの例としては、磁気ハードディスク、光ディスク、フロッピーディスク、フラッシュメモリ、あるいは様々な形態の電気的プログラマブルメモリ(EPROM)または電気的消去可能(EEPROM)メモリが含まれることがある。記憶デバイス348は、モジュール322、326および328、ならびにユーザ情報データ記憶装置324に関連するプログラム命令および/または情報(例えばデータ)を記憶し得る。記憶デバイス348は、モジュール322、326および328、ならびにユーザ情報データ記憶装置324に関連するデータまたはその他の情報を記憶するように構成されたメモリを含むこともある。
ユーザ情報データ記憶装置324は、図2のユーザ情報データ記憶装置224と類似しており、図1のユーザ情報データ記憶装置124Cの例にもなり得る。ユーザ情報データ記憶装置324は、ユーザとアシスタントモジュール322によって提供されるアシスタントとの間の会話中にアシスタントモジュール322がコンピューティングデバイスのユーザについて学習した、ユーザに関連する情報を記憶するように構成されることもある。ユーザ情報データ記憶装置324は、コンテキストモジュール328によって収集される、ユーザとアシスタントモジュール322および/または他のコンピューティングデバイス(例えばコンピューティングデバイス110Aで実行されるアシスタントモジュール122A、またはコンピューティングデバイス110Bで実行されるアシスタントモジュール122B)のアシスタントモジュールとの間の会話に関する情報を記憶することもある。アシスタントモジュール322は、ユーザ情報データ記憶装置324に記憶されている情報に依拠して、会話中に使用される単語およびフレーズの文脈的意味を決定して問合せを解釈し、問合せに適切な応答を生成し得る。特に、会話が第1のコンピューティングデバイス(例えばコンピューティングデバイス110A)から第2のコンピューティングデバイス(例えばコンピューティングデバイス110B)にハンドオフされた後は、アシスタントモジュール322は、ユーザ情報データ記憶装置324に記憶されている会話に関連する情報を利用して、コンピューティングデバイス110Bが受け取った問合せの単語、フレーズ、および意図などを、ハンドオフ前に行われた会話の一部分に含まれる人、場所、物、位置、出来事、および日時などの概念と適切に結びつけることができる。
アシスタントモジュール322は、図1のアシスタントモジュール122Cおよび図2のコンピューティングデバイス210のアシスタントモジュール222の一部または全ての機能を含む可能性がある。アシスタントモジュール322は、アシスタントモジュール122Cおよび222と同様の動作を実行して、ネットワーク130などのネットワークを介してアクセス可能なアシスタントサービスを提供し得る。すなわち、アシスタントモジュール322は、ネットワークを介してデジタルアシスタントサーバ360と通信しているコンピューティングデバイスがアクセスできる遠隔のアシスタントサービスとのインタフェースとして作用し得る。例えば、アシスタントモジュール322は、図1のデジタルアシスタントサーバ160のアシスタントモジュール122CとのインタフェースまたはAPIであることもある。
動作時には、アシスタントモジュール322は、コンピューティングデバイスのアシスタントモジュール(例えば図1のコンピューティングデバイス110Aおよび110Bのアシスタントモジュール122Aおよび122B)と協働して動作して、それらのアシスタントモジュールが問合せに対する応答を生成し、それらのアシスタントモジュールがユーザとそれらのアシスタントモジュールとの間の会話を行うときに会話をハンドオフするかどうかを決定するのを支援し、アシスタントモジュール122Aと122Bとの間で会話をハンドオフするのを支援し得る。アシスタントモジュール322は、アシスタントモジュール122Aおよび122Bが問合せに対する応答を構築するために問合せを解析するのを支援し得る。例えば、アシスタントモジュール322は、アシスタントモジュール122Aおよび122Bが受け取った音声入力についての指示を受け取り得るし、その音声入力に対して音声認識を実行し得る。別の例では、アシスタントモジュール322は、それらのアシスタントモジュールが受け取った入力をある言語から別の言語に翻訳し得ることもある。一般に、デジタルアシスタントサーバ360は、クラウドなどのサーバデバイスまたはサーバデバイスのクラスタ上で動作するので、アシスタントモジュール322は、そうした音声認識および翻訳などの処理負荷の大きなタスクを実行することによって、コンピューティングデバイスのアシスタントモジュールを支援し得る。
アシスタントモジュール322は、ユーザと遠隔のコンピューティングデバイス上で実行されるアシスタントモジュールとの間の会話を監視し得る。例えば、アシスタントモジュール322は、遠隔のコンピューティングデバイスで実行されるアシスタントモジュールがユーザから受け取った問合せについての指示と、それらの問合せに対する応答とを受け取ることがある。いくつかの例では、アシスタントモジュール322は、ユーザと遠隔のデバイスで実行されるアシスタントモジュールとの間の会話に参加することもある。アシスタントモジュール322は、遠隔のコンピューティングデバイスで実行されるアシスタントモジュールが受け取った問合せについての指示を受け取ることもある。これに応答して、アシスタントモジュール322は、それらの問合せに対する応答を決定し得るし、生成した応答についての指示を、遠隔のデバイスで実行されるアシスタントモジュールに送信し得る。
個人情報(例えばユーザ情報データ記憶装置324に記憶されている情報)を記憶して利用するための明示的な同意をユーザから受け取った後で、コンテキストモジュール328は、アシスタントモジュール322が監視する会話、および/またはアシスタントモジュール322が問合せに対する応答を生成するために参加する会話に関連する文脈情報を収集したり導出したりするなどして決定し得る。コンテキストモジュール328は、また、問合せに対する応答を生成するためにアシスタントモジュール322と協働して動作する遠隔のコンピューティングデバイスに関連する文脈情報を収集もし得る。コンテキストモジュール328は、この情報を暗号化するなどして処理して、ユーザの実際の識別を公表する可能性がある個人情報またはその他の任意の情報を除去した後で、その情報を記憶または利用し得る。例えば、この情報は、コンテキストモジュール328が処理して、ユーザ情報データ記憶装置324に記憶されるときには任意の個人を識別できる情報が除去されるようにし得る。コンテキストモジュール328は、情報の使用または収集にユーザが肯定的に同意している場合にしか、情報を収集または保持しないこともある。コンテキストモジュール328は、さらに、ユーザが同意を撤回する機会を提供することもあり、その場合には、コンテキストモジュール328は、このような情報を収集したり、その他のかたちで保持したりすることを中止し得る。
ユーザと遠隔のコンピューティングデバイスで実行されるアシスタントモジュールとの間の会話、および/またはアシスタントモジュール322が応答を生成するために参加する会話に関連する文脈情報は、限定されるわけではないが、人、場所、物、位置、出来事、および日時など、その会話の単語およびフレーズに関連する1つまたは複数の特性または概念を含むことがある。
会話が行われると、コンテキストモジュール328は、その会話を追跡して、その会話中に使用される様々な単語およびフレーズを分類およびカテゴライズし得る。その会話から、コンテキストモジュール328は、会話中に使用される様々な単語およびフレーズの意味を導出し得ることがあり、会話中に使用される特定の単語またはフレーズを分類および/またはカテゴライズし得る。コンテキストモジュール328は、会話中に使用される特定の単語またはフレーズを、人、日時、位置、出来事などの概念と関連付け得る。コンテキストモジュール328は、その会話に関連する文脈情報を決定し得るし、その文脈情報を、ユーザ情報データ記憶装置324などのデータ記憶装置に記憶し得る。例えば、その会話がレストランの予約に言及している場合には、コンテキストモジュール328は、そのレストラン、そのレストランの位置、および予約の日時などの情報を収集し得るし、収集した情報のそれぞれを、場所、日、時間、位置、および出来事などの概念と関連付け得る。コンテキストモジュール328は、それらの様々な概念と会話中の単語またはフレーズとの関連を、ユーザ情報データ記憶装置324に記憶し得る。
コンテキストモジュール328は、任意の適当な方法で文脈情報を決定し得る可能性がある。例えば、コンテキストモジュール328は、会話に対して意味解析を実行して、様々な単語およびフレーズの意味を決定し得る。コンテキストモジュール328は、また、意味を会話の特定の単語および/またはフレーズに関連付けて、特定の単語および/またはフレーズに特定のタグをタグ付けしたり、リンクしたりするなどして関連付け、その関連をユーザ情報データ記憶装置324に記憶もし得る。基本的に、会話の文脈は、ユーザおよび/またはアシスタントモジュール(例えばアシスタントモジュール322)が会話の以前の部分に遡って参照することを可能にし、アシスタントモジュールが会話の以前の部分へのそうした後方参照を正しく解釈できるようにし得る。例えば、会話が特定の地理学的位置(例えば会社、ランドマーク、および住所など)に言及しており、同じ会話の中でその後に、「そこまでの道順を教えて」という問合せなど、以前に言及された位置についての言及がある場合には、アシスタントモジュール322は、その言及を、以前に言及された位置のことを言っているものと正しく解釈し得る可能性がある。
いくつかの例では、アシスタントモジュール322は、遠隔のコンピューティングデバイスで実行されるアシスタントモジュールが受け取った問合せに対する応答を決定し得るし、また、ユーザと第1の遠隔のコンピューティングデバイスで実行される第1のアシスタントモジュールとの間の会話を、第2の遠隔のコンピューティングデバイスで実行される第2のアシスタントモジュールにハンドオフするかどうかを決定もし得る。アシスタントモジュール322は、本願を通して述べる様々な要因に基づいて、会話をハンドオフするかどうかを決定し得る。このような要因の例としては、要求、要求に応答して実行すべきアクションのタイプ、問合せを受け取ったコンピューティングデバイスの能力、問合せを受け取ったコンピューティングデバイス以外のユーザに関連するコンピューティングデバイスの能力、ユーザに関連する他のコンピューティングデバイスの可用性、ユーザに関連する他のコンピューティングデバイスの位置、および/またはユーザに関連する他のコンピューティングデバイスの問合せを受け取ったコンピューティングデバイスに対する近接度などのうちのいずれか1つ、またはそれらの任意の組合せが含まれる可能性がある。
アシスタントモジュール322は、会話をハンドオフするかどうかを決定する一部として、ユーザに関連する1つまたは複数の遠隔のコンピューティングデバイスの能力を決定することもある。いくつかの例では、アシスタントモジュール322は、ユーザ情報データ記憶装置324に記憶されている情報に基づいて、ユーザに関連する遠隔のコンピューティングデバイスの能力を決定し得る。ユーザ情報データ記憶装置324は、限定されるわけではないが、遠隔のコンピューティングデバイスの機能的能力、遠隔のコンピューティングデバイスの問合せを受け取ったコンピューティングデバイスに対する近接度、遠隔のコンピューティングデバイスが最後に活動状態になった時、および遠隔のコンピューティングデバイスがユーザに信用されているかどうかなど、ユーザに関連する遠隔のコンピューティングデバイスのそれぞれに関する情報を記憶し得る。
他の例では、アシスタントモジュール322は、通信ユニット342を介して遠隔サーバ(例えばクラウド)と通信してその情報を受け取ることによって、または通信ユニット342を介するなどして遠隔のコンピューティングデバイスと直接通信することによって、ユーザに関連する遠隔のコンピューティングデバイスの機能的能力を決定し得る。例えば、ユーザに関連する遠隔のコンピューティングデバイスの機能的能力に関する情報が遠隔サーバに記憶されている場合には、アシスタントモジュール322は、その情報について遠隔サーバに問い合わせ得る。
いくつかの例では、アシスタントモジュール322は、第三者アプリケーション(例えば図1に示す第三者アプリケーション172)と協働して、会話をハンドオフするかどうかを決定することがある。デジタルアシスタントサーバ360の第三者モジュール326は、デジタルアシスタントサーバ360を代表して第三者アプリケーションと対話し得る。すなわち、第三者モジュール326は、アシスタントモジュール322を代表して第三者アプリケーションと対話する。第三者モジュール326は、第三者アプリケーションがアクセスできるAPIまたはインタフェースを実施して、アシスタントモジュール322が、問合せに対する応答を決定する一部として、また会話をハンドオフするかどうかを決定する一部として、第三者アプリケーション172を利用してタスクを実行できるようにし得る。
いくつかの例では、アシスタントモジュール322は、第三者モジュール326を介して、第三者アプリケーションから、問合せに対する応答についての指示、会話をハンドオフするための指示、および/またはハンドオフを受け取るべきコンピューティングデバイスについての指示を受け取り得る。これに応答して、アシスタントモジュール322は、応答についての指示に少なくとも部分的に基づいて問合せに対する応答を決定し、会話をハンドオフする指示に少なくとも部分的に基づいて会話をハンドオフするかどうかを決定し、かつ/またはハンドオフを受け取るべきコンピューティングデバイスについての指示に少なくとも部分的に基づいてハンドオフを受け取るコンピューティングデバイスを決定し得る。
さらに、アシスタントモジュール322は、あるコンピューティングデバイスから別のコンピューティングデバイスに(例えば図1のコンピューティングデバイス110Aからコンピューティングデバイス110Bに)会話をハンドオフするのを支援し得る。例えば、アシスタントモジュール322は、特定のユーザに関連するコンピューティングデバイスに関する情報をユーザ情報データ記憶装置324に記憶し得る。ユーザに関連するコンピューティングデバイスに関する情報を求める要求の受取りに応答して、アシスタントモジュール322は、その情報を求めてユーザ情報データ記憶装置324にアクセスし得るし、ユーザに関連するコンピューティングデバイスに関する情報を返し得る。
上述の様々な要因に基づいて、アシスタントモジュール322は、会話を別の遠隔のコンピューティングデバイスにハンドオフするかどうかを決定し、会話のハンドオフを受け取る遠隔のコンピューティングデバイスを選択し得る。いくつかの例では、アシスタントモジュール322は、会話をハンドオフするプロセスに関わらないこともある。その場合には、アシスタントモジュール322は、問合せを受け取った遠隔のコンピューティングデバイスに、そのコンピューティングデバイスが別の遠隔のコンピューティングデバイスに会話をハンドオフすることになることについての指示を送信し得る。このような指示は、ハンドオフを受け取ることになる遠隔のコンピューティングデバイスについての指示、および問合せに対する応答についての指示などを含む可能性がある。
いくつかの例では、アシスタントモジュール322は、遠隔のコンピューティングデバイスへの会話のハンドオフを実行することがある。遠隔のコンピューティングデバイスに会話をハンドオフするために、アシスタントモジュール322は、会話のハンドオフを受け取ることを求める要求を遠隔のコンピューティングデバイスに送信し得る。この要求は、その会話についての指示、およびその遠隔のコンピューティングデバイスによって出力される問合せに対する応答についての指示などを含む可能性がある。会話についての指示は、遠隔のコンピューティングデバイスに対する会話を特定し得る。例えば、会話についての指示は、ユーザ情報データ記憶装置324に記憶されている、その会話に関連する文脈情報に関連する会話識別子を含むことがある。遠隔のコンピューティングデバイスは、それが会話の一部として受け取る追加の問合せに対する応答を構築するときに、会話識別子を利用して、その会話に関連する文脈情報をユーザ情報データ記憶装置324から取り出し得る。
図4は、本開示の1つまたは複数の態様による、1つまたは複数のプロセッサが1つまたは複数の例示的な仮想アシスタントを実行することによって実行される例示的な動作を示す流れ図である。図4に示すように、以下では、動作404〜410については、図1に示すコンピューティングデバイス110Aの文脈で説明し、動作412〜414および430については、図1に示すデジタルアシスタントサーバ160の文脈で説明し、動作416〜428については、図1に示すコンピューティングデバイス110Bの文脈で説明する。
例えば、図1に示すアシスタントモジュール122Aは、本開示の1つまたは複数の態様によれば、コンピューティングデバイス110Aの1つまたは複数のプロセッサで実行されて、動作400〜406を実行する。図1に示すアシスタントモジュール122Bは、本開示の1つまたは複数の態様によれば、コンピューティングデバイス110Bの1つまたは複数のプロセッサで実行されて、動作416〜428を実行する。図1に示すアシスタントモジュール122Cは、本開示の1つまたは複数の態様によれば、デジタルアシスタントサーバ160の1つまたは複数のプロセッサで実行されて、動作412、414、および430を実行する。
動作に際して、コンピューティングデバイス110Aは、個人情報を利用および記憶する前に、個人情報を利用および記憶するための同意をユーザから受け取り得る(404)。例えば、個人情報である可能性がある情報の識別に応答して、アシスタントモジュール122Aは、UIモジュール120Aに、アシスタントモジュール122Aとユーザとの間の対話中に得られる個人情報を記憶および利用するためのユーザからの許可を要求させることがある。コンピューティングデバイス110Aは、アシスタントモジュール122Aが個人情報を利用または記憶したいときに、その都度事前にユーザに同意することを求めないこともあることを理解されたい。例えば、コンピューティングデバイス110Aが、1年に1度、1日に1度、または(例えば最初の製品購入後や、初期セットアップ時などに)1回だけ同意を受け取る場合には、コンピューティングデバイス110Aは、その以前の同意を、将来個人情報を利用および記憶することへの同意として扱うこともある。ユーザがどのようにして同意を与えるかの1つの例としては、ユーザが、UIC112Aによって検出される「はい、私についての情報を記憶してもよいです」という音声入力を与え、この音声入力に応答して、アシスタントモジュール122Aが、ユーザについての個人記録をデータ記憶装置124Aに保持し始めることもある。ユーザは、以前の任意の時点で与えた任意の許可を明示的または暗黙的に取り消し得ることを理解されたい。
コンピューティングデバイス110Aは、ユーザとコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとの間の会話の少なくとも一部を構成する問合せのユーザ入力についての指示を受け取り得る(406)。コンピューティングデバイス110Aは、会話をコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aから別のコンピューティングデバイスにハンドオフするかどうかを決定し得る(408)。会話を別のコンピューティングデバイスにハンドオフすることによって、会話のハンドオフを受け取るコンピューティングデバイスは、コンピューティングデバイス110Aの代わりに問合せに対する応答を出力し得る。
いくつかの例では、問合せが会話を別のコンピューティングデバイスにハンドオフする明示的な命令を含む場合には、アシスタントモジュール122Aは、その明示的な命令に従って、問合せによって指定されるコンピューティングデバイスに会話をハンドオフし得る。他の例では、アシスタントモジュール122Aは、問合せに対する応答を決定し得るし、問合せに対する応答に少なくとも部分的に基づいて、会話を別のコンピューティングデバイスにハンドオフするかどうかを決定し得る。
会話を別のコンピューティングデバイスにハンドオフするかどうかの決定は、問合せに対する応答に、より詳細には、応答が提示される形態の決定に、少なくとも部分的に基づくこともある。例えば、アシスタントモジュール122Aは、応答を聴覚的に(例えば発語出力として)出力するか、視覚的に(例えば画像またはビデオとして)出力するか、対話型GUIとして出力する(例えば道順の対話型マップとして出力する)か、などを決定することがある。コンピューティングデバイス110Aが応答を決定された形態で提示し得ない場合、またはコンピューティングデバイス110Aが応答を決定された形態で提示するのに最適化されていない場合には、アシスタントモジュール122Aは、そのユーザが、応答を決定された形態で提示し得る、かつ/または応答を決定された形態で提示するように最適化されている別のコンピューティングデバイスに関連付けられているかどうかを決定し得る。
ユーザが、応答を決定された形態で提示し得る、かつ/または応答を決定された形態で提示するように最適化されている別のコンピューティングデバイスに関連付けられているかどうかを決定するために、アシスタントモジュール122Aは、コンピューティングデバイス110A以外のユーザに関連するコンピューティングデバイスを決定し、会話のハンドオフを受け取るために利用可能なユーザに関連するコンピューティングデバイスを決定し得る。アシスタントモジュール122Aは、会話のハンドオフを受け取るために利用可能なユーザに関連するコンピューティングデバイスの中から、応答を決定された形態で提示することが機能的にできる1つまたは複数のコンピューティングデバイスを決定し得る。
アシスタントモジュール122Aが、ユーザに関連する別のコンピューティングデバイスが会話のハンドオフを受け取るために利用可能であり、かつ応答を決定された形態で提示することが機能的にできると決定した場合には、アシスタントモジュール122Aは、その別のコンピューティングデバイスに会話をハンドオフすると決定し得る。換言すれば、アシスタントモジュール122Aは、コンピューティングデバイス110Aとその別のコンピューティングデバイスとの間の機能的能力における差異に少なくとも部分的に基づいて、会話をハンドオフするかどうかを決定し得る。
例えば、アシスタントモジュール122Aが、問合せに対する応答を視覚的に出力すると決定した場合には、アシスタントモジュール122Aは、コンピューティングデバイス110Aが表示デバイスに動作可能に結合されているかどうかを決定し得る。コンピューティングデバイス110Aが表示デバイスに動作可能に結合されていない場合には、アシスタントモジュール122Aは、ユーザに関連する別のコンピューティングデバイスが表示デバイスに動作可能に結合されているかどうかを決定し得る。ユーザに関連するその別のコンピューティングデバイスが表示デバイスに動作可能に結合されている場合には、アシスタントモジュール122Aは、ユーザに関連するその別のコンピューティングデバイスに会話をハンドオフすると決定し得る。
いくつかの例では、アシスタントモジュール122Aは、問合せに対する応答を決定するために第三者サーバシステム170で実行される第三者アプリケーション172と通信するなどして第三者アプリケーション172を利用することによって、問合せに対する応答を決定し得る。第三者アプリケーション172は、問合せに対する応答を決定するために、チケット購入サービスおよび配車サービスなどの第三者サービスにアクセスし得る可能性があるアプリケーションであることがある。アシスタントモジュール122Aは、第三者アプリケーション172がアシスタントモジュール122Aと対話するためにアクセスし得るAPIを提供し得る。
いくつかの例では、第三者アプリケーション172がアシスタントモジュール122Aと協働して問合せに対する応答を決定するように動作するときに、第三者アプリケーション172は、第1のコンピューティングデバイスで実行される第1のアシスタントモジュールから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかについての指示を送信することがある。例えば、問合せがアシスタントモジュール122Aがコンサートのチケットを購入することを求める要求である場合には、アシスタントモジュール122Aは、第三者アプリケーション172に、チケット購入サービスにアクセスしてそのコンサートのチケットを購入するように指示し得る。これに応答して、第三者アプリケーション172は、応答がコンサート会場の座席表の視覚的表現であることについての指示をアシスタントモジュール122Aに送信し得る。
これに応答して、アシスタントモジュール122Aは、コンピューティングデバイス110Aがコンサート会場の座席表の視覚的表現を出力し得るかどうかを決定し得る。コンピューティングデバイス110Aがコンサート会場の座席表の視覚的表現を出力し得ない場合には、アシスタントモジュール122Aは、コンサート会場の座席表の視覚的表示を行うことができる別のコンピューティングデバイスに会話をハンドオフし得る。このようにして、コンピューティングデバイス110Aは、第三者アプリケーション172から受け取った会話をハンドオフするかどうかについての指示に基づいて、会話をハンドオフするかどうかを決定し得る。
会話のハンドオフを受け取るために利用可能なユーザに関連する2つ以上のコンピューティングデバイスが、応答を決定された形態で提示することが機能的にできる場合には、アシスタントモジュール122Aは、上述の様々な要因に基づいて、その2つ以上のコンピューティングデバイスのうち、会話のハンドオフを受け取る1つを選択し得る。1つの場合では、アシスタントモジュール122Aは、応答を決定された形態で提示するのに比較的最適化されている方のコンピューティングデバイスを選択することもある。例えば、応答を視覚的に表示する場合に、その2つ以上のコンピューティングデバイスがそれぞれ表示装置に動作可能に結合されている場合には、アシスタントモジュール122Aは、相対的により大きな表示領域を有する表示デバイスに動作可能に結合されたコンピューティングデバイスを、会話のハンドオフを受け取るデバイスとして選択することもある。別の例で、アシスタントモジュール122Aは、コンピューティングデバイス110Aに対する近接度(すなわち物理的距離)に基づいて、その2つ以上のコンピューティングデバイスのうち、会話のハンドオフを受け取る1つを選択することもある。図4の例では、アシスタントモジュール122Aは、会話のハンドオフを受け取るものとしてコンピューティングデバイス110Bを選択し得る。
コンピューティングデバイス110Bへの会話のハンドオフは、多数の方法で実行し得る。1つの例では、コンピューティングデバイス110Bに会話をハンドオフするとの決定に応答して、コンピューティングデバイス110Aは、会話のハンドオフを受け取ることを求める要求をコンピューティングデバイス110Bに送信し得る(410)。会話をハンドオフすることを求める要求は、コンピューティングデバイス110Bによって出力される問合せに対する応答についての指示、ユーザとアシスタントモジュール122Aとの間でそれまでに行われた会話の内容についての指示、および会話に関連する文脈情報などを含む可能性がある。
いくつかの例では、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cは、コンピューティングデバイス110Aで実行されるアシスタントモジュール122Aの代わりに、またはこれと協働して、コンピューティングデバイス110Aで実行されるアシスタントモジュール122Aから別のコンピューティングデバイスに会話をハンドオフするかどうかを決定することがある。例えば、コンピューティングデバイス110Aによるユーザとコンピューティングデバイス110Aで実行されるアシスタントモジュール122Aとの間の会話の少なくとも一部を構成する問合せのユーザ入力についての指示の受取り(406)に応答して、コンピューティングデバイス110Aで実行されるアシスタントモジュール122Aは、問合せについての指示をデジタルアシスタントサーバ160に送信もし得る。
デジタルアシスタントサーバ160は、コンピューティングデバイス110Aから、問合せについての指示を受け取り得る。これに応答して、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cは、コンピューティングデバイス110Aで実行されるアシスタントモジュール122Aから別のコンピューティングデバイスに会話をハンドオフするかどうかを決定し得る(412)。別のコンピューティングデバイスに会話をハンドオフすることによって、会話のハンドオフを受け取るコンピューティングデバイスは、コンピューティングデバイス110Aの代わりに問合せに対する応答を出力し得る。
アシスタントモジュール122Cは、コンピューティングデバイス110Aによって実行される技術と同様の技術を実行して、コンピューティングデバイス110A以外のコンピューティングデバイスに会話をハンドオフするかどうかを決定し得る。例えば、問合せが会話を別のコンピューティングデバイスにハンドオフする明示的な命令を含む場合には、アシスタントモジュール122Cは、その明示的な命令に従って、問合せによって指定されるコンピューティングデバイスに会話をハンドオフし得る。
アシスタントモジュール122Cは、応答を提示する形態の決定に少なくとも部分的に基づいて、会話を別のコンピューティングデバイスにハンドオフするかどうかを決定することもある。例えば、アシスタントモジュール122Cは、応答を聴覚的に(例えば発語出力として)出力するか、視覚的に(例えば画像またはビデオとして)出力するか、対話型GUIとして出力する(例えば道順の対話型マップとして出力する)か、などを決定することがある。
アシスタントモジュール122Cは、コンピューティングデバイス110Aが応答を決定された形態で提示し得るかどうかを決定することがある。例えば、アシスタントモジュール122Cは、コンピューティングデバイス110Aの能力に関する記憶されている情報を利用して、この決定を行うこともある。別の例では、アシスタントモジュール122Cは、コンピューティングデバイス110Aにその能力に関する問合せを送信することがあり、それに応答して、コンピューティングデバイス110Aの能力についての指示を受け取ることもある。コンピューティングデバイス110Aが応答を決定された形態で提示し得ない場合、またはコンピューティングデバイス110Aが応答を決定された形態で提示するのに最適化されていない場合には、アシスタントモジュール122Cは、ユーザが、応答を決定された形態で提示し得る、かつ/または応答を決定された形態で提示するように最適化されている別のコンピューティングデバイスに関連付けられているかどうかを決定し得る。
ユーザが応答を決定された形態で提示し得る、かつ/または応答を決定された形態で提示するように最適化されている別のコンピューティングデバイスに関連付けられているかどうかを決定するために、アシスタントモジュール122Cは、コンピューティングデバイス110A以外のユーザに関連するコンピューティングデバイスを決定し、会話のハンドオフを受け取るために利用可能なユーザに関連するコンピューティングデバイスを決定し得る。アシスタントモジュール122Cは、会話のハンドオフを受け取るために利用可能なユーザに関連するコンピューティングデバイスの中から、応答を決定された形態で提示することが機能的にできる1つまたは複数のコンピューティングデバイスを決定し得る。
アシスタントモジュール122Cが、ユーザに関連する別のコンピューティングデバイスが会話のハンドオフを受け取るために利用可能であり、かつ応答を決定された形態で提示することが機能的にできると決定した場合には、アシスタントモジュール122Cは、その別のコンピューティングデバイスに会話をハンドオフすると決定し得る。換言すれば、アシスタントモジュール122Cは、コンピューティングデバイス110Aとその別のコンピューティングデバイスとの間の機能的能力における差異に少なくとも部分的に基づいて、会話をハンドオフするかどうかを決定し得る。
例えば、アシスタントモジュール122Cが、問合せに対する応答を視覚的に出力すると決定した場合には、アシスタントモジュール122Cは、コンピューティングデバイス110Aが表示デバイスに動作可能に結合されているかどうかを決定し得る。コンピューティングデバイス110Aが表示デバイスに動作可能に結合されていない場合には、アシスタントモジュール122Cは、ユーザに関連する別のコンピューティングデバイスが表示デバイスに動作可能に結合されているかどうかを決定し得る。ユーザに関連するその別のコンピューティングデバイスが表示デバイスに動作可能に結合されている場合には、アシスタントモジュール122Cは、ユーザに関連するその別のコンピューティングデバイスに会話をハンドオフすると決定し得る。
アシスタントモジュール122Aと同様に、いくつかの例では、アシスタントモジュール122Cは、問合せに対する応答を決定するために第三者サーバシステム170で実行される第三者アプリケーション172と通信することによって、問合せに対する応答を決定し得る。第三者アプリケーション172は、問合せに対する応答を決定するために、チケット購入サービスおよび配車サービスなどの第三者サービスにアクセスし得る可能性があるアプリケーションであることがある。アシスタントモジュール122Cは、第三者アプリケーション172がアシスタントモジュール122Cと対話するためにアクセスし得るAPIを提供し得る。
いくつかの例では、第三者アプリケーション172がアシスタントモジュール122Cと協働して問合せに対する応答を決定するように動作するときに、第三者アプリケーション172は、第1のコンピューティングデバイスで実行される第1のアシスタントモジュールから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかについての指示を送信することがある。例えば、問合せが、アシスタントモジュール122Cがコンサートのチケットを購入することを求める要求である場合には、アシスタントモジュール122Cは、第三者アプリケーション172に、チケット購入サービスにアクセスしてそのコンサートのチケットを購入するように指示し得る。これに応答して、第三者アプリケーション172は、応答がコンサート会場の座席表の視覚的表現であることについての指示をアシスタントモジュール122Cに送信し得る。
これに応答して、アシスタントモジュール122Cは、コンピューティングデバイス110Aがコンサート会場の座席表の視覚的表現を出力し得るかどうかを決定し得る。コンピューティングデバイス110Aがコンサート会場の座席表の視覚的表現を出力し得ない場合には、アシスタントモジュール122Cは、コンサート会場の座席表の視覚的表示を行うことができる別のコンピューティングデバイスに会話をハンドオフし得る。このようにして、アシスタントモジュール122Cは、第三者アプリケーション172から受け取った会話をハンドオフするかどうかについての指示に基づいて、会話をハンドオフするかどうかを決定し得る。
会話のハンドオフを受け取るために利用可能なユーザに関連する2つ以上のコンピューティングデバイスが、応答を決定された形態で提示することが機能的にできる場合には、アシスタントモジュール122Cは、上述の様々な要因に基づいて、その2つ以上のコンピューティングデバイスのうち、会話のハンドオフを受け取る1つを選択し得る。1つの場合では、アシスタントモジュール122Cは、応答を決定された形態で提示するのに比較的最適化されている方のコンピューティングデバイスを選択することもある。例えば、応答を視覚的に表示する場合に、その2つ以上のコンピューティングデバイスがそれぞれ表示装置に動作可能に結合されている場合には、アシスタントモジュール122Cは、相対的により大きな表示領域を有する表示デバイスに動作可能に結合されたコンピューティングデバイスを、会話のハンドオフを受け取るデバイスとして選択することもある。別の例で、アシスタントモジュール122Cは、コンピューティングデバイス110Aに対する近接度(すなわち物理的距離)に基づいて、その2つ以上のコンピューティングデバイスのうち、会話のハンドオフを受け取る1つを選択することもある。図4の例では、アシスタントモジュール122Cは、会話のハンドオフを受け取るものとしてコンピューティングデバイス110Bを選択し得る。
コンピューティングデバイス110Bへの会話のハンドオフは、多数の方法で実行し得る。1つの例では、コンピューティングデバイス110Bに会話をハンドオフするとの決定に応答して、コンピューティングデバイス110Cは、会話のハンドオフを受け取ることを求める要求をコンピューティングデバイス110Bに送信し得る(414)。会話をハンドオフすることを求める要求は、コンピューティングデバイス110Bによって出力される問合せに対する応答についての指示、ユーザとアシスタントモジュール122Aとの間でそれまでに行われた会話の内容についての指示、および会話に関連する文脈情報などを含む可能性がある。
図4に示すように、コンピューティングデバイス110Aおよびデジタルアシスタントサーバ160は両方とも、会話をハンドオフするかどうかを決定することをし得るし(すなわち動作406および412)、会話をコンピューティングデバイス110Bにハンドオフすることを求める要求を送信する(すなわち動作410および414)ことをし得る。いくつかの例では、動作408を実行して会話をコンピューティングデバイス110Bにハンドオフするとの決定に応答して、コンピューティングデバイス110Aで実行されるアシスタントモジュール122Aが、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cに対して、動作414を実行して会話をコンピューティングデバイス110Bにハンドオフすることを求める要求を送信するように指示することがある。同様に、いくつかの例では、動作412を実行して会話をコンピューティングデバイス110Bにハンドオフするとの決定に応答して、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cが、コンピューティングデバイス110Aで実行されるアシスタントモジュール122Aに対して、動作410を実行して会話をコンピューティングデバイス110Bにハンドオフすることを求める要求を送信するように指示することもある。
コンピューティングデバイス110Bは、個人情報を利用および記憶するための同意をユーザから受け取り得る(416)。例えば、個人情報である可能性がある情報の識別に応答して、アシスタントモジュール122Bは、UIモジュール120Bに、アシスタントモジュール122Bとユーザとの間の対話中に得られる個人情報を記憶および利用するためのユーザからの許可を要求させることがある。コンピューティングデバイス110Bは、アシスタントモジュール122Bが個人情報を利用または記憶したいときに、その都度事前にユーザに同意することを求めないこともあることを理解されたい。例えば、コンピューティングデバイス110Bが、1年に1度、1日に1度、または(例えば最初の製品購入後や、セットアップ後などに)1回だけ同意を受け取る場合には、コンピューティングデバイス110Bは、その以前の同意を、将来個人情報を利用および記憶することへの同意として扱うこともある。ユーザがどのようにして同意を与えるかの1つの例としては、ユーザが、UIC112Bによって検出される「はい、私についての情報を記憶してもよいです」という音声入力を与え、この音声入力に応答して、アシスタントモジュール122Bが、ユーザについての個人記録をデータ記憶装置124Bに保持し始めることもある。ユーザは、以前の任意の時点で与えた任意の許可を取り消すこともできることを理解されたい。
コンピューティングデバイス110Bは、会話のハンドオフを受け取ることを求める要求を、コンピューティングデバイス110Aから、またはデジタルアシスタントサーバ160から受け取ることがある(418)。この要求は、会話についての指示、コンピューティングデバイス110Bによって出力される応答についての指示、ユーザとアシスタントモジュール122Aとの間でそれまでに行われた会話の内容についての指示、および会話に関連する文脈情報などを少なくとも含む可能性がある。
会話のハンドオフを受け取ることを求める要求の、コンピューティングデバイス110Aからの、またはデジタルアシスタントサーバ160からの受取りに応答して、コンピューティングデバイス110Bは、会話のハンドオフを受け入れるかどうかを決定し得る(420)。コンピューティングデバイス110Bが会話のハンドオフを受け入れる場合には、コンピューティングデバイス110Bは、応答を出力して、その応答がユーザとコンピューティングデバイス110Bで実行されるアシスタントモジュール122Bとの間で現在行われている会話の一部を構成するようにし得る。
ユーザは、コンピューティングデバイス110BのUIC112Bと対話してユーザ入力を提供することによって、アシスタントモジュール122Bとの会話を継続し得る。UIC112Bは、問合せを示すユーザ入力についての指示をユーザから受け取り得る(424)。この問合せは、コンピューティングデバイス110Bで実行されるアシスタントモジュール122Bへの会話のハンドオフの前にユーザとアシスタントモジュール122Aとの間で行われた会話の以前の部分に遡って参照することもある。
アシスタントモジュール122Bは、問合せに対する応答を決定することをし得るし(426)、問合せに対する応答をUIC112Bで出力することをし得る(428)。この問合せは、コンピューティングデバイス110Bで実行されるアシスタントモジュール122Bへの会話のハンドオフの前にユーザとアシスタントモジュール122Aとの間で行われた会話の以前の部分に遡って参照するので、アシスタントモジュール122Bは、会話に関連する文脈情報を利用して、問合せに対する応答を決定し得る。このような文脈情報は、会話のハンドオフを実行する一部として、コンピューティングデバイス110Bがコンピューティングデバイス110Aおよび/またはデジタルアシスタントサーバ160から以前に受け取っていることもある。例えば、問合せが、コンピューティングデバイス110Bで実行されるアシスタントモジュール122Bへの会話のハンドオフの前にユーザとアシスタントモジュール122Aとの間で行われた会話の一部分で述べられた時間、場所、位置、出来事、人、映画、TV番組、および歌などに遡って参照する場合には、アシスタントモジュール122Bは、会話に関連する文脈情報を利用して、問合せ中のこれらの参照を、コンピューティングデバイス110Bで実行されるアシスタントモジュール122Bへの会話のハンドオフの前にユーザとアシスタントモジュール122Aとの間で行われた会話の一部分で述べられた特定の場所、位置、出来事、人、映画、TV番組、および歌などにマッピングすることによって、応答を生成し得る。
いくつかの例では、問合せに対する応答を決定する代わりに、アシスタントモジュール122Bは、デジタルアシスタントサーバ160で実行されるアシスタントモジュール122Cに問合せについての指示を送信することもある。アシスタントモジュール122Bと同様に、アシスタントモジュール122Cも、会話に関連する文脈情報を利用して、問合せに対する応答を決定し得る。このような文脈情報は、ユーザとアシスタントモジュール122Aとの間の会話を監視する一部としてアシスタントモジュール122Cによって以前に決定されている、または会話のハンドオフを実行する一部としてデジタルアシスタントサーバ160が以前に受け取っていることもある。例えば、問合せが、コンピューティングデバイス110Bで実行されるアシスタントモジュール122Bへの会話のハンドオフの前にユーザとアシスタントモジュール122Aとの間で行われた会話の一部分で述べられた時間、場所、位置、出来事、人、映画、TV番組、および歌などに遡って参照する場合には、アシスタントモジュール122Cは、会話に関連する文脈情報を利用して、問合せ中のこれらの参照を、コンピューティングデバイス110Bで実行されるアシスタントモジュール122Bへの会話のハンドオフの前にユーザとアシスタントモジュール122Aとの間で行われた会話の一部分で述べられた特定の場所、位置、出来事、人、映画、TV番組、および歌などにマッピングすることによって、応答を生成し得る。
問合せについての指示の受取りに応答して、アシスタントモジュール122Cは、問合せに対する応答を決定することをし得るし(430)、コンピューティングデバイス110Bで実行されるアシスタントモジュール122Bに応答についての指示を返送して、アシスタントモジュール122Bが問合せに対する応答をUIC112Bで出力できるようにすることをし得る(428)。
図5は、本開示の1つまたは複数の技術による、ユーザと例示的な仮想アシスタントとの間の会話のハンドオフを実行するコンピューティングシステムの例示的な動作を示す流れ図である。例示のみを目的として、以下、図1から図4の文脈内で、図5の例示的な動作について説明する。
図5の例では、コンピューティングシステムは、第1のコンピューティングデバイス110Aがユーザから受け取った問合せについての指示を受け取り得るし、ここで、この問合せは、ユーザと第1のコンピューティングデバイス110Aで実行される第1のアシスタント122Aとの間の会話の少なくとも一部分を構成する(502)。コンピューティングシステムの例としては、システム100、デジタルアシスタントサーバ160、および/またはコンピューティングデバイス110Bが含まれる可能性がある。コンピューティングシステムは、第1のコンピューティングデバイス110Aで実行される第1のアシスタント122Aから第2のコンピューティングデバイス110Bで実行される第2のアシスタント122Bに会話をハンドオフするかどうかを決定し得る(504)。第2のコンピューティングデバイス110Bで実行される第2のアシスタント122Bに会話をハンドオフするとの決定に応答して、コンピューティングシステムは、会話についての指示を第2のコンピューティングデバイス110Bに送信し得る(506)。
いくつかの例では、コンピューティングシステムは、第1のコンピューティングデバイス110Aと第2のコンピューティングデバイス110Bとの間の機能的能力における差異に少なくとも部分的に基づいて、第1のコンピューティングデバイス110Aで実行される第1のアシスタント122Aから第2のコンピューティングデバイス110Bで実行される第2のアシスタント122Bに会話をハンドオフするかどうかを決定し得る。
いくつかの例では、第1のコンピューティングデバイス110Aと第2のコンピューティングデバイス110Bとの間の機能的能力における差異に少なくとも部分的に基づいて、第1のコンピューティングデバイス110Aで実行される第1のアシスタント122Aから第2のコンピューティングデバイス110Bで実行される第2のアシスタント122Bに会話をハンドオフするかどうかを決定することは、コンピューティングシステムによって、問合せに対する応答を視覚的に出力すると決定すること、ならびに第1のコンピューティングデバイス110Aが第1の表示デバイスに動作可能に結合されていないとの決定、および、第2のコンピューティングデバイス110Bが第2の表示デバイスに動作可能に結合されているとの決定に応答して、第2のコンピューティングデバイス110Bで実行される第2のアシスタント122Bに会話をハンドオフすると決定することをさらに含むことがある。
いくつかの例では、コンピューティングシステムは、会話のハンドオフを受け取るために利用可能な、ユーザに関連する複数のコンピューティングデバイスから、会話のハンドオフを受け取る第2のコンピューティングデバイス110Bを選択することがある。いくつかの例では、ハンドオフを受け取る第2のコンピューティングデバイス110Bの選択は、第1のコンピューティングデバイス110Aに対する第2のコンピューティングデバイス110Bの物理的近接度に少なくとも部分的に基づく。
いくつかの例では、コンピューティングシステムは、ユーザと第1のコンピューティングデバイス110Aで実行される第1のアシスタント122Aとの間の会話に関連する文脈情報を決定することがある。コンピューティングシステムは、第2のコンピューティングデバイス110Bがユーザから受け取る第2の問合せについての指示を受け取ることがあり、ここで、この問合せは、第1の問合せを含む。コンピューティングシステムは、この文脈情報に少なくとも部分的に基づいて、第2の問合せが、第2のコンピューティングデバイス110Bで実行される第2のアシスタント122Bへの会話のハンドオフの前に行われたユーザと第1のコンピューティングデバイス110Aで実行される第1のアシスタント122Aとの間の会話の以前の部分に遡って参照していると決定することがある。コンピューティングシステムは、ユーザと第1のコンピューティングデバイス110Aで実行される第1のアシスタント122Aとの間の会話に関連する文脈情報に少なくとも部分的に基づいて、第2の問合せに対する応答を決定し得る。
いくつかの例では、コンピューティングシステムは、第1のコンピューティングデバイス110Aで実行される第1のアシスタント122Aから第2のコンピューティングデバイス110Bで実行される第2のアシスタント122Bに会話をハンドオフするかどうかについての指示を、第三者アプリケーション172から受け取ることがある。コンピューティングシステムは、第1のコンピューティングデバイス110Aで実行される第1のアシスタント122Aから第2のコンピューティングデバイス110Bで実行される第2のアシスタント122Bに会話をハンドオフするかどうかについての指示に基づいて、第1のコンピューティングデバイス110Aで実行される第1のアシスタント122Aから第2のコンピューティングデバイス110Bで実行される第2のアシスタント122Bに会話をハンドオフするかどうかを決定することもある。
いくつかの例では、問合せは、会話をハンドオフする明示的なコマンドを含むこともある。いくつかの例では、コンピューティングシステムは、第1のコンピューティングデバイス110Aから問合せについての指示を受け取ることもある。いくつかの例では、第1のコンピューティングデバイスが、問合せを示すユーザ入力を受け取ることもある。
本開示の技術は、上述の利点に加えて、回答の出力により適している可能性がある他のデバイスを識別することにより、アシスタントによって提供される回答のユーザの理解を高めることもできることは理解されるであろう。このようにして、本開示の技術は、ユーザが回答を受け取って理解するために必要なユーザ入力の数を削減し得るし、アシスタントがコンピューティングデバイスにおいて活発に動作して情報を処理する時間を短縮し、それにより、アシスタントが動作するコンピューティングシステムの電力使用を削減し得る。さらに、本開示の技術は、コンピューティングデバイスが、そのコンピューティングシステムにあまり適していない方法で回答を出力する回数を減少させるので、本開示の技術は、コンピューティングシステムが、そのコンピューティングシステムに適した方法で回答を出力する頻度を増加させ、それにより、コンピューティングシステムの性能および技術的動作を改善する。
以下の番号を振った例は、本開示の1つまたは複数の態様を例示し得る。
例1.コンピューティングシステムによって、第1のコンピューティングデバイスがユーザから受け取った問合せについての指示を受け取るステップであって、問合せが、ユーザと第1のコンピューティングデバイスで実行される第1のアシスタントとの間の会話の少なくとも一部分を構成する、ステップと、コンピューティングシステムによって、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかを決定するステップと、第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするとの決定に応答して、コンピューティングシステムによって、会話についての指示を第2のコンピューティングデバイスに送信するステップとを含む、方法。
例2.第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかを決定するステップが、第1のコンピューティングデバイスと第2のコンピューティングデバイスとの間の機能的能力における差異に少なくとも部分的に基づく、例1の方法。
例3.第1のコンピューティングデバイスと第2のコンピューティングデバイスとの間の機能的能力における差異に少なくとも部分的に基づいて、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかを決定するステップが、コンピューティングシステムによって、問合せに対する応答を視覚的に出力すると決定するステップと、第1のコンピューティングデバイスが第1の表示デバイスに動作可能に結合されていないとの決定、および第2のコンピューティングデバイスが第2の表示デバイスに動作可能に結合されているとの決定に応答して、コンピューティングシステムによって、第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフすると決定するステップとをさらに含む、例2の方法。
例4.コンピューティングシステムによって、会話のハンドオフを受け取るために利用可能な、ユーザに関連する複数のコンピューティングデバイスから、会話のハンドオフを受け取る第2のコンピューティングデバイスを選択するステップをさらに含む、例1から3のいずれかの方法。
例5.ハンドオフを受け取る第2のコンピューティングデバイスを選択するステップが、第1のコンピューティングデバイスに対する第2のコンピューティングデバイスの物理的近接度に少なくとも部分的に基づく、例4の方法。
例6.コンピューティングシステムによって、ユーザと第1のコンピューティングデバイスで実行される第1のアシスタントとの間の会話に関連する文脈情報を決定するステップと、コンピューティングシステムによって、第2のコンピューティングデバイスがユーザから受け取る第2の問合せについての指示を受け取るステップであって、問合せが第1の問合せを含む、ステップと、コンピューティングシステムによって、文脈情報に少なくとも部分的に基づいて、第2の問合せが、第2のコンピューティングデバイスで実行される第2のアシスタントへの会話のハンドオフの前に行われたユーザと第1のコンピューティングデバイスで実行される第1のアシスタントとの間の会話の以前の部分に遡って参照していると決定するステップと、コンピューティングシステムによって、ユーザと第1のコンピューティングデバイスで実行される第1のアシスタントとの間の会話に関連する文脈情報に少なくとも部分的に基づいて、第2の問合せに対する応答を決定するステップとをさらに含む、例1から例5のいずれかの方法。
例7.コンピューティングシステムによって、第三者アプリケーションから、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかについての指示を受け取るステップと、コンピューティングシステムによって、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかについての指示に基づいて、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかを決定するステップとをさらに含む、例1から例6のいずれかの方法。
例8.問合せが、会話をハンドオフする明示的なコマンドを含む、例1から例7のいずれかの方法。
例9.コンピューティングシステムが、第1のコンピューティングデバイスから問合せについての指示を受け取る、例1から例8のいずれかの方法。
例10.第1のコンピューティングデバイスが、問合せを示すユーザ入力を受け取る、例9の方法。
例11.第1のコンピューティングデバイスと、第2のコンピューティングデバイスと、ネットワークを介して第1のコンピューティングデバイスおよび第2のコンピューティングデバイスに動作可能に接続されたデジタルアシスタントシステムとを備えるシステムであって、第1のコンピューティングデバイスが、ユーザと第1のコンピューティングデバイスで実行される第1のアシスタントとの間の会話の少なくとも一部分を構成する問合せを示すユーザ入力を受け取り、問合せについての指示をデジタルアシスタントシステムに送信するように動作可能であり、デジタルアシスタントシステムが、第1のコンピューティングデバイスから問合せについての指示を受け取り、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかを決定し、第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするとの決定に応答して、会話についての指示を第2のコンピューティングデバイスに送信するように動作可能であり、第2のコンピューティングデバイスが、会話についての指示をデジタルアシスタントシステムから受け取り、会話の一部として問合せに対する応答を出力するように動作可能である、システム。
例12.デジタルアシスタントシステムが、第1のコンピューティングデバイスと第2のコンピューティングデバイスとの間の機能的能力における差異に少なくとも部分的に基づいて、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかを決定するようにさらに動作可能である、例11のシステム。
例13.デジタルアシスタントシステムが、問合せに対する応答を視覚的に出力すると決定し、第1のコンピューティングデバイスが第1の表示デバイスに動作可能に結合されていないとの決定、および第2のコンピューティングデバイスが第2の表示デバイスに動作可能に結合されているとの決定に応答して、第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフすると決定するようにさらに動作可能である、例12のシステム。
例14.デジタルアシスタントシステムが、会話のハンドオフを受け取るために利用可能な、ユーザに関連する複数のコンピューティングデバイスから、会話のハンドオフを受け取る第2のコンピューティングデバイスを選択するようにさらに動作可能である、例12および13のいずれかのシステム。
例15.デジタルアシスタントシステムが、ユーザと第1のコンピューティングデバイスで実行される第1のアシスタントとの間の会話に関連する文脈情報を決定するようにさらに動作可能であり、第2のコンピューティングデバイスが、第2の問合せを示す第2のユーザ入力をユーザから受け取り、ユーザ入力が、第1のユーザ入力を含み、問合せが、第1の問合せを含み、第2の問合せについての指示をデジタルアシスタントシステムに送信するようにさらに動作可能であり、デジタルアシスタントシステムが、文脈情報に少なくとも部分的に基づいて、第2の問合せが、第2のコンピューティングデバイスで実行される第2のアシスタントへの会話のハンドオフの前に行われたユーザと第1のコンピューティングデバイスで実行される第1のアシスタントとの間の会話の以前の部分に遡って参照していると決定し、ユーザと第1のコンピューティングデバイスで実行される第1のアシスタントとの間の会話に関連する文脈情報に少なくとも部分的に基づいて、第2の問合せに対する第2の応答を決定し、応答が第1の応答を含み、第2の問合せに対する第2の応答についての指示を、第2のコンピューティングデバイスに送信するようにさらに動作可能であり、第2のコンピューティングデバイスが、第2の問合せに対する第2の応答についての指示をデジタルアシスタントシステムから受け取り、第2の問合せに対する第2の応答を出力するようにさらに動作可能である、例11から14のいずれかのシステム。
例16.デジタルアシスタントシステムが、第三者アプリケーションから、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかについての指示を受け取り、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかについての指示に基づいて、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかを決定するようにさらに構成される、例11から例15のいずれかのシステム。
例17.デジタルアシスタントシステムが、第三者アプリケーションから、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかについての指示を受け取り、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかについての指示に基づいて、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかを決定するようにさらに構成される、例11から例16のいずれかのシステム。
例18.問合せが、会話をハンドオフする明示的なコマンドを含む、例11から例17のいずれかのシステム。
例19.実行されると、コンピューティングシステムの少なくとも1つのプロセッサに、第1のコンピューティングデバイスがユーザから受け取った問合せについての指示を受け取らせ、ここで、問合せが、ユーザと第1のコンピューティングデバイスで実行される第1のアシスタントとの間の会話の少なくとも一部分を構成しており、また、第1のコンピューティングデバイスで実行される第1のアシスタントから第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするかどうかを決定させ、第2のコンピューティングデバイスで実行される第2のアシスタントに会話をハンドオフするとの決定に応答して、会話についての指示を第2のコンピューティングデバイスに送信させる命令で符号化された、コンピュータ可読記憶媒体。
例20.命令が、実行されると、コンピューティングシステムの少なくとも1つのプロセッサに、さらに、応答を出力する形態を決定させ、会話のハンドオフを受け取るために利用可能であり、かつ応答を決定された形態で出力し得るユーザに関連する複数のコンピューティングデバイスから、会話のハンドオフを受け取る第2のコンピューティングデバイスを選択させる、例19のコンピュータ可読記憶媒体。
例21.例1から例10の任意の組合せである方法。
例22.例1から例10の任意の組合せである方法を実行する手段を備える、コンピューティングシステム。
例23.例1から例10の任意の組合せである方法を実行するように構成された少なくとも1つのプロセッサを備える、コンピューティングシステム。
例24.コンピューティングシステムの少なくとも1つのプロセッサによって実行されると例1から例10の任意の組合せである方法を実行する命令を含む、非一時的コンピュータ可読媒体。
例25.第2のコンピューティングデバイスで実行される第2のアシスタントモジュールが、ユーザと第1のコンピューティングデバイスで実行される第1のアシスタントモジュールとの間の会話のハンドオフを受け取ることを求める要求を受け取るステップであって、この要求が会話についての指示を少なくとも含む、ステップと、会話のハンドオフの受取りに応答して、第2のコンピューティングデバイスが、会話を促進するための応答を出力するステップとを含む、方法。
例26.会話のハンドオフを受け取ることを求める要求が、応答についての指示を含む、例25の方法。
例27.会話のハンドオフを受け取ることを求める要求が、会話から決定される文脈情報についての指示を含む、例25および26のいずれかの方法。
例28.第2のコンピューティングデバイスが、要求についての指示を含むユーザ入力についての指示を受け取るステップであって、この要求が、第2のコンピューティングデバイスが会話のハンドオフを受け取る前にユーザと第1のコンピューティングデバイスで実行される第1のアシスタントモジュールとの間で行われた会話の一部分を参照するものであるステップと、第2のコンピューティングデバイスが、文脈情報についての指示に少なくとも部分的に基づいて第2の要求に対する応答を出力するステップとをさらに含む、例25から例27のいずれかの方法。
例29.例25から例28の任意の組合せである方法。
例30.例25から例28の任意の組合せである方法を実行する手段を備える、コンピューティングシステム。
例31.例25から例28の任意の組合せである方法を実行するように構成された少なくとも1つのプロセッサを備える、コンピューティングシステム。
例32.コンピューティングシステムの少なくとも1つのプロセッサによって実行されると例25から例28の任意の組合せである方法を実行する命令を含む、非一時的コンピュータ可読媒体。
1つまたは複数の例において、記載される機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装される可能性がある。ソフトウェアで実装される場合には、それらの機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体に記憶し、あるいはコンピュータ可読媒体を介して伝送して、ハードウェア型の処理ユニットによって実行し得る。コンピュータ可読媒体は、1つまたは複数のコンピュータ可読記憶媒体を含み、このコンピュータ可読記憶媒体は、データ記憶媒体などの有形媒体、または例えば通信プロトコルによるある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する。このように、コンピュータ可読媒体は、一般に、(1)非一時的な、有形のコンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応する可能性がある。データ記憶媒体は、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサがアクセスして、本開示に記載した技術を実施するための命令、コード、および/またはデータ構造を取り出し得る、任意の入手可能な媒体であってよい。コンピュータプログラム製品が、コンピュータ可読媒体を含むこともある。
限定ではなく例示を目的として、このようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMまたはその他の光学ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶デバイス、フラッシュメモリ、あるいはコンピュータがアクセスし得る、所望のプログラムコードを命令またはデータ構造の形態で記憶するために使用し得るその他の任意の記憶媒体を含む可能性がある。また、任意の接続を、コンピュータ可読媒体と呼ぶことも適切である。例えば、命令が、同軸ケーブル、光ファイバケーブル、撚線対、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を用いてウェブサイト、サーバ、またはその他の遠隔ソースに伝送される場合には、そうした同軸ケーブル、光ファイバケーブル、撚線対、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術も、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体および媒体ならびにデータ記憶媒体は、接続、搬送波、信号、またはその他の一時的媒体を含まず、その代わりに、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書で使用する「ディスク(disk)」および「ディスク(disc)」は、コンパクトディスク(disc)、レーザディスク(disc)、光ディスク(disc)、デジタル汎用ディスク(disc)、フロッピーディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含む。ここで、ディスク(disk)は、通常はデータを磁気的に再生し、ディスク(disc)は、レーザを用いて光学的にデータを再生する。上記のものの組合せも、コンピュータ可読媒体の範囲に含まれるものとする。
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、あるいはその他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行し得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書に記載する技術を実施するのに適したその他の任意の構造のいずれでも指し得る。さらに、いくつかの態様では、本明細書に記載する機能は、専用のハードウェアおよび/またはソフトウェアモジュール内で提供し得る。また、これらの技術は、1つまたは複数の回路または論理要素で完全に実施もし得る。
本開示の技術は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(例えばチップセットなど)など、幅広い様々なデバイスまたは装置で実施し得る。本開示では、開示する技術を実行するように構成されたデバイスの機能面を強調するように、様々な構成要素、モジュール、またはユニットについて説明したが、これらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによって実現しなくてもよい。逆に、上述のように、様々なユニットを1つのハードウェアユニットに組み合わせることもできるし、あるいは適当なソフトウェアおよび/またはファームウェアと合わせて、上述した1つまたは複数のプロセッサなどの相互運用可能なハードウェアユニットの集合体によって実現もし得る。
様々な実施形態について説明した。上記その他の実施形態は、以下の特許請求の範囲の範囲に含まれる。