(57)【要約】  クライアント要求の非同期実行のためのコンピュータ可読記憶媒体に記憶されたコンピュータプログラムを含む方法、システム、および装置が開示される。いくつかの実装形態において、デジタルアシスタントへのユーザ要求を示すデータが受信される。ユーザ要求に対応するアクションが決定される。アクションは、ユーザ要求と非同期的に実施されるべきアクションとして分類されると決定される。出力のために、確認メッセージが送信され、アクションは、ユーザ要求と非同期的に実施される。特定の要求をその要求に対して同期的に実施するべきか、または非同期的に実施するべきかを決定するために、ユーザ要求を評価するようにクライアントデバイスを制御することによって、クライアントデバイスは、一時的なネットワーク停止および他の接続妨害に対処することができる。
2019527392.tif 000002
【特許請求の範囲】
【請求項１】
1つまたは複数の処理デバイスによって実施される方法であって、
前記1つまたは複数の処理デバイスによって、デジタルアシスタントへのユーザ要求を示すデータを受信するステップと、
前記1つまたは複数の処理デバイスによって、前記ユーザ要求に対応するアクションを決定するステップと、
前記1つまたは複数の処理デバイスによって、前記アクションが前記ユーザ要求と非同期的に実施されるべきアクションとして分類されると決定するステップと、
前記アクションが前記ユーザ要求と非同期的に実施されるべきアクションとして分類されるとの決定に基づいて、
前記1つまたは複数の処理デバイスによって、出力のために確認メッセージを送信するステップと、
前記1つまたは複数の処理デバイスによって、前記アクションが前記ユーザ要求と非同期的に実施されるようにするステップと
を含む、方法。
【請求項２】
前記デジタルアシスタントへのユーザ要求を示す前記データを受信するステップが、音声コマンドを含むオーディオデータを受信するステップを含み、
前記方法が、前記音声コマンドの文字起こしを決定するために、自動発話認識を実施するステップを含み、
前記ユーザ要求に対応する前記アクションを決定するステップが、前記文字起こしに基づいて前記アクションを決定するステップを含む、
請求項1に記載の方法。
【請求項３】
前記ユーザ要求がユーザからの第1のユーザ要求であり、前記アクションが前記ユーザ要求と非同期的に実施されるようにするステップが、前記第1のユーザ要求によって要求された前記アクションを実施する前に、前記ユーザから前記デジタルアシスタントへの1つまたは複数の他のユーザ要求を受信するステップを含む、請求項1または2に記載の方法。
【請求項４】
前記ユーザ要求が第1のユーザ要求であり、前記アクションが前記ユーザ要求と非同期的に実施されるようにするステップが、前記第1のユーザ要求によって要求された前記アクションを実施する前に、前記ユーザから前記デジタルアシスタントへの1つまたは複数の他のユーザ要求に対応するアクションを実施するステップを含む、請求項1または2に記載の方法。
【請求項５】
出力のために前記確認メッセージを送信するステップが、前記アクションが実施されることを示す確認メッセージを送信するステップを含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
合成された発話を含むオーディオデータを生成するために、テキスト読み上げシステムを使用するステップをさらに含み、
前記確認メッセージを送信するステップが、前記合成された発話を含む前記生成されたオーディオデータを送信するステップを含む、
請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記アクションが前記ユーザ要求と非同期的に実施されるべきアクションとして分類されると決定するステップが、
前記アクションが特定のアクションタイプに対応すると決定するステップと、
異なるアクションタイプが要求と同期的に実行されるように割り当てられるか、または非同期的に実行されるように割り当てられるかを示す割当てデータにアクセスするステップと、
前記割当てデータに基づいて、前記特定のアクションタイプが要求と非同期的に実行されるように割り当てられると決定するステップと
を含む、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記アクションが、前記ユーザ要求と非同期的に実施されるべきアクションとして分類されると決定するステップが、
前記アクションを実施するように構成されるアプリケーションまたはサーバを識別するステップと、
前記識別されたアプリケーションまたはサーバへの要求が非同期処理に指定されたと決定するステップと
を含む、請求項1から6のいずれか一項に記載の方法。
【請求項９】
前記アクションが前記ユーザ要求と非同期的に実施されるようにするステップが、
要求される前記アクションを示すレコードを記憶するステップと、
前記記憶されたレコードに基づいて、前記アクションを実施するためにサーバシステムに要求を送信するステップと
を含む、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
前記アクションが前記ユーザ要求と非同期的に実施されるようにするステップが、
前記識別されたアクションに基づいて、データストレージシステムの領域を選択するステップと、
前記選択された領域に前記アクションに関するデータを記憶するための書込み要求を送信するステップと、
前記書込み要求に応答して、前記データストレージシステムの前記選択された領域に対応するソフトウェアを実行するためにリモートプロシージャコールを発行するステップと、
前記実行されたソフトウェアを使用して、前記アクションを実施するためのアプリケーションサーバへの要求を生成するステップと
を含む、請求項8または9に記載の方法。
【請求項１１】
前記アクションが前記ユーザ要求と非同期的に実施されるようにするステップが、
前記アクションを実施するためにサーバシステムに要求を送信するステップと、
前記アクションの完了のためのタイムアウト期間を設定するステップと、
前記タイムアウト期間の終了の前に前記アクションが完了されると決定するステップと、
前記アクションの実行を示すデータを記憶するステップと
を含む、請求項1から10のいずれか一項に記載の方法。
【請求項１２】
前記デジタルアシスタントへの第2のユーザ要求を示すデータを受信するステップと、
前記第2のユーザ要求に対応する第2のアクションを決定するステップと、
前記第2のアクションが前記第2のユーザ要求と非同期的に実施されるべきアクションとして分類されないと決定するステップと、
前記第2のアクションが前記第2のユーザ要求と非同期的に実施されるべきアクションとして分類されないとの決定に基づいて、前記第2のアクションが前記ユーザ要求に対して同期的に実施されるようにするステップと
をさらに含む、請求項1から11のいずれか一項に記載の方法。
【請求項１３】
前記デジタルアシスタントへの第2のユーザ要求を示すデータを受信するステップと、
前記第2のユーザ要求に対応する第2のアクションを決定するステップと、
前記第2のアクションが前記第2のユーザ要求と非同期的に実施されるべきアクションとして分類されると決定するステップと、
前記第2のアクションが前記第2のユーザ要求と非同期的に実施されるべきアクションとして分類されるとの決定に基づいて、前記第2のアクションの実施を開始するステップと、
前記第2のアクションがタイムアウト期間内に実施されないと決定するステップと、
出力のために、前記第2のアクションの実行が失敗したことを示すメッセージを提供するステップと
をさらに含む、請求項1から11のいずれか一項に記載の方法。
【請求項１４】
システムであって、
1つまたは複数の処理デバイスと、命令を記憶する1つまたは複数のストレージデバイスとを備え、前記1つまたは複数の処理デバイスによって実行されたとき、前記1つまたは複数の処理デバイスに、
前記1つまたは複数の処理デバイスによって、デジタルアシスタントへのユーザ要求を示すデータを受信することと、
前記1つまたは複数の処理デバイスによって、前記ユーザ要求に対応するアクションを決定することと、
前記1つまたは複数の処理デバイスによって、前記アクションが前記ユーザ要求と非同期的に実施されるべきアクションとして分類されると決定することと、
前記アクションが、前記ユーザ要求と非同期的に実施されるべきアクションとして分類されるとの決定に基づいて、
前記1つまたは複数の処理デバイスによって、出力のために確認メッセージを送信することと、
前記1つまたは複数の処理デバイスによって、前記アクションが前記ユーザ要求と非同期的に実施されるようにすることと
を含む動作を実施させるように動作可能である、システム。
【請求項１５】
前記デジタルアシスタントへのユーザ要求を示す前記データを受信することが、音声コマンドを含むオーディオデータを受信することを含み、
前記動作が、前記音声コマンドの文字起こしを決定するために、自動発話認識を実施するステップを含み、
前記ユーザ要求に対応する前記アクションを決定することが、前記文字起こしに基づいて前記アクションを決定することを含む、
請求項14に記載のシステム。
【請求項１６】
前記ユーザ要求がユーザからの第1のユーザ要求であり、前記アクションが前記ユーザ要求と非同期的に実施されるようにすることが、前記第1のユーザ要求によって要求された前記アクションを実施する前に、前記ユーザから前記デジタルアシスタントへの1つまたは複数の他のユーザ要求を受信することを含む、
請求項14または15に記載のシステム。
【請求項１７】
合成された発話を含むオーディオデータを生成するために、テキスト読み上げシステムを使用することをさらに含み、
前記確認メッセージを送信することが、前記合成された発話を含む前記生成されたオーディオデータを送信することを含む、
請求項14から16のいずれか一項に記載のシステム。
【請求項１８】
コンピュータプログラムを記憶する1つまたは複数のコンピュータ可読記憶媒体であって、前記コンピュータプログラムが1つまたは複数の処理デバイスによって実行されたとき、前記1つまたは複数の処理デバイスに、
前記1つまたは複数の処理デバイスによって、デジタルアシスタントへのユーザ要求を示すデータを受信することと、
前記1つまたは複数の処理デバイスによって、前記ユーザ要求に対応するアクションを決定することと、
前記1つまたは複数の処理デバイスによって、前記アクションが前記ユーザ要求と非同期的に実施されるべきアクションとして分類されると決定することと、
前記アクションが、前記ユーザ要求と非同期的に実施されるべきアクションとして分類されるとの決定に基づいて、
前記1つまたは複数の処理デバイスによって、出力のために確認メッセージを送信することと、
前記1つまたは複数の処理デバイスによって、前記アクションが前記ユーザ要求と非同期的に実施されるようにすることと
を含む動作を実施させる命令を含む、1つまたは複数のコンピュータ可読記憶媒体。
【請求項１９】
前記デジタルアシスタントへのユーザ要求を示す前記データを受信することが、音声コマンドを含むオーディオデータを受信することを含み、
前記動作が、前記音声コマンドの文字起こしを決定するために、自動発話認識を実施するステップを含み、
前記ユーザ要求に対応する前記アクションを決定することが、前記文字起こしに基づいて前記アクションを決定することを含む、
請求項18に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項２０】
前記ユーザ要求がユーザからの第1のユーザ要求であり、前記アクションが前記ユーザ要求と非同期的に実施されるようにすることが、前記第1のユーザ要求によって要求された前記アクションを実施する前に、前記ユーザから前記デジタルアシスタントへの1つまたは複数の他のユーザ要求を受信することを含む、請求項18に記載の1つまたは複数のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その内容全体が参照により本明細書に組み込まれる、2016年6月27日に出願された、"ASYNCHRONOUS PROCESSING OF DIGITAL ASSISTANT REQUESTS"という名称の米国特許出願第15/193,929号に基づく優先権を主張する。
【背景技術】
【０００２】
いくつかの電話および他のデバイスは、ユーザがクエリを出し、かつ他の要求を実施することを可能にするデジタルアシスタント機能を提供する。たとえば、ユーザがデバイスに音声クエリを話す場合があり、デバイスは、クエリに応答して検索結果を取得しかつ提示する場合がある。デジタルアシスタント機能は、たとえば発話認識を実施するために、サーバシステムによる処理を含む場合がある。したがって、デジタルアシスタント機能は、ユーザのデバイスとサーバシステムとの間のワイヤレス通信チャネルの変化に敏感であり、チャネル上の待ち時間、一時的なデータレートの低下、またはチャネルの遮断があるとき、機能は影響を受ける可能性がある。そのようなことは、たとえば干渉、またはネットワーク由来の問題(network-originating issues)から生じる、無線チャネル状態によって引き起こされる場合がある。要求の部分的処理がユーザのデバイス上で実施される場合、デバイスの技術的な限界または他のタスクでのデバイスリソースの利用が、デジタルアシスタント機能の動作を妨害することがある。
【発明の概要】
【課題を解決するための手段】
【０００３】
いくつかの実装形態では、デジタルアシスタント、たとえば対話エージェントに対して実施される少なくともいくつかのユーザ要求をユーザの要求と非同期的に行うことができる。ユーザは、デジタルアシスタントに対して様々なタイプの要求を出す場合があり、そのうちのいくつかは実行が即時であること、またはユーザの要求と同期的であることを必要としない場合がある。サーバシステムは、非同期実行に適したユーザ要求を識別し、それらの要求を実行するためのタイミングをデジタルアシスタントとのユーザの対話から切り離すことができる。結果として、システムは、ユーザがデジタルアシスタントに他の要求を行うことを妨げる可能性がある遅延を回避することができる。たとえば、同期実行ではユーザは、一般的に直近に要求されたアクションが完了されるまで待つ必要があり、その後ユーザは新しい要求を発行してもよい。しかしながら、これらの遅延は非同期処理で回避することができる。新しい要求が、進行中であるまたは実施するようスケジュールされているすでに要求されたアクションと並行して受信し、処理することができるからである。一例では、第1のアクションが非同期実行に選択されるとき、デジタルアシスタントは、第1のアクションが実行されることになるという確認を実施し、第1のアクションが完了する前にユーザからさらなる要求を受信しかつ処理することができる。
【０００４】
ユーザによって要求された同期アクションと非同期アクションとの間で選択するためにサーバシステムによって使用される技法はまた、1つもしくは複数のクライアントデバイスによって、またはサーバシステムと1つもしくは複数のクライアントデバイスの組合せによって実施される場合がある。たとえば、特定の要求をその要求に対して同期的に実施するか、または非同期的に実施するかを決定するために、クライアントデバイスがユーザ要求を評価することができる。以下で説明するように、これはクライアントデバイスが一時的なネットワーク停止および他の接続妨害に対処できるようにすることができる。
【０００５】
確実性および信頼性を高めるために、非同期実行はいくつかの時間制約に従って実施することができる。非同期実行では、アクションは、要求の後に順次にまたは要求の直後に実施される必要がなく、したがってデジタルアシスタントとのユーザの対話が他のトピックに移った後に実施されることが可能である。しかしながら、サーバシステムが、アクションの実行を監視し、実行が適正な時間量内で実施されることを確実にするための処置を取ることができる。たとえば、アクションの実行にタイムアウト期間を設定することができる。タイムアウト期間内に実行が完了されない場合、サーバシステムは、アクションを再試行するか、遅延または失敗をユーザに通知することができる。これらの制約は、「ソフト」リアルタイム制約として実装することができ、アクションがある程度の許容できる遅延量で実施されてもよいが、同期実行との差はユーザには無視できるほど十分に早く実施されることを保証されるようにする。
【０００６】
一例として、ユーザは、カレンダーアポイントメントが翌日のある時間に設定されるよう要求する場合がある。デジタルアシスタントシステムは、たとえばアクションが即時の処理またはユーザへの出力を必要としないので、アポイントメントを設定するアクションが非同期的に実施されてもよいと決定してもよい。それでもやはり、デジタルアシスタントシステムは、ユーザの要求の時間から5分または15分などのアクションを実施し、ユーザの様々なデバイス間でデータを同期するための時間制約を設定してもよい。この制約は、デジタルアシスタントシステムに、たとえば負荷分散のためにまたはサードパーティサーバシステムの遅延を管理するために、遅延実行の柔軟性を与えるとともに要求を行ってから間もなく次に来るアポイントメントを見たいと思う場合があるユーザに対して潜在的な不便を制限もする。
【０００７】
本明細書で説明する主題の1つの発明的態様は、デジタルアシスタントへのユーザ要求を示すデータを受信するアクションと、ユーザ要求に対応するアクションを決定するアクションと、アクションがユーザ要求と非同期的に実施されるべきアクションとして分類されると決定するアクションと、アクションがユーザ要求と非同期的に実施されるべきアクションとして分類されるとの決定に基づいて、(i)出力のために確認メッセージを送信し、(ii)アクションがユーザ要求と非同期的に実施されるようにするアクションとを含む方法において具体化される。
【０００８】
この態様および他の態様の他の実施形態は、対応するシステム、装置、および方法のアクションを実施するように構成され、コンピュータストレージデバイス上に符号化されたコンピュータプログラムを含む。1つもしくは複数のコンピュータまたは他の処理デバイスのシステムは、動作時にシステムにアクションを実施させるシステムにインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せによってそのように構成することができる。1つまたは複数のコンピュータプログラムは、データ処理装置によって実行されるとき、本装置にアクションを実施させる命令を有することによってそのように構成することができる。
【０００９】
これらおよび他の実施形態は、各々オプションで次の特徴のうち1つまたは複数を含むことがある。
【００１０】
いくつかの実装形態では、デジタルアシスタントへのユーザ入力を示すデータを受信することは、音声コマンドを含むオーディオデータを受信することを含み、本方法は、音声コマンドの文字起こし(transcription)を決定するために自動発話認識を実施するステップを含み、ユーザ入力に対応するアクションを決定するステップは、文字起こしに基づくアクションを決定するステップを含む。
【００１１】
いくつかの実装形態では、ユーザ要求はユーザからの第1のユーザ要求であり、アクションがユーザ要求と非同期的に実施されるようにすることは第1のユーザ要求によって要求されるアクションを実施する前に、ユーザからデジタルアシスタントへの1つまたは複数の他のユーザ要求を受信することを含む。
【００１２】
いくつかの実装形態では、ユーザ要求は第1のユーザ要求であり、アクションがユーザ要求と非同期的に実施されるようにすることは、第1のユーザ要求によって要求されるアクションを実施する前に、ユーザからデジタルアシスタントへの1つまたは複数の他のユーザ要求に対応するアクションを実施することを含む。
【００１３】
いくつかの実装形態では、出力のために確認メッセージを送信することは、アクションが実施されることを示す確認メッセージを送信することを含む。
【００１４】
いくつかの実装形態では、合成された発話を含むオーディオデータを生成するために、テキスト読み上げシステム(text-to-speech system)が使用され、確認メッセージを送信することは、合成された発話を含む生成されたオーディオデータを送信することを含む。
【００１５】
いくつかの実装形態では、アクションがユーザ要求と非同期的に実施されるべきアクションとして分類されると決定することは、アクションが特定のアクションタイプに対応すると決定することと、異なるアクションタイプが要求と同期的に実行されるように割り当てられるか、または非同期的に実行されるように割り当てられるかを示す割当てデータにアクセスすることと、割当てデータに基づいて特定のアクションタイプが要求と非同期的に実行されるように割り当てられると決定することとを含む。
【００１６】
いくつかの実装形態では、アクションがユーザ要求と非同期的に実施されるべきアクションとして分類されると決定することは、アクションを実施するように構成されるアプリケーションまたはサーバを識別することと、識別されたアプリケーションまたはサーバへの要求が非同期処理に指定されたと決定することとを含む。
【００１７】
いくつかの実装形態では、アクションがユーザ要求と非同期的に実施されるようにすることは、要求されるアクションを示すレコードを記憶することと、記憶されたレコードに基づいて、アクションを実施するためにサーバシステムに要求を送信することとを含む。
【００１８】
いくつかの実装形態では、アクションがユーザ要求と非同期的に実施されるようにすることは、識別されたアクションに基づいてデータストレージシステムの領域を選択することと、選択された領域にアクションに関するデータを記憶するための書込み要求を送信することと、書込み要求に応答して、データストレージシステムの選択された領域に対応するソフトウェアを実行するためにリモートプロシージャコールを発行することと、実行されたソフトウェアを使用してアクションを実施するためのアプリケーションサーバへの要求を生成することとを含む。
【００１９】
いくつかの実装形態では、アクションがユーザ要求と非同期的に実施されるようにすることは、アクションを実施するためにサーバシステムに要求を送信することと、アクションの完了のためのタイムアウト期間を設定することと、タイムアウト期間の終了の前にアクションが完了されると決定することと、アクションの実行を示すデータを記憶することとを含む。
【００２０】
いくつかの実装形態では、さらなる特徴は、デジタルアシスタントへの第2のユーザ要求を示すデータを受信することと、第2のユーザ要求に対応する第2のアクションを決定することと、第2のアクションが第2のユーザ要求と非同期的に実施されるべきアクションとして分類されないと決定することと、第2のアクションが第2のユーザ要求と非同期的に実施されるべきアクションとして分類されないとの決定に基づいて、第2のアクションをユーザ要求に対して同期的に実施させることとを含む。
【００２１】
いくつかの実装形態では、さらなる特徴は、デジタルアシスタントへの第2のユーザ要求を示すデータを受信することと、第2のユーザ要求に対応する第2のアクションを決定することと、第2のアクションが第2のユーザ要求と非同期的に実施されるべきアクションとして分類されると決定することと、第2のアクションが第2のユーザ要求と非同期的に実施されるべきアクションとして分類されるとの決定に基づいて、第2のアクションの実施を開始することと、第2のアクションがタイムアウト期間内に実施されないと決定することと、出力のために、第2のアクションの実行が失敗したことを示すメッセージを提供することとを含む。
【００２２】
有利な実装形態は、以下の特徴のうちの1つまたは複数を含むことができる。たとえば、本文書で開示する技法は、遅延を低減し、確実性を上げ、デジタルアシスタントへの要求などのユーザ要求を処理する効率を上げることができる。いくつかのデジタルアシスタントシステムでは、ユーザ要求の処理は、第1の要求が完了されるまでユーザがさらなる要求を実施することを妨げる遅延を生じる可能性がある。いくつかのデジタルアシスタントは、音声入力に対処するためにクライアントベースのプロセスとサーバベースのプロセスの組合せを使用し、結果としてクライアントデバイスとサーバとの間で行き来するいくつかの通信のために遅延を生じる。発話認識のためにクライアントデバイスが発話データをサーバに送信し、次いで発話データの文字起こしを受信するために第1のネットワークラウンドトリップが必要とされる場合がある。クライアントデバイスが文字起こしされたテキストを処理すると、次いでクライアントデバイスのローカルアプリケーションがバックエンドのアプリケーションサーバと通信し、アプリケーションサーバから確認を受信するために第2のネットワークラウンドトリップが必要とされる場合がある。特に、サードパーティサーバの応答が遅い、またはサードパーティサーバが一時的に利用できないときに遅延は顕著である可能性がある。これらのネットワーク動作、加えて各段階で処理のために必要とされる時間は、音声要求と要求されたアクションの完了との間に望ましくない遅延を生じる可能性がある。デジタルアシスタントとの対話は、多くの場合現在の要求の処理が完了されるまで継続することはできないので、これらの遅延は、ユーザがその間に他のタスクを実行することを妨げる可能性がある。
【００２３】
以下で説明する非同期処理技法は、ユーザが受ける遅延を減らすまたはなくすことができ、現在の要求によって要求されたアクションが実施される前にユーザがデジタルアシスタントとの対話を継続できるようにすることができる。アクションは、対応する要求と非同期的に実行することができ、対応する要求は、アクションの実行のタイミングをアシスタントとの進行中の対話から切り離す。非同期実行または、ユーザに不便を感じさせることなく確実に実施されるようにアクションの時間期間を課すことができる。
【００２４】
サーバにおいて音声コマンドを非同期的に処理するための開示する技法はまた、デジタルアシスタントの確実性および柔軟性を高めることができる。いくつかのデジタルアシスタントは、ユーザが要求するアクションを処理するまたは開始するために、クライアントデバイスに依存する。いくつかのアクションは、アクションが実行されるためにクライアントデバイスに特定のアプリケーションがインストールされる必要がある。しかしながら、クライアントデバイスに適切な処理能力がない、適切なアプリケーションがインストールされていない、またはそうでなければアクションを実施するには不適切に構成されている場合、要求されたアクションは実施されない場合がある。サーバにおいてアクションを実行すると、実行はクライアントデバイスの能力に依存しないため確実性が増大する。これによりデジタルアシスタントは、アクションを処理するための適切なアプリケーションがない場合があるウェアラブルデバイスまたは組込みデバイスなどを含むより低いハードウェアおよびソフトウェア要件を有するプラットフォームで使用できるようになる。
【００２５】
たとえば、ユーザが、ユーザのウォッチによって受信される「買い物リストにパンを追加して」というコマンドを話す場合がある。1つまたは複数のサーバがアクションを実施し、また新しいリスト情報はリスト管理アプリケーションを有するユーザのデバイスに同期されるようにすることができるので、ウォッチは、アクションを実施するためにリスト管理アプリケーションを含む必要がない。結果として、アクションの非同期的サーバベースの実行を用いて、サーバが実現することができるどのような要求でも、要求を実現するためのクライアントデバイスの能力にかかわらずどのようなクライアントデバイスにおいてもデジタルアシスタントに行うことができる。
【００２６】
開示する技法はまた、ユーザ要求に応答する効率を上げることができる。サーバが、多くのユーザに代わって非同期的に実施されるべきアクションのキューを作成することができる。アクションは非同期的に実施されるので、実行における遅延は、ユーザ体験に影響を与えることなくユーザ要求のボリュームに従って変化することがある。遅延の処理は、ユーザからは見えず、時間とともにアクションの実行を拡散することによってサーバが要求のより大きいピークボリュームに対処できるようにする。いくつかの遅延は許容されるが、各アクションの遅延の量は抑制することができる。アクションは、「ソフト」またはほぼリアルタイムの実行を実現するために、たとえば5分もしくは15分の時間期間内に、または他の時間期間内に実施される必要があることがある。
【００２７】
本技法はまた、ユーザデバイスにおける処理の効率を上げる。サーバが音声コマンドの実行に対処するので、ユーザデバイスによって実施される必要がある処理はあまりない。これは、電力消費を減らしバッテリー寿命を伸ばすと同時に、処理能力が限られていたウォッチまたは他のウェアラブルデバイスなどのデバイスで使用されるようにデジタルアシスタントの能力を強化する。
【００２８】
加えて、処理の非同期的性質は、デバイスが対話をキャッシュすること、または低接続性に対処することを可能にすることができる。コマンドのキューがデバイスにおいて作成され、次いで後で実行するために送信されてもよい。サーバへの接続性がないデバイスが、それでもコマンドを受信し、それらを記憶し、次いで接続性が復元されると、それらを処理のためにサーバに送信することができる。同様に、第1のサーバが、利用できないサードパーディサーバを使用するアクションを実施しようと試みる場合、第1のサーバは、アクションが成功するまでアクションを遅らせるかもしくは再試行することができ、またはユーザは失敗を通知される必要がある。
【００２９】
本明細書で記述する主題の1つまたは複数の実施形態の詳細は、添付の図面および下記の記述内に記載される。記述、図面、および特許請求の範囲から主題の他の特徴、態様、および利点が明らかとなるであろう。
【図面の簡単な説明】
【００３０】
【図１】ユーザ要求の非同期処理のためのシステムの一例を示す図である。
【図２】ユーザ要求の非同期処理のためのシステムの一例を示す図である。
【図３】ユーザ要求の非同期処理のためのプロセスの一例を示す流れ図である。
【発明を実施するための形態】
【００３１】
様々な図面における同じ参照番号および名称は同じ要素を示す。
【００３２】
図1は、ユーザ要求の非同期処理のためのシステム100の一例を示す図である。システム100は、ユーザ102がデジタルアシスタント機能にアクセスするために使用することができるユーザデバイス104を含む。ユーザデバイス104は、ネットワーク106を介してサーバシステム110と通信する。ネットワーク106は、パブリックネットワークおよび/またはプライベートネットワークを含むことができ、かつインターネットを含むことができる。サーバシステム110はまた、要求されたアクションが実施されるようにするためにアプリケーションサーバ112と通信する。図1はまた、データの流れを表す段階(A)〜段階(I)として示されるデータの流れを示す。段階(A)〜段階(I)は、図示した順序で、または図示した順序とは異なる順序で実施されてもよい。たとえば、段階のいくつかは同時に実施されてもよい。
【００３３】
ユーザデバイス104は、コンピューティングデバイス、たとえば携帯電話、スマートフォン、携帯情報端末(PDA)、音楽プレーヤ、電子ブックリーダー、タブレットコンピュータ、ウェアラブルコンピューティングデバイス、ラップトップコンピュータ、デスクトップコンピュータ、または他の携帯もしくは固定コンピューティングデバイスであることがある。ユーザデバイス104は、ユーザ102がユーザデバイス104に入力を提供できるようにするマイクロフォン、キーボード、タッチスクリーン、または他のインターフェースを特徴として備えることができる。
【００３４】
サーバシステム110は、1つまたは複数のコンピュータを含むことができる。いくつかの実装形態では、サーバシステム110の1つまたは複数のコンピュータは、ユーザデバイス104と通信してもよく、1つまたは複数の他のコンピュータは、発話認識、テキスト読み上げ処理、ユーザ要求の分析などの他のタスクを実行してもよい。
【００３５】
アプリケーションサーバ112は、1つまたは複数のアプリケーションをサポートするサーバであることがある。アプリケーションサーバ112は、サーバシステム110とは無関係に作動されるサードパーティサーバであることがある。たとえば、サードパーティサーバは、表示のために、またはユーザデバイス104上のアプリケーションの構成のために情報を提供したバックエンドアプリケーションサーバであることがある。サーバシステム110は、複数のアプリケーションサーバ112と通信することができ、各々が異なるアプリケーションに対応してもよい。たとえば、サーバシステム110は、リマインダアプリケーションに関するアクションを実施するために第1のアプリケーションサーバと通信し、カレンダーアプリケーションに関するアクションを実施するために第2のアプリケーションサーバと通信するなどであってもよい。
【００３６】
ネットワーク106は、パブリックネットワークおよび/またはプライベートネットワークを含むことができ、インターネットを含むことができる。
【００３７】
本文書で開示する技法は、遅延を低減し、確実性を上げ、デジタルアシスタントへの要求などのユーザ要求を処理する効率を上げることができる。いくつかのデジタルアシスタントシステムでは、ユーザ要求の処理は、第1の要求が完了されるまでユーザがさらなる要求を実施することを妨げる遅延を生じることがある。いくつかのデジタルアシスタントは、音声入力に対処するためにクライアントベースのプロセスとサーバベースのプロセスの組合せを使用し、結果としてクライアントデバイスとサーバとの間で行き来するいくつかの通信のために遅延を生じる。発話認識のためにクライアントデバイスが発話データをサーバに送信し、次いで発話データの文字起こしを受信するために第1のネットワークラウンドトリップが必要とされる場合がある。クライアントデバイスが文字起こしされたテキストを処理すると、次いでクライアントデバイスのローカルアプリケーションがバックエンドのアプリケーションサーバと通信し、アプリケーションサーバから確認を受信するために第2のネットワークラウンドトリップが必要とされる場合がある。特に、サードパーティサーバの応答が遅い、またはサードパーティサーバが一時的に利用できないとき、遅延は顕著である可能性がある。これらのネットワーク動作、加えて各段階で処理のために必要とされる時間は、音声要求と要求されたアクションの完了との間に望ましくない遅延を生じる可能性がある。デジタルアシスタントとの対話は、多くの場合現在の要求の処理が完了されるまで継続することはできないので、これらの遅延は、ユーザがその間に他のタスクを実行することを妨げる可能性がある。
【００３８】
以下で説明する非同期処理技法は、ユーザが受ける遅延を減らすまたはなくすことができ、現在の要求によって要求されたアクションが実施される前に、ユーザがデジタルアシスタントとの対話を継続できるようにすることができる。アクションは、対応する要求と非同期的に実行することができ、対応する要求は、アクションの実行のタイミングをアシスタントとの進行中の対話から切り離す。非同期実行はまた、ユーザに不便を感じさせることなく確実に実施されるようにアクションの時間期間を課すことができる。
【００３９】
サーバにおいて音声コマンドを非同期的に処理するための開示する技法はまた、デジタルアシスタントの確実性および柔軟性を高めることができる。いくつかのデジタルアシスタントは、ユーザが要求するアクションを処理するまたは開始するためにクライアントデバイスに依存する。いくつかのアクションは、アクションが実行されるためにクライアントデバイスに特定のアプリケーションがインストールされる必要がある。しかしながら、クライアントデバイスに適切な処理能力がない、適切なアプリケーションがインストールされていない、またはそうでなければアクションを実施するには不適切に構成されている場合、要求されたアクションは実施されない場合がある。サーバにおいてアクションを実行すると、実行はクライアントデバイスの能力に依存しないため確実性が増大する。これによりデジタルアシスタントは、アクションを処理するための適切なアプリケーションがない場合があるウェアラブルデバイスまたは組込みデバイスなどを含むより低いハードウェアおよびソフトウェア要件を有するプラットフォームで使用できるようになる。
【００４０】
たとえば、ユーザが、ユーザのウォッチによって受信される、「買い物リストにパンを追加して」というコマンドを話す場合がある。1つまたは複数のサーバがアクションを実施し、また新しいリスト情報は、リスト管理アプリケーションを有するユーザのデバイスに同期されるようにすることができるので、ウォッチは、アクションを実施するためにリスト管理アプリケーションを含む必要がない。結果として、アクションの非同期的サーバベースの実行を用いて、サーバが実現することができるどのような要求であっても、要求を実現するためのクライアントデバイスの能力にかかわらず、どのようなクライアントデバイスにおいてもデジタルアシスタントに実施することができる。
【００４１】
開示する技法はまた、ユーザ要求に応答する効率を上げることができる。サーバが、多くのユーザに代わって非同期的に実施されるべきアクションのキューを作成することができる。アクションは非同期的に実施されるので、実行における遅延は、ユーザ体験に影響を与えることなくユーザ要求のボリュームに従って変化することがある。遅延の処理は、ユーザからは見えず、時間とともにアクションの実行を拡散することによってサーバが要求のより大きいピークボリュームに対処できるようにする。いくつかの遅延は許容されるが、各アクションの遅延の量は抑制することができる。アクションは、「ソフト」またはほぼリアルタイムの実行を実現するために、たとえば5分もしくは15分の時間期間内に、または他の時間期間内に実施される必要があることがある。
【００４２】
本技法はまた、ユーザデバイスにおける処理の効率を上げる。サーバが音声コマンドの実行に対処するので、ユーザデバイスによって実施される必要がある処理はあまりない。これは、電力消費を減らし、バッテリー寿命を伸ばすと同時に、処理能力が限られていたウォッチまたは他のウェアラブルデバイスなどのデバイスで使用されるようにデジタルアシスタントの能力を強化する。
【００４３】
加えて、処理の非同期的性質は、デバイスが対話をキャッシュすること、または低接続性に対処することを可能にすることができる。コマンドのキューがデバイスにおいて作成され、次いで後で実行するために送信されてもよい。サーバへの接続性がないデバイスが、それでもコマンドを受信し、それらを記憶し、次いで接続性が復元されると、それらを処理のためにサーバに送信することができる。同様に、第1のサーバが、利用できないサードパーディサーバを使用するアクションを実施しようと試みる場合、第1のサーバは、アクションが成功するまでアクションを遅らせるかもしくは再試行することができ、またはユーザは失敗を通知される必要がある。
【００４４】
図1の例では、ユーザ102は、ユーザデバイス104を使用してデジタルアシスタントに要求を実施する。要求は、サーバシステム110に供給され、サーバシステム110は、ユーザ102によって要求されたアクションを要求と非同期的に実施することができると決定する。結果として、要求されたアクションが実行される前に、サーバシステム110は、要求されたアクションが実施されることを示す確認をユーザデバイス104に送信する。これによりユーザは、サーバシステム110がすでに要求されたアクションの実行に対処する間に並行してデジタルアシスタントにさらなる要求を実施することができる。アクションは非同期的に実施されるが、アクションが適切な時間量内に、たとえば最大時間期間内に実施されるようにサーバシステム110は実行のタイミングに制約を課す。
【００４５】
さらに詳細には、段階(A)において、ユーザデバイス104は、ユーザ102からユーザ要求を受信する。ユーザ102は、ユーザデバイス104を介してアクセスされる、またはユーザデバイス104によって提供されるデジタルアシスタント機能に要求を行ってもよい。ユーザ102は、ホットワードを話すこと、画面上のボタンを押すこと、“home"ボタンを押し続けること、ジェスチャーをすることなどの任意の複数の方法でデジタルアシスタントを呼び出してもよい。ユーザは、文字入力または音声入力などの任意の適切なタイプのユーザ入力により要求を行ってもよい。図示の例では、ユーザ102は、「リマインダを明日の午後4時に設定して」という音声コマンド108を話す。ユーザデバイス102は、口頭での入力を検出し、音声コマンド108を表すオーディオデータを記録する。
【００４６】
段階(B)において、ユーザデバイス104は、ユーザ要求115を示すデータをサーバシステム110に送信する。たとえば、音声入力として要求が実施されるとき、ユーザデバイス104は、ユーザの発声のオーディオデータを提供することができる。オーディオデータは、ユーザデバイス102によって記録されたオーディオ波形、オーディオ情報の圧縮形態、またはメル周波数係数などの音声特徴を示すデータなどの記録されたオーディオから導出もしくは抽出された情報であることがある。
【００４７】
段階(C)において、サーバシステム110は、ユーザ102はどのようなアクションが実施されるように要求したかを決定するためにユーザ要求115を解釈する。サーバシステム110はまた、アクションがどのように実施されるべきかについての他の詳細を決定することができる。サーバシステム110は、要求を分析する要求インタープリタモジュール120を含む。いくつかの実装形態では、要求インタープリタモジュール120は、ユーザ要求を表すテキストを取得する。音声要求の場合、要求インタープリタモジュール120は、サーバシステム110または別のシステムによって提供される場合がある自動発話認識器から受信したオーディオの文字起こしを取得してもよい。
【００４８】
要求インタープリタモジュール120は、次いで要求のパラメータを決定するために要求から情報を抽出する。たとえば、要求されたアクションのタイプまたはカテゴリを識別することができる。要求インタープリタモジュール120は、ユーザの要求をパースし、異なるアクションを示す用語、フレーズ、またはパターンを識別することができる。たとえば、用語とアクションタイプとの間のマッピングにアクセスすることができ、モジュール120は、マッピングを使用して、ユーザの要求の用語に対する適切なアクションタイプを調べることができる。別の例として、要求のテキストは、いくつかのタイプのアクションに対する要求を表すことが知られている文法を使用することができる。ユーザ要求が文法の1つにマッチするとき、文法に対応するアクションタイプを選択することができる。別の例として、分類器または機械学習システムが、ユーザ102がどのようなアクションを要求したかを決定するために要求を分析することができる。
【００４９】
図1の例では、「リマインダを明日の午後4時に設定して」という音声コマンド108の文字起こしされたテキストが分析される。要求インタープリタモジュール120は、要求は「リマインダ」のアクションタイプに対するものであると決定する。このアクションタイプは、電話、電子メール、リマインダ、検索、カレンダー、テキストメッセージなどを含む複数のあらかじめ決定されたアクションタイプのセットから選択され、各アクションタイプは1つまたは複数のキーワードまたは文法に関連付けられている。他のタイプのアクションもまた使用することができる。たとえば、システム110は、電灯もしくは電気器具をオンおよびオフにする、またはドアをロックする、ロック解除する、開ける、もしくは閉めるなどのホームオートメーションに関する要求を受信し、処理するように構成することができる。デジタルアシスタントとのユーザの対話が、特定のタイプのアクションを要求すると決定すると、後に要求を処理する方法を決定するのに役立てることができる。
【００５０】
いくつかの実装形態では、要求インタープリタモジュール120は、ユーザ102によって要求されたアクションの他のパラメータを決定する。たとえば、ユーザの要求を表すテキストをパースすることによってアクションがどのように実施されるべきかの詳細を示すデータが決定される。図1の例では、要求インタープリタモジュール120は、たとえば「設定」という用語に基づいて、「リマインダ」アクションの一般的クラス内でアクションが新しいリマインダを設定することを含むと決定する。これは、要求された特定のアクションを定義し、同じく「リマインダ」アクションタイプである他のアクションと区別するのに役立つ。たとえば、リマインダアプリケーションが、新しいリマインダを設定すること、リマインダの時間を変更すること、リマインダの記述を変更すること、またはリマインダをキャンセルすることなどのアクションのあるセットを可能にする場合がある。要求インタープリタモジュール120は、リマインダアプリケーションによってどのような情報が使用されるか、たとえばアプリケーションプログラミングインターフェース(API)により提供されるフィールドまたは入力を決定し、ユーザ要求の分析に基づいて対応する値を決定してもよい。別の例として、要求インタープリタモジュール120は、要求されたリマインダが「明日」という日付および「午後4時」という時間に対するものであると決定することができる。各アクションタイプは、そのアクションタイプのアクションの特性を指定するために使用されるデータタイプまたはフィールドの関連するセットを有することができる。要求インタープリタモジュール120は、どのパラメータがアクションタイプに関係しているかを決定するために、またユーザ要求のテキストによってどのパラメータが示されるかを決定するために記憶されたデータにアクセスすることができる。
【００５１】
いくつかの実装形態では、要求されたアクションを実施することになる特定のアプリケーション、アプリケーションタイプ、またはサービスが識別される。たとえば、特定のアクションタイプが、1つまたは複数のアプリケーションまたはサービスに関連付けられてもよい。いくつかの実装形態では、あるアクションタイプが、単一のアプリケーションまたはサービスに対応する。ユーザが、たとえばレストランでの予約を要求するとき、アクションを実施することができる対応するアプリケーションまたはサービスが識別されてもよい。同様に、カレンダーアポイントメントを設定する要求の場合、要求は、「カレンダー」アクションタイプに対応すると識別することができる。要求の前に、「カレンダー」アクションタイプは、カレンダーアプリケーションまたはサービスに関連付けることができ、要求が受信されるとき、カレンダーアクションを実行するために必要とされる場合がある適切なデータのタイプ、データフォーマットなどが利用可能であるようにする。
【００５２】
段階(D)において、サーバシステム110は、ユーザが要求したアクションがユーザの要求に対して同期的に実施されるべきか、または非同期的に実施されるべきかを決定する。サーバシステム110は、要求されたアクションの特性に基づいて、実行の適切なタイプを選択することができる。たとえば、サーバシステム110は、アクションがアクションタイプまたはアクションの他の特性に基づいてユーザ要求と非同期的に実施されるべきアクションとして分類されるかどうかを判定することができる。
【００５３】
ユーザは一般的に、電話をかけること、または検索結果を取得することのようないくつかのアクションが遅延なく実施されることを期待する。カレンダーアポイントメントを設定することのような他のアクションは直ちに実施される必要がない。一般的に、カレンダーアポイントメントを設定する際の控えめな遅延は、スケジュールされた時間の前に、またユーザがその日のアポイントメントを見るためにカレンダーを開く前にアクションが実施される限りユーザに不便を感じさせない。同期または非同期実行にアクションを割り当てるとき、アクションを実行するために使用されるサードパーティシステムの要件などの他の要件もまた考慮されることがある。たとえば、同期実行は、航空券、映画座席、またはレストラン予約が他者による購入で発売される前の最大2分などの短いタイムアウトを有するサードパーティシステムとの通信を必要とするアクションに必要とされることがある。これらおよび他のファクタは、ユーザ要求が受信される前に、どのアクションまたはアクションタイプが非同期実行を使用すべきかを事前指定するために使用することができる。加えてまたは代替として、ファクタは、ユーザ要求を受信することに応答して考慮することができる。
【００５４】
一例として、サーバシステム110は、ユーザが要求したアクションを実行する異なるモードから選択するために、実行セレクタモジュール122を使用することができる。実行セレクタモジュール122は、どのアクションタイプが同期処理に指定されるか、およびどのアクションタイプが非同期処理に指定されるかを示す割当てデータ130にアクセスすることができる。たとえば、図1の割当てデータ130は、各アクションタイプを同期実行(“S")または非同期実行(“A")にマッピングする。この情報はまた、ユーザの要求より前にあらかじめ決定しかつ記憶することができるが、必要に応じて更新しかつ変更することもできる。図示の例では、割当てデータ130は、「リマインダ」アクションタイプのアクションが非同期実行に指定されていることを示し、したがって実行セレクタモジュール122は、ユーザ要求の非同期実行が適切であると決定する。
【００５５】
実行セレクタモジュール122は、非同期実行が適切であるかどうかを確かめるためにさらなる処理を行ってもよい。たとえば、要求されるアクションが、一般的に非同期実行に適切であるタイプであったとしても、要求の具体的な詳細は、それをあまり適切でないものにする場合がある。たとえば、来週にカレンダーアポイントメントを設定することは、緊急を要しないかもしれないが、要求後の非常に早い時間にアポイントメントを設定することは、非同期処理ではアクションが十分に早く実施されないかもしれないリスクが増大する場合がある。ユーザ要求のタイミング要件を考慮に入れることができ、適時の実行を確実にする必要があるときは、同期処理が選択される。
【００５６】
すべてのアクションタイプにまたは個々に特定のアクションタイプに所定の時間ウィンドウを設定することができ、時間ウィンドウ内に実施される必要があるアクションは、本来なら非同期的に実施されるのに適している場合でも、同期的に実施されるようにする。この時間ウィンドウは、非同期アクションを実行するのに必要とされる時間量に従って設定されてもよく、たとえば非同期的に実施される前のアクションの実行までの平均時間または最悪の場合の時間を表す。ユーザ要求から1時間、またはユーザ要求から4時間などの特定の時間が指定されてもよい。別の例では、要求されたその日に実施される必要があるアクションが同期実行に選択されてもよい。非同期処理が適切である時間ウィンドウは、すべてのアクションタイプに同じであってもよく、または個々のアクションタイプによって異なってもよく、または特定のアクションに設定されてもよい。
【００５７】
図1の例では、実行セレクタモジュール122が、「リマインダ」アクションタイプは非同期処理に指定されていると決定すると、モジュール120は、リマインダのための時間、たとえば明日の午後4時を時間範囲制限の時間期間、たとえば当日と比較する。アクションは、要求されたその日に実施される必要がないので、実行セレクタモジュール122は、アクションの非同期実行が使用されるべきであることを確認する。リマインダアクションが、限られた時間期間内、たとえば同じ日にリマインダを要求した場合、実行セレクタモジュール122は、代わりに同期処理を選択し、非同期処理を使用して起こり得る遅延によりユーザが不便を感じるリスクを最小限にすることができる。
【００５８】
非同期または同期実行を決定する他の方法もまた使用することができる。一例として、要求されたアクションに非同期実行が適切であるかどうかを判定するために分類器または一連のルールを使用することができる。別の例として、実行セレクタモジュール120は、たとえば要求されたアクションの時間感度(time-sensitivity)、実行を遅延させることによるユーザにとっての潜在的不便、非同期実行により発生する場合がある推定遅延量、非同期実行がユーザに不便を感じさせる見込みなどを反映する1つまたは複数のスコアを生成してもよい。スコアは次いで、要求されたアクションには非同期実行が最も適切であるかまたは同期実行が最も適切であるかを決定するために1つまたは複数のしきい値と比較することができる。
【００５９】
段階(E)において、サーバシステム110は、要求されたアクションが実施されることを示す確認メッセージを生成する。アクションが実施されたことを確認するのではなく、確認メッセージは、要求の受取りを通知する、および/または後にアクションを実施することを約束する。結果として、確認は、アクションの実行が完了されるまで待つことなく提供することができる。確認メッセージの内容は、要求されたアクションに基づいて生成することができる。たとえば、リマインダを設定するアクションでは、「わかりました、リマインダを設定します」などのメッセージテキスト132を生成することができる。メッセージは、テキストデータ、オーディオデータ、またはその両方などの任意の適切な形態で提供することができる。サーバシステム110は、メッセージテキストの合成された発声を含むオーディオデータ134を生成するためにテキスト読み上げモジュール124を使用することができる。
【００６０】
いくつかの事例では、アクションが実施されることを示す最初の確認は、ユーザ102への一次確認として機能し、アクションが最終的に約束通り実行された後、自動的にさらなる確認は実施されない。他の事例では、アクションが実行されたというさらなる確認が、アクションの実行に応答して、またはアクションのステータスに関するユーザ要求に応答して、後でユーザ102に提供されることがある。
【００６１】
段階(F)において、サーバシステム110は、ユーザデバイス104に確認メッセージ136を送信する。次いでユーザデバイス104は、ユーザ102に確認を出力する。図示の例では、確認メッセージ136はオーディオデータ134を含み、ユーザデバイス104は、「わかりました、リマインダを設定します」という合成された発話を有するオーディオを出力する。確認メッセージ136は、メッセージテキスト130を含んでもよく、ユーザデバイス104は、追加または代替としてユーザ102に確認を実施するためにメッセージテキスト130を表示してもよい。
【００６２】
サーバシステム110は、要求されたアクションの実行に非同期的に対処するので、アクションの実行は、デジタルアシスタントへのさらなるユーザ要求の登録または処理を妨げない。ユーザ102は、要求したアクションが実施される前にまたはその間にデジタルアシスタントとの対話を続けてもよい。さらに、アクションはサーバシステム110によって実行されるので、実行はユーザデバイス104上で処理リソースまたは電力を消費せず、実行はユーザデバイス104の特定のハードウェアまたはソフトウェア要件を求めない。これは、限られた処理能力および/またはバッテリー電力制約を有するユーザデバイスの動作を強化する。またこれは、実行がユーザデバイスの構成および能力とは無関係であるので、システムの柔軟性を上げることができる。非同期的に実施されるアクションを要求するためには、ユーザデバイスが要求されたアクションを実行することができるローカルアプリケーションをインストールしているかどうかにかかわらず任意の適切なタイプのデバイスを使用することができる。
【００６３】
段階(G)において、サーバシステム110は、ユーザ要求に対応するアクションデータ140をデータベース、テーブル、ファイルシステム、または他の適切なデータストレージシステムであってもよいデータストレージシステム142に書き込むことによって、要求されたアクションを実行するプロセスを開始する。アクションデータ140は、実施される特定のアクションを指定するレコード、たとえば要求インタープリタモジュール120によって決定された情報を含むことができる。アクションデータ140はまた、ユーザ102の識別情報またはユーザアカウントを示すユーザ識別子を含むことができる。一般的に、アクションデータ140は、アクションを要求した特定のユーザ102にとって、要求されたアクションを実行するのに必要とされる適切な情報を有するデータの集合を含むことができる。多くの異なるユーザの要求されたアクションの情報は、アクションの非同期処理の完了までデータストレージシステム142に一時的に記憶されてもよい。
【００６４】
いくつかの実装形態では、データストレージシステム142は、特定のアクションタイプに対応するようにアクションにアクションデータ140を指定する。アクションデータ140は、アクションデータ140を対応するアクションタイプに関連付けるようにして記憶することができる。たとえば、アクションデータ140は、アクションタイプを示すコードまたはラベルを割り当てられてもよい。別の例として、アクションデータ140は、アクションタイプに対応するデータストレージシステム142の領域に記憶されてもよい。データストレージシステム142は、図1では列として示す各々が異なるアクションタイプに対応する複数のデータ記憶領域を含んでもよい。アクションのアクションデータ140は、対応するアクションタイプのためのデータ記憶領域に記憶される。たとえば、「リマインダ」アクションのアクションデータ140は、「リマインダ」アクションに指定された領域に記憶される。
【００６５】
アクションデータ140が記憶されるようにする書込み要求は、アクションの実行を容易にする他のプロセスをトリガすることができる。上記で説明したように、各アクションタイプは、そのタイプのアクションを実行するために使用されるアプリケーションまたはサービスに関連付けることができる。異なるアプリケーションおよびサービスは、異なるタイプの入力データまたは異なるデータフォーマットを使用してもよい。各アクションタイプは、そのタイプのアクションを実行するためのアプリケーションまたはサービスとの通信を容易にするために使用される特定のソフトウェアモジュール146a〜146dまたは「プラグイン」を有する。異なるアクションタイプに対して別個のモジュール146a〜146dを使用すると、サーバシステム110が、異なるアプリケーションまたはサービスを用いて広範囲のアクションタイプを実施することが可能になる。またモジュール146a〜146dを分けると、問題を識別して訂正すること、および個々のアクションタイプに対する処理を更新することがより容易になる。モジュール146a〜146dは、いくつかの実装形態では、約100コード行数程度の小さいものとすることができる。各モジュール146a〜146dは、アクションに関するデータをフォーマットして適切な要求にし、アクションを実行するために適切なサーバにフォーマットされたデータとともにリモートプロシージャコールを送信するように構成することができる。結果として、サーバシステム110は、アクションタイプに対応するモジュール146a〜146dを実行することによってユーザ102および他のユーザによって要求された各アクションの実行を指示することができる。
【００６６】
異なるユーザによって要求された多くのアクションの非同期実行をスケジュールするために、サーバシステム110は、バッファまたはキューを使用して実行に優先順位を付けることができる。図1では、サーバシステム110は、先入れ先出しキュー148を使用し、キュー148中の各項目が、非同期的に実施されるように選択されまだ実施されていないアクションを表す。要求されたアクションに対するアクションデータ140がデータストレージシステム142に書き込まれると、アクションに対するトークン150がキュー148に追加される。このトークン150は、対応するアクションデータ140への参照を含むことができる。サーバシステム110は、キュー148中の項目をそれらが追加された順序で処理する。たとえば、トークン150を処理することは、アクションデータ140のアクションタイプに対応するモジュール146cを実行することを含むことができる。結果として、遅延の後、キュー148中の他の項目が処理される間、モジュール146cは、ユーザ102によって要求されたアクションを実行するためのリモートプロシージャコール、APIコール、または他の要求を生成するようにアクションデータ140を使用するために呼び出される。一例では、モジュール146cは、リマインダを設定または調整するためにアプリケーションサーバ112への要求を生成するように構成される。
【００６７】
段階(H)において、サーバシステム110は、ユーザが要求したアクションの実行のための時間制約を設定する。アプリケーションサーバ112によって引き起こされる遅延量は、特にサードパーティのアプリケーションサーバでは、非常に変わりやすいことがある。要求されたアクションが要求された時間量内で実施されることを確実にするために、サーバシステム110は、要求に対する時間期間152、たとえばタイムアウト期間また許容される最大時間量を設定する。一例として、サーバシステム110は、アクションが完了されるのに最高2分もしくは5分、またはその他の限られた時間量を許容してもよい。時間期間152の長さは、すべてのアクションタイプに対して包括的に設定することができ、または特定のアクションタイプもしくは特定のアプリケーションサーバに対して個別に設定することができる。
【００６８】
段階(I)において、サーバシステム110は、モジュール146cによって生成された要求160をアプリケーションサーバ112に送信し、アプリケーションサーバ112は、ユーザが要求したアクションを実行する。いくつかの事例では、アプリケーションサーバ112は、サードパーティアプリケーションのバックエンドサーバである。アプリケーションサーバ112が、たとえば図1のユーザ102のためにリマインダを設定することによって、ユーザが要求したアクションを実行すると、リマインダアクションのデータが、アプリケーションサーバ112によってたとえばクラウドストレージに記憶される。アプリケーションサーバ112は、ユーザデバイス104およびユーザ102のユーザアカウントに関連する他のユーザデバイスとデータを同期することができる。結果として、リストを作成する、カレンダーアポイントメントを設定する、リマインダまたはアラームを設定するなどのアクション、および他のアクションが、1つまたは複数のサーバによって実行可能であり、結果は、ユーザ102の任意の適切なデバイスに同期され、したがってデバイスは、デバイスに必要な任意のステータスまたは構成情報をローカルに記憶する。いくつかの実装形態では、サーバシステム110は、アプリケーションサーバ112による同期に加えてまたはその代わりに、アクションの完了の確認が受信されるときにユーザデバイスへのデータの同期を行ってもよい。
【００６９】
アプリケーション112はまた、要求されたアクションの実行がいつ完了されたかを示すためにサーバシステム110に確認162を送信する。サーバシステム110は、実行の確認がアクションに設定された時間期間152内に受信されることを確実にするために、要求160のステータスを監視する。時間期間152内に確認が受信されると、サーバシステム110は、確認をログに記録し、アクションのトラッキングを終了することができる。設定された時間期間152内に確認が受信されない場合、サーバ110は、要求160を再試行することができる。加えてまたは代替として、サーバシステム110は、要求が遅れていることをユーザ102に示すためにユーザデバイス104にメッセージを送信することができる。たとえば、最初の要求115からまたは要求160がアプリケーションサーバ112に送信されたときから一定量の時間の後に、サーバシステム110は、要求されたアクションが失敗したこと、およびアクションは前に示したように実施されないことをユーザに通知することができる。
【００７０】
システム100は、各ユーザ要求のステータスを追跡することができ、必要であればユーザ102にステータス情報を提供するように構成することができる。たとえば、ユーザ102は、デジタルアシスタントに、「リマインダは設定されていますか?」と尋ねる場合がある。サーバシステム110は、ユーザによって要求されたアクションを決定し、言及されているアクション(たとえば、リマインダを設定するための直近の要求)を識別し、要求のステータスを決定するために、ログまたは記録を調べることができる。次いでサーバシステム110は、アクションが実行されたか否かを示すメッセージをたとえばテキスト、合成された音声、またはその両方で提供することができる。
【００７１】
いくつかの実装形態では、ユーザ要求は、サーバシステム110のデータストレージ142およびキュー148を使用して要求がバッファリングされるのに加えてまたはその代わりにユーザデバイス104によってバッファリングされる。たとえば、ユーザ要求のバッファリングは、ユーザデバイス102上に実装される対話エージェントに拡大することができる。クライアントデバイス102は、サーバを使用してアクションを実行する必要があるが、ユーザの対話時にインターネット接続がないときにオンデバイスバッファを使用することができる。たとえば、ユーザ102がコマンドを話した後に、ユーザデバイス104は、入力の受取りを確認応答し、処理が後で実施されることになると示してもよい。ユーザデバイス104は、サーバシステム110との適切な接続が利用可能になるまでさらなるコマンドの受取りおよびデータの記憶を続けてもよい。接続が確率されると、ユーザデバイス104は、要求の解釈および処理のためにサーバシステム110と通信してもよく、またはアプリケーションサーバと直接通信してもよい。
【００７２】
いくつかの実装形態では、ユーザデバイス104は、サーバシステム110によって実施されるように記述された機能の一部または全部を実施する。たとえば、クライアントデバイス104は、発話認識モジュール、テキスト読み上げモジュール、ならびにユーザ要求を解釈し、非同期実行が適切であるかどうかを判定するためのソフトウェアを含んでもよい。別の例として、クライアントデバイス104が、文字起こしを取得するための発話認識にはサーバシステム110を使用するが、ユーザ要求を解釈し、アクションの実行を管理してもよい。結果として、いくつかの実装形態では、ユーザデバイス104は、ユーザ要求を解釈し、サーバシステムから独立してユーザに確認メッセージを提供することができる。ユーザデバイス104は、次いでサーバへの要求を監視すること、およびタイムアウト期間内の完了を確かめることを含むバッファリングされた非同期要求の実行を管理してもよく、デジタルアシスタントは、並行してユーザから他の要求を受信する。クライアントデバイス104は、1つまたは複数のアプリケーションサーバを含む非同期的に実行されるアクションを管理するためにローカルデータストレージおよびキューまたは他のバッファを含んでもよい。いくつかの実装形態では、クライアントデバイス104は、ネットワーク接続性の停止および遅延またはアプリケーションサーバ112の利用不能を管理するために要求のバッファリングを使用する。たとえば、要求されたアクションが、同期実行に最も適しているように設計されている場合があっても、アクションを実施するために必要とされるアプリケーションサーバとの接続性が利用可能ではないと決定すると、クライアントデバイス104は、データを記憶してアクションが後で実施されるようにしてもよい。たとえば、タスクは、スケジュールされ、完了されるタスクのバッファに置かれ、接続性が回復されるのに応答して実施されるように設定され、および/またはある時間期間で再試行されるように設定されてもよい。クライアントデバイス104は、その間に他のユーザ要求を受信しかつ満たすためにマルチスレッドまたはマルチプロセスの技法を使用することができる。
【００７３】
図2は、ユーザ要求の非同期的処理のためのシステム100の別の例を示す図である。図2の例では、ユーザ102は、非同期的に実施されるべきアクションとして分類されないアクションを要求する。結果として、サーバシステム110はアクションを非同期的に実施することができ、サーバシステム110は、代わりに同期的にアクションを処理することを選択する。図2はまた、データの流れを表す段階(A)〜段階(G)として示されるデータの流れを示す。段階(A)〜段階(G)は、図示した順序で、または図示した順序とは異なる順序で実施されてもよい。たとえば、段階のいくつかは、同時に実施されてもよい。
【００７４】
段階(A)において、ユーザ102は、ユーザの連絡先の1つを指す、「Joeに電話をかけて」という音声コマンド208を話す。段階(B)において、ユーザデバイス104は、音声コマンド208のためのオーディオデータを含む要求215をサーバシステム110に送信する。段階(C)において、サーバシステム110は、受信したオーディオデータに発話認識を実施し、次いで要求を解釈する。サーバシステム110は、要求215が「通話」アクションタイプに対応することおよび受信者は“Joe"であることを決定する。
【００７５】
段階(D)において、サーバシステム110は、割当てデータ130にアクセスし、「通話」アクションタイプが同期処理に指定されると決定する。ユーザは一般に、電話を開始する際に遅延を歓迎せず、したがって同期処理が最も適切である。
【００７６】
段階(E)において、サーバシステム110は、「Joeに電話をかけています」というテキスト232を有する確認メッセージを決定する。テキスト読み上げモジュール124は、確認メッセージの合成された発声を含むオーディオデータ234を生成するために使用される。段階(F)において、サーバシステム110は、ユーザデバイス104で出力するためにテキスト232および/またはオーディオデータ234を含むことができる確認メッセージ236を送信する。
【００７７】
サーバシステム110はまた、要求215の分析によって決定されたアクション情報240を含むアクション命令238を生成しかつ送信する。アクション情報240は、要求されたアクションのアクションタイプおよび他のパラメータを示してもよい。たとえば、アクション命令238は、要求215が電話をかけることを開始する要求であること、および受信者は"Joe"であることを示してもよい。いくつかの実装形態では、アクション命令238は、ユーザデバイス104がアクションを実行するために呼び出すべきである特定のアプリケーションまたはサービスを示してもよい。たとえば、アクション命令は、ユーザデバイス104がどのようにアクションを実施するべきかを示すためにアプリケーション識別子またはサーバアドレスを含んでもよい。
【００７８】
ユーザデバイス104は、次いで要求されたアクションが実施されるようにする。たとえば、アクション命令238を受信したことに応答して、ユーザデバイス104は、電話アプリケーション、たとえば「通話」アクションタイプに関連付けられるように決定されたアプリケーション、またはアクション命令238によって指定されたアプリケーションを開き、連絡先"Joe"の電話番号を示す連絡先レコードにアクセスし、電話を開始することができる。ユーザデバイス104はまた、たとえば確認メッセージ236からのオーディオを表示および/または再生して、サーバシステム110からの確認を出力する。加えてまたは代替として、ユーザデバイス104は、通話を開始する電話アプリケーションのための確認を出力することができる。図1に示すプロセスとは対照的に、図2のプロセスは、アクションを実施するためにユーザデバイス104に依存し、したがってユーザデバイス104がアクションを実施するための正しいアプリケーションがインストールされ、適切に構成されることを求める。したがって、同期実行の場合、ユーザデバイス104は、バックエンドサーバへの要求を生成することおよびデータを同期することによってアクションの実行を管理する。
【００７９】
要求されたアクションを同期的に実施するとき、ユーザデバイス104は、データが最初にサーバシステム110またはアプリケーションサーバ112で更新されかつ記憶されるのではなく、最初にユーザデバイス104にローカルにデータを保存することができる。ユーザデバイス104は、次いでユーザ102の他のデバイスとの同期を開始する。たとえば、ユーザ102が新しいリマインダまたはリストへの変更を要求する場合、ユーザデバイス104上のアプリケーションは、ユーザデバイスに記憶されたリマインダまたはリストデータを更新または生成してもよい。したがって、ユーザデバイス104のローカルリストは、更新された後に、サーバに変更を命令することができる。いくつかの事例では、ユーザデバイス104は、要求されたアクションを実行するために適切なバックエンドアプリケーションサーバ112への要求を生成しかつ送信することができる。
【００８０】
図2の例では、サーバシステム110ではなく、ユーザデバイス104が、アプリケーションサーバ112との任意の通信を含むアクションを実施することを担い、ユーザデバイス104がエラーに遭遇する、または適切なアプリケーションがインストールされていない場合、アクションの実行は失敗することがある。さらに、デジタルアシスタント機能はしばしば、現在の要求が実行されている間、新しい要求を受け入れることを一般的に妨げられる。結果として、アクションを実施するまたはアプリケーションサーバ112と通信する際の遅延により新しい要求を入力するユーザ102の能力を遅らせる可能性がある。しかしながらアクションは要求と同期的に試みられるので、ユーザ102には、後の要求に移る前に遭遇したどのようなエラーも通知することができる。
【００８１】
ユーザデバイス104が要求されたアクションを実行すると、ユーザデバイス104はサーバシステム110とのデータの同期を開始する。たとえば、ユーザデバイス104のアプリケーションは、更新されたリマインダまたはノートを示すデータを送信し、同期が実施されるよう命令することができる。サーバシステム110は次いで、新しいデータを他のユーザデバイスに送信して、同期プロセスを完了する。しかしながら、プロセスはユーザデバイス104とサーバシステム110との間の通信を必要とするので、ユーザデバイス104が不適切に構成されている、またはネットワークアクセスを失う場合、同期は失敗することがある。確実にアクションを実施しない、またはデータを同期しないユーザデバイス104上のローカルアプリケーションは、最終的にユーザが要求した変更を実施することができない場合がある。対照的に、図1の例では、サーバシステム110は、要求されたアクションの実行を管理する。結果として、サーバシステム110および/またはアプリケーションサーバ112は、更新を示すデータを取得し、ユーザデバイス104の構成または能力とは無関係に、更新されたデータを他のユーザデバイスと同期することができる。
【００８２】
図2の例では、ユーザデバイス104は、要求されたアクションを実行する責任を負う。多くの場合、ローカルアプリケーションが呼び出されると、アクションが完了されることを監視することはほとんどないか、またはまったくない可能性がある。いくつかのアプリケーションは、いつアクションが実施され、同期されるかをデジタルアシスタントに対して確認するように構成されない場合がある。結果として、ローカルアプリケーションがアクションを適切に実施しない場合、またはアプリケーションサーバ112が遅延もしくはエラーを引き起こす場合、アクションは実施されない可能性がある。図1の例では、サーバシステム110は、アプリケーションサーバ112への要求を監視するので、サーバシステム110は、たとえば確認が受信されることを確かめること、必要なときにアプリケーションサーバ112によるアクションの再試行を要求すること、およびアクションが失敗する場合、ユーザ102に通知を送信することによって、アプリケーションサーバ112が要求されたアクションを実施することを確実にするのを助けることができる。したがって、フォールトトレラントであるためにローカルアプリケーションおよび関連物112にのみ依存するのではなく、図1の非同期処理は、ユーザが要求したアクションの実行の確実性を上げるさらなるレベルの監視を追加する。
【００８３】
いくつかの実装形態では、図1および図2のいずれかまたは両方の例の場合、サーバシステム110は、要求されたアクションが同期的に実施されるべきか、または非同期的に実施されるべきかを決定するためにさらなる情報を使用する。たとえば、ユーザデバイス104は、その現在のコンテキストを示すコンテキスト情報を送信することができる。このコンテキスト情報は、たとえばユーザデバイス104のディスプレイ上で視認可能な項目を示すデータ、ユーザデバイス104上でインストールされたまたは動作しているアプリケーションを示すデータなどを含んでもよい。サーバシステム110は、コンテキスト情報を評価し、現在のコンテキストが、要求されたアクションに対する実行モードのあらかじめ決定された割当てを変えるかどうかを判定することができる。たとえば、リストに項目を追加する要求は一般的に緊急を要するものではなく、したがって「リスト」アクションは、非同期実行に適すると設計することができる。しかしながら、ユーザがリストを視認可能であるとき、一般的にユーザは、新しい項目の名前を挙げるとき、それらが潜在的な遅延なくリストに追加されるのを見ることを期待する。結果として、ユーザにより良い体験を与えるために、「リスト」アクションが要求され、コンテキスト情報が、「リスト」アプリケーションが動作していることを示すとき、サーバシステム110は、非同期実行ではなく同期実行を選択することができる。これは、ユーザデバイス104に要求の解釈を最速で送信し、ユーザデバイス104が視認できる可能性があるリストを遅延なく更新できるようにする。
【００８４】
図3は、ユーザ要求の非同期的処理のためのプロセス300を示す流れ図である。プロセス300は、1つまたは複数の処理デバイスによって実施することができる。1つまたは複数の処理デバイスは、クライアントデバイス、サーバシステム、またはクライアントデバイスとサーバシステムの両方の組合せを含むことができる。いくつかの実装形態では、プロセス300のアクションは、クライアントデバイスまたはサーバシステムによって排他的に実施されてもよい。さらなる例として、処理デバイスは、携帯電話、スマートフォン、携帯情報端末(PDA)、音楽プレーヤ、電子ブックリーダー、タブレットコンピュータ、時計、眼鏡、もしくはネックレスなどのウェアラブルコンピューティングデバイス、ラップトップコンピュータ、デスクトップコンピュータ、または他の携帯型もしくは据置型コンピューティングデバイスであってもよい。さらなる例として、処理デバイスは、デバイスの中央処理ユニット(CPU)、CPU内の特定の処理コアなどであってもよい。上記で説明したように、本技法は、ユーザデバイス104においてユーザが要求するアクションを実施するのを支援する、図1および図2のサーバシステム110によって実施されてもよい。
【００８５】
デジタルアシスタントへのユーザ要求を示すデータが受信される(302)。たとえば、サーバシステムが、クライアントデバイスで作成されたユーザ要求を示すデータを受信することができる。デジタルアシスタントが音声入力を受信するとき、受信されたデータは、ユーザの発話を記述するオーディオデータを含む場合がある。デジタルアシスタントがテキスト入力を受信するとき、テキストを受信することができる。
【００８６】
ユーザ要求に対応するアクションが決定される(304)。たとえば、ユーザ要求のテキストを決定するために、音声入力のオーディオデータに発話認識を実施することができる。どのようなアクションが要求されるかを決定するために、テキストを分析することができる。たとえば、システムが、複数のあらかじめ決定されたカテゴリまたはアクションタイプのどれが要求に適しているかを決定することができる。たとえば、テキストを異なるアクションの1つもしくは複数のパターンもしくは文法と比較すること、テキストをパースし、特定のアクションに対応する単語もしくはフレーズを識別すること、または他の技法によって、要求のテキストからアクションを決定することができる。
【００８７】
アクションが、ユーザ要求と非同期的に実施することができるアクションとして分類されることが決定される(306)。たとえば、いくつかのアクションまたはアクションのタイプを同期または非同期実行に適しているとして割り当てることができる。いくつかの実装形態では、システムがアクションは特定のアクションタイプに対応すると決定する。異なるアクションタイプが要求と同期的に実行されるように割り当てられるか、または非同期的に実行されるように割り当てられるかを示す割当てデータがアクセスされる。割当てデータに基づいて、システムが、特定のアクションタイプは、要求と非同期的に実行されることが可能であるように割り当てられると決定することができる。別の例として、いくつかのアプリケーションまたはサービスが、非同期または同期処理に指定されてもよい。システムは、どのアプリケーションまたはサービスがアクションを実施するかを決定し、対応するアプリケーションまたはサービスに基づいて非同期または同期実行を選択することができる。
【００８８】
アクションを同期的に実施するか、または非同期的に実施するかを決定する際に、他のファクタが考慮されてもよい。たとえば、デバイスが、アクションは同期実行に適しているとして分類されると決定してもよい。しかしながら、デバイスは、アクションはサーバとの通信を含むこと、およびネットワーク接続性は一時的に切断されること、またはサーバは現在応答が遅い、もしくは利用できないことを決定する場合がある。結果として、デバイスは、たとえばタスクをバッファもしくはキューに置くことによって、または後の実行をスケジュールすることによって、代わりに非同期的にアクションを実行すると決定することができる。このようにして、アクションを実行する初めての試みのために、または最初の同期プロセスがアクションを実施することができなかった後の再試行のために、同期実行に適しているとして分類されないアクションに、非同期実行を選択することができる。
【００８９】
同様に、非同期実行に適しているとして分類されたアクションが、それにもかかわらず、1つまたは複数のファクタに基づいて同期的に実施されてもよい。いくつかの実装形態では、要求されたアクションのパラメータは、アクションが非同期的に実行されるように分類されるべきかどうかを判定するために分析することができる。たとえば、イベントまたは出力が実施されるようにスケジュールされる時間などの要求されたアクションに対応する時間を決定することができる。時間は、別の時間または時間期間と比較して、要求されたアクションに対応する時間が、現在の時間、たとえば要求の時間から少なくとも最小の時間量であるかどうかを判定することができる。要求されたアクションに対応する時間が、しきい値時間よりも前である場合、アクションは、非同期実行ではなく同期実行のアクションとして分類することができる。
【００９０】
いくつかの実装形態では、要求されたアクションを分類するために、クライアントデバイスのコンテキストを示す情報が使用される。たとえば、ユーザがクライアントデバイス上で実行しているまたは視認可能であると決定されたアプリケーションに対するアクションを要求する場合、アクションは、非同期実行ではなく同期実行のアクションとして分類することができる。
【００９１】
確認メッセージが、クライアントデバイスでの出力のために送信される(308)。たとえば、アクションが非同期的に実施されるべきであるとの決定に基づいて、システムが、要求は後で実施されることになることを示す確認メッセージを提供することができる。この確認は、アクションが実行される前に実施することができる。いくつかの事例では、サーバシステムが、アプリケーションサーバなどの別のサーバシステムによるアクションの実行を要求する前に確認を実施する。
【００９２】
確認を実施するために、確認メッセージのテキストを決定することができる。合成された発話を含むオーディオデータを生成するために、テキスト読み上げシステムを使用することができ、オーディオデータは、たとえばネットワークを介してクライアントデバイスに提供することができる。
【００９３】
アクションは、ユーザ要求と非同期的に実施されるようにされる(310)。アクションの実行は、デジタルアシスタントとのユーザの対話から切り離すことができ、デジタルアシスタントへの他の要求が、第1の要求とは無関係に、並行して受信され、処理されることを可能にする。したがって、ユーザからデジタルアシスタントへの1つまたは複数の他のユーザ要求が、第1のユーザ要求によって要求されたアクションを実施する前に受信されてもよい。同様に、ユーザからデジタルアシスタントへの1つまたは複数の他のユーザ要求に対応するアクションは、第1のユーザ要求によって要求されたアクションを実施する前に実施されてもよい。
【００９４】
いくつかの実装形態では、第1のサーバシステムが、要求されるアクションを示すレコードを記憶することによってアクションが実施されるようにしてもよい。記憶されたレコードに基づいて、第1のサーバシステムは、第2のサーバシステムがアクションを実施することを要求するための第2のサーバシステムへの要求を後で生成しかつ送信することができる。
【００９５】
いくつかの実装形態では、サーバシステムが、複数のデータ記憶領域を有するデータストレージシステムに、実施されるアクションのレコードを記憶する。データ記憶領域の各々が、データ記憶領域中のレコードを処理するための関連するソフトウェアモジュールを有することができる。たとえば、データストレージシステムの領域は、識別されたアクションに基づいて選択することができる。選択された領域にアクションに関するデータを記憶するための書込み要求を送信することができる。書込み要求に応答して、データストレージシステムの選択された領域に対応するソフトウェアを実行するために、リモートプロシージャコールを発行することができる。実行されたソフトウェアを使用して、アクションを実施するためのアプリケーションサーバへの要求を生成することができる。
【００９６】
いくつかの実装形態では、アクションは、アクションを実施するためにサーバシステムに要求を送信することと、アクションの完了のためのタイムアウト期間を設定することと、タイムアウト期間の終了の前にアクションが完了されると決定することと、アクションの実行を示すデータを記憶することとによって、実施されるようにされる。
【００９７】
いくつかの実装形態では、クライアントデバイスにおいて、デジタルアシスタントへの第2のユーザ要求を示すデータが受信される。第2のユーザ要求に対応する第2のアクションが決定される。第2のアクションは、第2のユーザ要求と非同期的に実施されるべきアクションとして分類されないことが決定される。第2のアクションが第2のユーザ要求と非同期的に実施されるべきアクションとして分類されないとの決定に基づいて、第2のアクションは、ユーザ要求に対して同期的に実施されるようにすることができる。同期実行が完了した後に、クライアントデバイスに確認を提供することができる。
【００９８】
いくつかの実装形態では、クライアントデバイスにおいて、デジタルアシスタントへの第2のユーザ要求を示すデータが受信される。第2のユーザ要求に対応する第2のアクションが決定される。第2のアクションが、第2のユーザ要求と非同期的に実施されるべきアクションとして分類されることが決定される。第2のアクションが、第2のユーザ要求と非同期的に実施されるべきアクションとして分類されるとの決定に基づいて、第2のアクションの実行が開始される。第2のアクションがタイムアウト期間内に実施されないと決定される。結果として、第2のアクションの実行が失敗したことを示すメッセージが、クライアントデバイスで出力するために提供される。いくつかの実装形態では、アクションを実施するための複数の試みが、各々が対応するタイムアウト期間を有して、アクションが失敗したことを示す前に実施されてもよい。
【００９９】
本発明の実施形態および本明細書で記述する機能的動作のすべては、デジタル電子回路において、または本明細書で開示する構造およびそれらの構造的に同等のものを含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらの1つもしくは複数の組合せにおいて実装されてもよい。本発明の実施形態は、1つまたは複数のコンピュータプログラム製品、すなわちデータ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータ可読媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装されてもよい。コンピュータ可読媒体は、非一時的コンピュータ可読記憶媒体、機械可読のストレージデバイス、機械可読のストレージ基盤、メモリデバイス、機械可読の伝搬信号を生じさせる組成物、またはそれらの1つもしくは複数の組合せであってもよい。「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータ、複数のプロセッサまたはコンピュータを含むデータを処理するためのすべての装置、デバイス、および機械を包含する。装置は、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえばプロセッサファームウェアを構成するコード、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つもしくは複数の組合せを含んでもよい。伝搬信号は、人為的に発生させた信号であり、たとえば好適なレシーバ装置への送信に向けて情報を符号化するために生成された、機械生成の電気、光、または電磁信号である。
【０１００】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語またはインタープリタ型言語を含むいかなる形態のプログラム言語で書かれてもよく、コンピュータプログラムは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境で使用するのに適した他のユニットとしてなどのいかなる形態で展開されてもよい。コンピュータプログラムは、必ずしもファイルシステム中のファイルに対応しない。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプト)を入れたファイルの一部分に、当該プログラムに専用の単一ファイルに、または複数の協調ファイル(coordinated file)(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイル)に記憶されてもよい。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに位置するもしくは複数のサイトにわたって分散し、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開されてもよい。
【０１０１】
本明細書で記述するプロセスおよび論理フローは、入力データで動作し、出力を生成することによって機能を実施するために1つまたは複数のコンピュータプログラムを1つまたは複数のプログラマブルプロセッサが実行することによって実行されてもよい。またプロセスおよび論理フローは、専用の論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実施されてもよく、装置もまたこれらとして実装されてもよい。
【０１０２】
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般にプロセッサは、読取り専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信することになる。コンピュータの必須要素は、命令を実施するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般にコンピュータはまた、データを記憶するための1つもしくは複数の大容量ストレージデバイス、たとえば磁気ディスク、光磁気ディスク、もしくは光ディスクを含む、またはこれらからデータを受信する、もしくはこれらにデータを転送する、もしくはその両方を実施するために動作可能に結合されることになる。しかしながら、コンピュータがそのようなデバイスを有する必要はない。さらに、コンピュータが、別のデバイス、たとえばほんの数例を挙げれば、タブレットコンピュータ、携帯電話、携帯情報端末(PDA)、モバイルオーディオプレーヤ、全地球測位システム(GPS)レシーバに埋め込まれてもよい。コンピュータプログラム命令およびデータを記憶するのに好適なコンピュータ可読媒体は、例として、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMおよびDVD-ROMディスクを含むあらゆる形態の不揮発性メモリ、媒体、メモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補われてもよく、または専用論理回路に組み込まれてもよい。
【０１０３】
ユーザとの対話を提供するために、本発明の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタと、ユーザがそれによってコンピュータへの入力を実施することができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールとを有するコンピュータに実装されてもよい。他の種類のデバイスが、同様にユーザとの対話を提供するために使用されてもよく、たとえばユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力、または触覚入力などの任意の形態で受信されてもよい。
【０１０４】
本発明の実施形態は、たとえばデータサーバとして、バックエンド構成要素を含むコンピューティングシステム、またはミドルウェア構成要素、たとえばアプリケーションサーバを含むコンピューティングシステム、またはフロントエンド構成要素、たとえばグラフィカルユーザインタフェースもしくはウェブブラウザを有し、それによりユーザが本発明の実装形態と対話する場合があるクライアントコンピュータを含むコンピューティングシステム、またはそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の1つもしくは複数の任意の組合せを含むコンピューティングシステムに実装されてもよい。システムの構成要素は、デジタルデータ通信の任意の形態または媒体によって、たとえば通信ネットワークによって、相互接続されてもよい。通信ネットワークの例には、ローカルエリアネットワーク(“LAN")、およびワイドエリアネットワーク(“WAN")、たとえばインターネットが含まれる。
【０１０５】
コンピューティングシステムは、クライアントおよびサーバを含んでもよい。クライアントおよびサーバは、一般的に互いから遠くにあり、典型的には通信ネットワークを介して対話する。クライアントとサーバの関係は、それぞれのコンピュータで実行している、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【０１０６】
本明細書は、多くの具体的内容を含むが、これらは本発明の範囲、または特許請求される可能性のあるものの範囲への制限として解釈されるべきではなく、むしろ本発明の特定の実施形態に固有の特徴の記述として解釈されるべきである。本明細書において別個の実施形態の文脈で記述されるいくつかの特徴は、単一の実施形態において組み合わせて実装される場合もある。逆に、単一の実施形態の文脈で記述される様々な特徴は、複数の実施形態において別々に、または任意の適切な部分的な組合せで実装される場合もある。さらに、特徴は、ある組合せで機能するものとして上記で記述され、さらに当初はそのように特許請求される場合があるが、特許請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除されることがあり、特許請求される組合せは、部分的な組合せ、または部分的な組合せの変形を対象とすることがある。
【０１０７】
同様に、動作は、特定の順序で図面に示されるが、これは、望ましい結果を達成するために、このような動作が示された特定の順序でもしくは順次に実施されること、または図示したすべての動作が実施されることを必要とするものと理解されるべきではない。いくつかの環境では、マルチタスクおよび並列処理が有利である場合がある。さらに、上記で記述した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてこのような分離を必要とすると理解されるべきではなく、記載するプログラム構成要素およびシステムは、一般的に単一のソフトウェア製品に統合される、または複数のソフトウェア製品にパッケージ化される場合があると理解されるべきである。
【０１０８】
HTMLファイルについて言及する各事例においては、他のファイルタイプまたはフォーマットが代用されてもよい。たとえば、HTMLファイルが、XML、JSON、プレーンテキスト、または他のタイプのファイルに置き換えられてもよい。さらに、テーブルまたはハッシュテーブルについて言及する場合、他のデータ構造(スプレッドシート、リレーショナルデータベース、または構造化ファイルなど)が使用されてもよい。
【０１０９】
このように、本発明の特定の実施形態について記述した。他の実施形態も、特許請求の範囲内である。たとえば、特許請求の範囲に記述するアクションは、異なる順序で実施されてもよく、やはり望ましい結果を実現する。
【符号の説明】
【０１１０】
100  システム
102  ユーザ
104  ユーザデバイス
106  ネットワーク
108  音声コマンド
110  サーバシステム
112  アプリケーションサーバ
115  ユーザ要求
120  要求インタープリタモジュール
122  実行セレクタモジュール
124  テキスト読み上げモジュール
130  割当てデータ
132  メッセージテキスト
134  オーディオデータ
136  確認メッセージ
140  アクションデータ
142  データストレージシステム
146  ソフトウェアモジュール
148  キュー
150  トークン
152  時間期間
160  要求
162  確認
208  音声モジュール
215  要求
232  テキスト
234  オーディオデータ
236  確認メッセージ
238  アクション命令
【図１】
2019527392.tif 000003
【図２】
2019527392.tif 000004
【図３】
2019527392.tif 000005
【国際調査報告】
2019527392.tif 000006
2019527392.tif 000007