(57)【特許請求の範囲】
【請求項１】
ユーザとの対話に基づいてタスクを実行可能な制御装置であって、
実行するタスクを判定するためにユーザとの対話を実行する対話実行手段と、
判定したタスクを実行するための命令を出力する命令手段と、
前記制御装置で生じるイベントに係るイベント情報を受信するイベント受信手段と、
前記イベント受信手段が前記イベント情報を受信した際に、実行中の対話がある場合にその対話を中断可能か否かを判定する対話判定手段と、
前記対話判定手段により前記実行中の対話を中断可能であると判定された場合、該対話を中断するとともに、受信した前記イベント情報を前記ユーザに通知し、前記対話判定手段により前記実行中の対話が中断不可能であると判定された場合、該対話を継続させ、該対話が完了した後に前記イベント情報をユーザに通知する制御手段と、
を有することを特徴とする制御装置。
【請求項２】
ユーザとの対話に基づいてタスクを実行可能なプロセッサ制御装置を制御する制御方法であって、
対話実行手段が、前記プロセッサ制御装置に実行させるタスクを判定するためにユーザとの対話を実行する対話実行ステップと、
命令手段が、判定された前記タスクを前記プロセッサ制御装置に実行するよう命令する命令ステップと、
イベント受信手段が、前記プロセッサ制御装置で生じるイベントに係るイベント情報を受信するイベント受信ステップと、
対話判定手段が、前記イベント受信ステップにおいて前記イベント情報を受信した際に、実行中の対話がある場合にその対話を中断可能か否かを判定する対話判定ステップと、
制御手段が、前記対話判定ステップにおいて前記実行中の対話が中断可能であると判定された場合、該対話を中断するとともに、受信した前記イベント情報を前記ユーザに通知し、前記対話判定ステップにおいて前記実行中の対話が中断不可能であると判定された場合、該対話を継続させ、該対話が完了した後に前記イベント情報をユーザに通知する制御ステップと、
を有することを特徴とする制御方法。
【請求項３】
ユーザとの対話に基づいてタスクを実行可能なプロセッサ制御装置を制御するためにプロセッサによって実行されるプログラムを格納した記憶媒体であって、前記プログラムは、前記プロセッサに、
前記プロセッサ制御装置に実行させるタスクを判定するためにユーザとの対話を実行する対話実行ステップ、
判定された前記タスクを前記プロセッサ制御装置に実行するよう命令する命令ステップ、
前記プロセッサ制御装置で生じるイベントに係るイベント情報を受信するイベント受信ステップ、
前記イベント受信ステップにおいて前記イベント情報を受信した際に、実行中の対話がある場合にその対話を中断可能か否かを判定する対話判定ステップ、
前記対話判定ステップにおいて前記実行中の対話が中断可能であると判定された場合、該対話を中断するとともに、受信した前記イベント情報を前記ユーザに通知し、前記対話判定ステップにおいて前記実行中の対話が中断不可能であると判定された場合、該対話を継続させ、該対話が完了した後に前記イベント情報をユーザに通知する制御ステップ、
を実行させるものであることを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
本発明は制御装置に関し、特に、ユーザに複数の異なるプロセスまたはタスクの実行を制御させるためにユーザとの通信を可能にする制御装置に関する。
【０００２】
制御装置と音声による対話を行うことにより、ユーザがタスクまたはプロセスの実行を制御することを可能にするシステムに対する関心が増してきている。そのようなシステムの例には、例えば、航空機のチケットなどの予約を行うための電話予約システムまたはオンライン予約システム、並びに欧州特許出願公開第０９１１８０８号や同第０８５４４１８号に記載されているような、ユーザが音声指令によりプリンタまたはＶＣＲなどのオフィス機器または家庭用機器のアイテムの動作を制御することを可能にするオフィス用または家庭用機器システムがある。
【０００３】
そのようなシステムにおいては、ユーザにより命令されたタスクまたはプロセスの実行に影響を及ぼすイベントが起こったこと、例えば、印刷タスクの場合であればプリンタがその印刷タスクを実行するのを妨げる紙詰まりが起こったこと、をユーザに通知できるようになっていることが必要である。しかし、ユーザが別のタスクの実行を命令するプロセスに入っている場合にそのようなイベントが起こったことがそのユーザに報知されると、とりわけ混乱を招くであろう。
【０００４】
本発明は一側面において、ユーザにより命令されたタスクに関する情報によってユーザが妨げられるか否かを制御するように構成された制御装置を提供する。
【０００５】
本発明は一側面において、制御装置との対話を実行することにより、プロセスまたはタスクの実行をユーザが制御することを可能にする制御装置を提供する。ここで、制御装置は、特定の現在のプロセスまたはタスクに応じて、現在のプロセスまたはタスクを制御するためのユーザとの現在の対話を別のプロセスまたはタスクに関するユーザへの情報によって中断することが可能であるか否かを決定するように構成されている。
【０００６】
一実施例では、制御装置はオフィス機器または家庭用機器のアイテムなどの機器のアイテムを制御するように構成されてもよく、また、ユーザにより命令されている現在タスクに応じて、機器のアイテムが先に命令されたタスクを実行できないことを指示する、そのアイテムからのメッセージがユーザに通知されるか否かを制御するように構成されてもよい。例えば、制御装置は、ある特定のプリンタがオフラインであること、用紙切れであること、または紙詰まりが起こったことなどをユーザに通知する、先に命令されていたプリントジョブに関するプリンタからのメッセージにより、ユーザの現在のアクティビティを中断することが可能であるか否かを判定するように構成されていてもよい。
【０００７】
本発明を具現化した制御装置によれば、ユーザがあるいくつかの条件の下でのみ現在のタスクの命令もしくは実行が中断されるように、エラーメッセージなどのイベントの処理のタイミングに融通性を持たせることが可能になる。これにより、制御装置をより使いやすくすることができ、また、ユーザのアクティビティの混乱を最小限にとどめることが可能になるはずである。
【０００８】
本発明は、タスクまたはプロセスの実行を制御するためのユーザと制御装置との対話が話し言葉による対話である場合に使用するのに特に有利であるが、それは、話し言葉による対話が必然的に時間的に順次起こるイベントであり、一般に２つの会話を一度に行うことは不可能であるためである。また、本発明は、ユーザと制御装置との対話が、一部は話し言葉による対話、一部は視覚表示による対話である場合、例えば、ユーザが口頭で命令を発し、制御装置はユーザに対して視覚メッセージを表示する場合、およびユーザがユーザとの対話の中で口頭の指令と手動操作（例えば、キーボードまたはマウスクリック）の指令とを混合して使用する場合などにも有利であろう。更に、本発明は、制御装置とユーザとの対話が音声によらない場合、すなわち、ユーザがマウスまたはキーボードなどの手動操作可能なユーザインタフェースを使用して指令を入力し、ユーザに対してメッセージが表示画面に表示される場合、特に表示画面が限られたスペースしか有していない場合や、ユーザに対して無制御にエラーメッセージが表示されることにより、表示画面が不当に乱されてしまうような場合にも有用であろう。
【０００９】
制御装置は、マークアップ言語を有するアプリケーション開発者により調整されるように構成されてもよい。マークアップ言語はユーザに対する情報の提示を容易にするように特別に設計されているため、これは特に有利である。マークアップは手続き上のものであろうが、マークアップは常にユーザに対して提示されるべきデータと混合され、アプリケーション開発者はレコードがどのように格納され、読み取られるべきか、あるいは個々のフィールドがどのようにアドレス指定されるべきであるかを考慮する必要はない。むしろ、全てのデータがアプリケーション開発者に対して提示され、アプリケーション開発者はマークアップ言語をデータ中の必要とされる箇所に組み込む。これにより、マークアップ言語を学習することおよび適用することが非常に容易になる。また、マークアップ文書も理解および修正が容易であり、エラーをおかす危険は非常に少ない。
【００１０】
本発明は一側面において、ユーザにより実行されつつあるタスクがあるイベントに関する情報により中断されるか否かを、その特定のイベントおよび実行中である特定のタスクにより制御または判定することを可能にするという機能性を追加したマークアップ言語を提供する。
【００１１】
一実施例では、本発明は、そのような機能性を追加してユーザとの話し言葉による対話をイネーブルすることが可能であるマークアップ言語への拡張を提供する。マークアップ言語はVoiceXMLであってもよい。VoiceXMLは、ＷＷＷコンソーシアム（W3C）によるＸＭＬ（eXtensible Markup Language）に基づき、音声リソースおよび電話通信リソースに対してハイレベルプログラミングインタフェースを提供するものである。このVoiceXMLは、AT&T、IBM、Lucent TechnologiesおよびMotorolaにより創設されたVoiceXML ForumおよびW3Cの一部門のVoiceXMLワーキンググループにより策定されたものである。VoiceXMLのバージョン１.０の仕様は、
http://www.voicexml.org、および、
http://www.w3.org/TR/2000/NOTE-voicexml-20000525
で見ることができる。
【００１２】
本発明の一実施例は、ユーザがプロセスまたは動作を制御することを可能にするためにユーザとの対話、例えば口頭の対話、を実行するように構成された制御装置を提供する。この制御装置は、ユーザにより命令されたプロセスまたはタスクと関連するイベントの詳細をユーザに提供するように構成されている。例えば、ユーザがオフィス機器の１つ以上のアイテムの動作を制御することを可能にするように制御装置が構成されている場合、制御装置は、例えば、プリンタの場合の紙詰まり、用紙切れまたはオフラインイベントなどの、発生したイベントの詳細をユーザに提供するだけでなく、そのイベントを開始させたものが何であるかをユーザが厳密に判定できるように、イベントが起こった特定のプリンタおよびプリントジョブの詳細をもユーザに提供するように構成されていてもよい。
【００１３】
以下、添付図面を参照して本発明の実施例を説明する。
【００１４】
図１は、ネットワークＮにより複数のプロセッサ制御機器または装置Ｄ１〜ＤＮに接続された対話制御装置１を含むシステム１００のブロック図である。
【００１５】
この実施例では、装置Ｄ１〜ＤＮは、オフィス環境および／または家庭環境で見られ、かつネットワークＮを介した通信および／または制御が可能である種類の電気機器の形態をとっている。オフィス用機器の品目の例としては、例えば、複写機、プリンタ、ファクシミリ装置、デジタルカメラ、あるいは、複写、印刷、ファクシミリの各機能を有する複合機などがある。また、家庭用機器の品目の例としては、ビデオカセットレコーダ、テレビ、電子レンジ、デジタルカメラ、照明システム、暖房システムなどがある。
【００１６】
装置Ｄ１〜ＤＮは全て同じ建物の中に配置されていてもよいし、あるいは異なる建物の中に配置されていてもよい。ネットワークＮはＬＡＮ、ＷＡＮ、イントラネット、またはインターネットであればよい。言うまでもなく、ここで使用する用語「ネットワーク」は必ずしも周知のまたは標準的なネットワーク化システムまたはネットワーク化プロトコルを示唆しているわけではなく、ネットワークＮが同じ建物の異なる部分に配置されているかまたは異なる建物の中に配置されている機器または機械のアイテムとの通信を可能にするどのような構成であってもよいことは理解されるであろう。
【００１７】
図２は、対話制御装置１を提供するために使用できるコンピュータシステム１ａのブロック図である。このコンピュータシステムは、例えば、パーソナルコンピュータまたはワークステーションであればよく、図示されるように、関連メモリ（ＲＯＭおよび／またはＲＡＭ）を伴う中央処理装置（ＣＰＵ）２と、ハードディスクドライブ５と、リムーバブル記憶メディア媒体またはリムーバブルディスク（ＲＤ）７を収容するリムーバブルディスクドライブ（ＲＤＤ）６と、ユーザに対して情報を表示する表示装置４と、キーボードおよび／またはマウスなどの指示装置のような手動操作ユーザインタフェース８と、ネットワークＮを介する装置Ｄ１〜ＤＮとの通信を可能にする通信インタフェース１０と、ユーザからの音声を受信するとともにユーザへ音声を伝えるオーディオユーザインタフェース１１とを具備する。
【００１８】
図３は、装置Ｄ１〜ＤＮの概略ブロック図である。プロセッサ制御装置は、一般にＣＰＵと、ＲＯＭおよび／またはＲＡＭなどのメモリとを含む装置オペレーティングシステムモジュール２０を具備する。オペレーティングシステムモジュール２０は、装置がユーザから受信される命令に従って対話制御装置１から装置実現可能な命令を受信するとともに装置に生じるイベントに関する情報を対話制御装置へ送信することを可能にするために、インタフェース２１を介して対話制御装置１と通信する。装置オペレーティングシステムモジュール２０は、オペレーティングシステムモジュール２０の制御の下に、ユーザにより要求される機能を実行させる装置制御回路２２にも結合されている。装置制御回路２２は同じ種類の従来の装置の、同じ１つ以上の機能（例えば、プリンタの場合は印刷機能、複写機の場合には複写機能）を実行することが可能である装置制御回路に相当し、従って、ここでは詳細な説明を省略する。
【００１９】
図示されるように、装置オペレーティングシステムモジュール２０は、ユーザに対してメッセージおよび／または情報を表示する表示装置と、ユーザの手動操作による命令の入力を可能にする複数の制御ボタンとを含むコントロールパネル２２とも通信する。
【００２０】
一般に、装置オペレーティングシステムモジュール２０の動作を制御するためのプログラム命令および／またはデータは、予めそのメモリに格納されているであろう。プロセッサ命令および／またはデータはインタフェース２１を介して信号として装置オペレーティングシステムモジュールに供給されてもよい。
【００２１】
図２に示すコンピュータシステム１ａは、対話制御装置１を提供するために、プログラム命令および／またはデータにより構成される。コンピュータシステム１ａを構成するためのプログラム命令およびデータは少なくとも次のいずれかの方法、すなわち、
１．ネットワークＮを介して供給される信号Ｓとして供給、
２．リムーバブルディスクＲＤによる伝送、
によって処理装置２に供給される。
【００２２】
プログラム命令およびデータは周知のようにハードディスクドライブ５および／またはメモリ３に格納される。
【００２３】
図４は、対話制御装置１を提供するようにプログラムされたときにコンピュータシステム１ａにより提供される機能構成要素を示すブロック図である。
【００２４】
図示されるように、対話制御装置は、制御機能全般を提供し、対話制御装置の他の機能構成要素の動作を制御する対話マネージャ３０を具備する。対話マネージャ３０は、装置Ｄ１〜ＤＮの対応するインタフェース２１と、装置Ｄ１〜ＤＮの各装置ごとに、対応する装置へ命令を送信することおよびその装置からイベントの詳細を受信することを可能にする装置オブジェクトを含む装置インタフェース３１とを介して、装置Ｄ１〜ＤＮの装置オペレーティングシステムモジュール２０と通信する。装置オブジェクトは対話制御装置１に予め格納されていてもよいし、あるいは、より頻繁に行われる方法として、装置Ｄ１〜ＤＮがネットワークＮを介して対話制御装置１に結合される場合に装置Ｄ１〜ＤＮの装置オペレーティングシステムモジュール２０からダウンロードされてもよい。
【００２５】
対話マネージャ３０は、自動音声認識（ＡＳＲ）エンジン３２および自動音声認識エンジン３２により使用されるべき文法ファイルを格納する文法ファイル記憶部３３と通信する。周知のどのような形態の自動音声認識エンジン３２が使用されてもよい。その例は、Nuance, Lernout and Hauspie社によって製造されている音声認識エンジン、IBM社によって「Via Voice」の商品名で市販されている音声認識エンジン、あるいは、Dragon Systems社によって「Dragon Naturally Speaking」の商品名で市販されている音声認識エンジンなどがある。当業者には理解されるであろうが、自動音声認識エンジン３２との通信は、MicrosoftSAPIなどの標準スピーチアプリケーションプログラムインタフェース（ＳＡＰＩ）を介して行われる。一般に、文法ファイル記憶部３３に格納される文法はＳＡＰＩ文法フォーマットである。
【００２６】
対話マネージャ３０は、文書または対話ファイルを提供する文書サーバ３５と通信しユーザとの間で対話を実行することを可能にするために対話ファイルを解釈し実行する対話インタプリタ３４を含む。対話マネージャ３０と対話インタプリタ３４は直接にユーザインタフェース３６に結合されると共に、ユーザインタフェースを介してユーザとの音声による通信を可能にするためにテキスト音声合成部３７を介してユーザインタフェース３６に結合されている。ユーザインタフェース３６は、音声通信に適合するウェブ型ブラウザインタフェースを構成していてもよい。
【００２７】
以下に説明する通り、装置Ｄ１〜ＤＮがユーザにより指定された機能タスクまたはプロセスを実行することを対話制御装置１により命令されたとき、対話マネージャ３０は、装置Ｄ１〜ＤＮから受信される、例えば、その装置が何らかの理由により要求されたタスクまたは機能を実行できないことを指示するエラーメッセージなどのイベントを聴取し、対応する装置オブジェクトと関連するイベントリスナ３８を登録する。以下に説明する通り、対話マネージャ３０はイベントごとにキャッチスレッドオブジェクトを作成する。従って、ｉ個のイベントが存在すれば、ｉ個のキャッチスレッドオブジェクトが作成される。簡単にするため、図４は３つのキャッチスレッドオブジェクト３９ａ、３９ｂおよび３９のみを示している。
【００２８】
この実施例では、対話ファイルまたは対話文書は、ＷＷＷコンソーシアム（W3C）により標準化されたＸＭＬに基づき、音声リソースおよび電話通信リソースに対するハイレベルプログラミングインタフェースを提供するVoiceXMLで書き込まれている。VoiceXMLは、VoiceXML forumおよびW3Cの一部門であるVoiceXMLワーキンググループにより策定されたものである。VoiceXMLのバージョン１.０の仕様は、
http://www.voiceXML.org、
http://www.w3/org/TR/2000/NOTE‐voicexml‐20000505
で見ることができる。
【００２９】
VoiceXML仕様の用語において、ユーザインタフェース３６はプラットフォームインプリメンテーションを構成し、対話マネージャ３０はVoiceXMLインタプリタコンテキストを構成し、対話インタプリタ３４はVoiceXMLインタプリタを構成し、文書サーバ３５は、言うまでもなく、文書サーバを構成する。
【００３０】
文書サーバ３５は、VoiceXMLインタプリタコンテキストを介してVoiceXMLインタプリタからのリクエストを処理し、このリクエストの返答としてVoiceXMLインタプリタにより処理されたVoiceXML文書（対話ファイル）を提供する。VoiceXMLインタプリタコンテキストは、VoiceXMLインタプリタ３４と並列にユーザインタフェース３６からのユーザ入力を監視してもよい。例えば、１つのVoiceXMLインタプリタコンテキストは、ユーザに高レベルの個人化アシスト作業を行わせる専門家用エスケープフレーズを常にモニタしてもよいし、また別のVoiceXMLインタプリタコンテキストは、音量やテキスト音声の特性等のユーザの好みを変更するエスケープフレーズをモニタしてもよい。
【００３１】
ユーザインタフェース３６、すなわち、インプリメンテーションプラットフォームはVoiceXMLインタプリタコンテキストおよびVoiceXMLインタプリタと通信する。したがって、例えば、VoiceXMLインタプリタコンテキスト、すなわち、対話マネージャ３０はユーザからの入力音声を検出し、初期VoiceXML文書を収集し、かつユーザの入力を確認する役割を果たすが、一方、VoiceXMLインタプリタ、すなわち、対話インタプリタ３４は、確認後に対話を実行する。
【００３２】
文書サーバ３５により提供されるVoiceXML文書は対話と呼ばれるトップレベル要素から主に構成されている。VoiceXMLの場合、対話にはフォームとメニューという２種類がある。
【００３３】
VoiceXMLインタプリタ３４は、最初の対話のときにデフォルトにより文書の実行を開始するように構成されている。対話が実行されるたびに、VoiceXMLインタプリタ３４は次の対話を判定する。
【００３４】
VoiceXML文書は、複数のフォームアイテムのセットを含むフォームから構成されている。フォームアイテムは、フォームのフィールドアイテム変数を定義するフィールドアイテムと、フォームのフィールドの集合の制御を助ける制御アイテムとに分割される。VoiceXMLインタプリタは、VoiceXML仕様に更に詳細に説明されるようにフォームアイテムを選択して巡視するメインループを有するフォーム解釈アルゴリズム（ＦＩＡ）を使用してフォームを解釈する。
【００３５】
図５は、ユーザとの対話において対話制御装置により実行されるステップをトップレベルで示すフローチャートである。先に述べた通り、対話マネージャ３０がネットワークＮに結合された装置Ｄ１〜ＤＮの機能を制御するための口頭の指令を入力することを希望していることを指示するユーザ入力を確認すると、その後、対話マネージャ３０はフィールド解釈アルゴリズムを使用して、ユーザに音声指令を入力することを促すウェルカム・メッセージをテキスト音声合成部３７を介してユーザに提供するために（図５のステップＳ１）、第１の文書または対話ファイルの第１のフィールドアイテムをアクセスする。例えば、ウェルカム・メッセージは「Welcome to the xxxx system. What do you want to do, print, fax, copy？（ｘｘｘｘシステムにようこそ。印刷、ファクシミリ、コピーのうちのどれを希望されますか）」などであればよい。
【００３６】
次に、対話マネージャ３０はユーザからの応答を待つ。ステップＳ２でユーザインタフェース３６を介して音声データが受信されると、対話マネージャ３０はＡＳＲエンジン３２およびフィールドアイテムと関連する文法ファイルをアクセスし、ＡＳＲエンジン３２に受信された音声ファイルに対して音声認識処理を実行させる。次に、対話マネージャ３０は音声認識処理の結果を受信し、その結果に従って、ユーザが実行を希望しているのは何であるかを判定する。
【００３７】
ユーザがプロンプトに応答して「print（印刷）」ということばを発した場合、対話マネージャ３０は、ステップＳ３で、対話インタプリタ３４に「print」ということばと関連する対話ファイルまたは文書をアクセスさせ、その別の対話ファイルの受信に応答して、対話インタプリタ３４は、更に詳細な情報を提供することをユーザに要求するプロンプトをユーザに提供する。例えば、プロンプトは要求されるプリンタを識別することをユーザに要求してもよい（ステップＳ４）。ステップＳ５で、ユーザにより要求されるタスクまたはプロセスを実行させるための装置によって解釈可能な命令を装置インタフェース３１を介して提供するために必要な情報を対話マネージャ３０が検索し終わったことを指示するsuccessorを、対話ファイルが指定しなくなるまで、ステップＳ３およびＳ４を繰り返す。例えば、ユーザが特定の文書を印刷することを希望している場合、対話ファイルは、ユーザが対話インタプリタ３４により提供されるプロンプトに応答して、要求されるプリンタ、要求される文書およびコピーの枚数を識別したときに対話の実行が終了されるようなものであってよい。必要な情報が収集されたならば、対話マネージャは装置インタフェース３１を介して装置により解釈可能な命令を識別された装置へ送信し、要求されたタスクを実行させる。これは、VoiceXMLスクリプト要素の使用により装置を制御することを可能にするために、装置タスクをECMAscriptインタプリタのスクリプティング環境におけるＥＣＭＡオブジェクトとして表現することにより実現されてもよい。ＥＣＭＡはEuropean Computer Manufacturers Association（欧州電子計算機工業会）の略語であり、ECMAscriptは、所有権を主張しないNetScapeのJavascriptおよびMicrosoftのJScriptの標準化バージョンである。
【００３８】
この例では、対話マネージャ３０が装置インタフェース３１を介して装置にタスクまたはプロセスを実行することを命令するとき、対話マネージャ３０は、要求されたジョブまたはプロセスの実行に影響を及ぼす可能性がある装置におけるイベントの検出を可能にするために、例えば、プリンタの場合には、紙詰まり、用紙切れまたはプリンタオフラインなどのイベントを検出するために、その装置に関してイベントリスナ３８を登録する。イベントリスナが登録されるか否かはその特定のタスクおよび関係する装置によって決まる。
【００３９】
図６は、装置Ｄ１〜ＤＮより受信したイベントを処理するために対話制御装置１により実行されるステップを示すフローチャートである。
【００４０】
すなわち、図６のステップＳ６では、イベントリスナ３８によりイベントが検出され、そこで、イベントリスナ３８は対話マネージャ３０にイベントの受信を警告する。ステップＳ７で、対話マネージャ３０はイベントを識別し、次にステップＳ８でユーザによりその時点で実行されているどのタスクがイベントにより中断可能であるかを判定する。
【００４１】
ステップＳ９で、対話マネージャ３０がユーザは中断可能なタスクを実行していると判定すると、ステップＳ１０で、対話マネージャ３０は、ステップＳ１０でユーザに起こったイベントを通知するイベントメッセージを音声シンセサイザ３７によりユーザに送信させる。従って、例えば、ユーザがプリントジョブを実行中であり、プリンタが紙詰まりの発生を報告した場合、対話マネージャ３０は、プリンタで紙詰まりが起こったことを伝えるメッセージによりユーザの現在タスクを中断させる。その代わりに、またはこれに加えて、対話マネージャ３０はタスクが中断可能である場合にサブ対話を開始してもよい。
【００４２】
しかし、ステップＳ９で、対話マネージャ３０がユーザは中断することが不可能であるタスクを実行していると判定した場合には、ステップＳ１１で、対話マネージャ３０は、ユーザを中断することが可能であると判定するまで、例えば、ユーザが現在タスクを完了する時点まで、ユーザへのエラーメッセージの送信を遅延させる。これは、イベントまたはエラーメッセージが受信されているときおよび受信された時点でユーザが自動的に中断されることはなく、ある条件の下でのみ中断が行われることを意味している。
【００４３】
VoiceXMLの仕様は、キャッチを文書、対話またはフォームアイテムと関連付けることによりイベントの処理を可能にするキャッチ要素を含む。しかし、対話マネージャ３０がユーザを中断することが可能であるか否かを判定できるようにするために、現在のVoiceXML仕様に付加的な機能要素が追加されている。それらの要素はタスクまたはフィールドアイテムを中断可能または中断不可能として定義することを可能にする。この実施例においては、これは現在のVoiceXML要素に「ロック」要素および「中断」要素を追加することにより実現される。
【００４４】
この実施例では、ロック状態または中断可能であるというタスクの定義は対応するイベントに関するキャッチステートメントに含まれる。
【００４５】
以下に、そのような追加要素を含めたことを示すためにVoiceXML文書の一部を示す。このVoiceXML文書は（省略記号により示されるように）完全ではなく、２つ以上のキャッチイベントが存在していてもよいことは理解されるであろう。
【００４６】
＜vxml version = "1.0"＞
＜catch event = "error.com.xyz.printer.paperjammed"＞
＜prompt＞
printer paper jam ＜/prompt＞
lock = "tasks.fax"
interrupt = "tasks.email,tasks.....
＜/catch＞
＜form ID = "tasks"＞
＜field＞
＜prompt＞ What do you want to do print, fax, email...?
＜/prompt＞
・
・
・
＜filled＞
・
・
・
＜/filled＞
・
・
・
＜/field＞
・
・
・
＜field name = "print"＞
・
・
・
＜/field＞
・
・
・
＜field name = "fax＞
・
・
・
＜/field＞
・
・
・
＜field name = "email"＞
・
・
・
＜/field＞
・
・
・
＜/form＞
【００４７】
サンプルのVoiceXML文書からの上記の抜粋は、紙詰まりを指示するプリンタ「xyz」からのエラーメッセージを指示するイベントをキャッチするための単一のキャッチ要素を含む。示した通り、このキャッチ要素は、「fax」と名付けられたタスクはそのイベントにより中断することが不可能であるが、「email」と名付けられたタスク（およびおそらくは省略記号により指示されるように他のタスク）はそのイベントにより中断可能であることを指定するロック要素を含む。キャッチイベントに続くＩＤ「task」を伴うフォームは、印刷、ファックス、Ｅメールなどの異なるタスクに関するいくつかのフィールドアイテムを含む。この場合も同様に、省略記号は、フィールドアイテムが完全ではないが、当業者には理解されるように、通常はプロンプト要素および充填要素を含むことを指示している。
【００４８】
先に提示したVoiceXML文書の場合、紙詰まりが存在していることを指示するプリンタxyzからのエラーメッセージの形態をとるイベントをイベントリスナ３８が検出したとき、対話マネージャ３０はユーザタスクがその時点で進行中であるか否かを判定し、進行中であれば、キャッチ要素から、その特定のタスクを中断することが可能であるか否かを判定する。この場合では、対話マネージャ３０がタスク「fax」は現在処理中であると判定すると、対話マネージャはイベントメッセージによってタスクを中断しない。しかし、対話マネージャがタスク「email」は現在進行中であると判定した場合には、対話マネージャはそのタスクを中断することが可能であると判定し、音声シンセサイザ３７にプリンタの紙詰まりが発生したことをユーザに報知するメッセージをユーザに対して発行させる。
【００４９】
次に、図７から図１３に示すフローチャートを参照して、JAVAを使用する先に説明した中断制御を含むフォーム解釈アルゴリズムのインプリメンテーションを説明する。
【００５０】
図７は、フォーム解釈アルゴリズムのインプリメンテーションをトップレベルで示すフローチャートである。すなわち、ステップＳ１１で、フォームがエントリされると、フォームは初期設定され、内部プロンプトカウンタ変数は１にリセットされ、各変数はVoiceXMLバージョン１.０仕様に記載されているように文書順に初期設定される。次に、ステップＳ１２で、対話マネージャ３０はキャッチ要素を初期設定する。次に、ステップＳ１３で、対話マネージャは、フォーム解釈アルゴリズムにより巡視するために選択されるべきフォームアイテムが存在するか否かを知るために検査する。一般に、フォームアイテムは一度だけ、文書中で提示される順序で巡視される。ステップＳ１４では、対話マネージャ３０はビジットされるべき次のフォームアイテムを選択し、VoiceXMLバージョン１.０仕様への追加として、ステップＳ１５で以下に更に詳細に説明するようにそのフォームアイテムに関して中断許可を設定する。次に、ステップＳ１７で、ユーザに入力を促す次の未充填フォームアイテムがビジットされたときに、標準フォーム解釈アルゴリズムの収集段階に入り、適切な文法をイネーブルし、その後、待機し、ユーザからの話し言葉による語句などの入力またはヘルプを求める要求などのイベント、あるいは入力なし時間切れなどを収集する。入力は、フォームアイテムを充填し、充填された要素をVoiceXMLバージョン１.０仕様に従って実行することにより処理される。次に、ステップＳ１８で、対話マネージャはフォームアイテムが子アイテムである場合は親アイテムに関して中断許可を設定し、ステップＳ１３に戻る。ステップＳ１３における応答が否定になるまで、すなわち、全てのフォームアイテムが選択され終わるまで、ステップＳ１３からＳ１８が繰り返される。
【００５１】
図８は、図７のステップＳ１２を更に詳細に示すフローチャートである。すなわち、ステップＳ１２１で、対話マネージャ３０は、キャッチ要素または「catches」の数を判定するために、フォームから＜catch＞および＜/catch＞の対の数を判定し、ステップＳ１２２で変数ｉ＝０を設定する。ステップＳ１２３で、対話マネージャ３０は変数ｉ＝Ｎであるか否かを判定し、ｉ＝Ｎであれば、手続きから出る。これに対し、応答が否定である場合には、すなわち、ｉがＮより小さい場合には、ステップＳ１２４で、対話マネージャは、ｉ番目のキャッチに関してキャッチスレッドクラスのオブジェクトを実行し、かつｉ番目のキャッチに関するイベントハンドラを含むスレッドを開始する。次に、ステップＳ１２５で、ｉ番目のキャッチに関する中断属性の中に全てのフォームアイテムを含むリストＬａが作成され、ステップＳ１２６では、ｉ番目のキャッチに関してロック属性の中に全てのフォームアイテムを含むリストＬｂが作成される。ステップＳ１２８でｉは１増分され、ステップＳ１２３における応答が肯定になるまでステップＳ１２３からＳ１２８が繰り返される。この段階で、キャッチスレッドクラスのオブジェクトを実行し、キャッチに関するイベントハンドラを提供するスレッドはキャッチごとに開始されており、中断属性の中に全てのフォームアイテムを含むリストＬａはキャッチごとに作成されており、ロック属性の中に全てのフォームアイテムを含むリストＬｂはキャッチごとに作成されている。
【００５２】
イベントリスナクラスのオブジェクトは図９のステップＳ１３０により示すような異なるスレッドで作成される。
【００５３】
理解されるであろうが、イベントリスナクラスは他のクラスと並列して別のスレッドで実行されており、その唯一の目的は全てのイベントの通知を受信しメインスレッドに報知することである。これは図１０に示されている。すなわち、ステップＳ１３４で、スレッドは対応するイベントを受信し、メインスレッドに通知して、ステップＳ１３５で対話マネージャにイベントを識別させ、次に、ステップＳ１３６でイベントの処理を開始させる。
【００５４】
図１１は、フォームアイテムに関して中断許可を設定する図８のステップＳ１６を更に詳細に示す。すなわち、ステップＳ１５１で、変数ｉは０と等しくなるように設定され、ステップＳ１５２で、ｉがＮより小さいか否かを知るために検査が実行され、その応答が否定であれば、手続きから出る。次に、ステップＳ１５３で、イベント型（ｉ）のイベントによる現在アイテムの割り込むが許可されるか否かが検査され、ステップＳ１５４で、ｉ番目のイベントハンドラに関して中断許可が設定され、次にステップＳ１５５で変数ｉが増分され、キャッチごとに、すなわち、キャッチされるべきイベントごとに、現在フォームアイテムに関して中断許可が設定され終わったときにステップＳ１５２で応答が否定になるまで、ステップＳ１５２から１５５が繰り返される。
【００５５】
図１２は、図１１のステップＳ１５３を更に詳細に示す。すなわち、ステップＳ５０で、現在アイテムは「ローカルフォームアイテム」として設定され、ステップＳ５１で、現在アイテムがリストＬａに含まれているか否かを知るために検査が実行される。その応答が肯定であれば、値「真」が戻される。これに対し、応答が否定である場合には、ステップＳ５２で現在アイテムがリストＬｂに含まれているか否かの検査が実行される。その応答が肯定であれば、ステップＳ５２ａで値「偽」が戻される。ステップＳ５２における応答が否定である場合には、ステップＳ５３で、ローカルフォームアイテムがトップレベルアイテムであるか否かに関して検査が実行され、トップレベルアイテムであれば、ステップＳ５３ａでデフォルト値が戻される。この例においては、デフォルトは中断を許可することであり、従って、偽の値が戻される。ステップＳ５３における応答が否定である場合には、現在親フォームアイテムがローカルフォームアイテムとして設定され、ステップＳ５１からＳ５３が繰り返される。図１２に示す手続きは、最低レベルで始まる各フォームアイテムが中断可能であるか否かを判定するために各フォームアイテムを検査することを可能にする。子アイテムの状態は親アイテムの状態をオーバライドするので、親アイテムが中断可能であっても、親アイテム中の子アイテムが中断可能でない場合もある。
【００５６】
図１３は、ｉ番目のキャッチに関するキャッチスレッドオブジェクトのイベントハンドラによるイベント処理のプロセスを示す。すなわち、ステップＳ６０でイベントハンドラスレッドがイベントの通知を受信した場合、ステップＳ６１で、図１１のステップＳ１５４で設定された中断許可を検査することにより、中断が許可されるか否かを知るための検査が実行される。イベントハンドラに関して設定された中断許可が許可は認められないことを指示する場合、イベントハンドラはステップＳ６２で許可が認められるのを待つ。中断許可は、例えば、ユーザの現在タスクが完了し、処理すべきイベントが他に存在しない場合に認められるであろう。イベントハンドラがステップＳ６１でそのイベントに関して設定された中断許可が中断を許可すると判定した場合には、ステップＳ６３で、イベントハンドラはキャッチステートメントにより指定されるアクションを実行させ、ユーザはテキスト音声合成部３７を介して、イベントに関連するメッセージ、例えば、プリンタの紙詰まりイベントの場合の「printer paper jam」などのメッセージを与えられる。
【００５７】
以上説明した方法において、ユーザに与えられるイベントメッセージは単にイベントが起こったこと（すなわち、例えば、紙詰まり）を指示するだけであり、厳密なイベントの詳細をユーザに提供しない。
【００５８】
例えば、装置のオペレーティングシステムモジュール２０がJAVA仮想マシンとして構成されている場合のように、イベントがイベントオブジェクトとして提供される場合には、実際のイベントに関する詳細な情報をユーザに提供することが可能である。
【００５９】
図１４は、イベントがイベントオブジェクトとして、例えば次のようなフォームを有するJAVAイベントオブジェクトとして提供される場合の図１３のステップＳ６３を、そのイベントがプリンタ紙詰まりイベントであるケースに関して更に詳細に示すフローチャートである。
【００６０】
public class paperjammed {
public String printer;
public String des;
}
【００６１】
すなわち、イベントがイベントリスナ３８により検出されると、イベントハンドラは図１３のステップＳ６０からＳ６２を先に説明したように実行する。しかし、ステップＳ６３で、単にプリンタ紙詰まりを報告するのではなく、イベントハンドラはステップＳ７０でＪＡＶＡイベントオブジェクトからプリンタを識別する情報を判定し、次にステップＳ７１でＪＡＶＡイベントオブジェクトからイベントを記述する情報を判定し、ステップＳ７２で、プリンタ情報およびイベント記述情報を含むメッセージをユーザに提供する。
【００６２】
これは、VoiceXML文書の中でユーザに与えられるイベントプロンプトを次に記載するように修正することにより実現される。
【００６３】
＜vxml version = 1.0"＞
＜catch event = "error.com.xyz.printer.paperjammed"＞
＜prompt＞
Printer ＜value expr_"error.com.xyz.printer.paperjammed.printer"/＞
suffered paper jam ＜value expr_"error.com.xyz.printer.paperjammed.des"/＞
＜/prompt＞
＜/catch＞
・
・
・
・
・
・
【００６４】
VoiceXML文書の残りの部分は先に説明した通りである。このプロンプトが対話インタプリタ３４により実行されると、ＪＡＶＡイベントオブジェクトにおいてプリンタを識別ストリングは表現「error.com.xyz.printer.paperjam.printer」の値として挿入され、エラーの記述を表現するストリングは表現「error.com.xyz.printer.paperjam.des」の値として挿入されるので、ユーザに与えられるプロンプトは、「printer x suffered paper jam」の次に、ＪＡＶＡイベントオブジェクトにおいて提供される情報によって決まる紙詰まりイベントの記述が続くという形態をとる。イベント記述は、例えば、時間ｙに文書ｘの印刷中に紙詰まりが起こったことを指定するものであってもよい。これにより、起こったイベントに関する正確な詳細をユーザに提供することが可能になり、ユーザは、例えば、使用されている特定のプリンタを識別できるため、その文書を印刷するために、利用可能であれば別のプリンタを選択するか、あるいは別のプリンタを利用できない場合には、プリンタが動作可能になるまで待つことができる。
【００６５】
以上説明した実施例においては、ロック要素および中断要素はVoiceXML文書のキャッチ要素部分に含まれている。しかし、当業者には理解されるであろうが、各々のフォームアイテムが中断可能であるイベントを指定するように、ロック要素および中断要素を個別のフォームアイテムに組み込むことも可能であろう。例えば、先に記載した例で説明したタスク「fax」の場合、フィールドアイテムは紙詰まりイベントに対してこのタスクを中断すべきではない（タスクがロックされている）ことを指示するであろう。
【００６６】
特定のイベントが特定のタスクを中断することが可能であるか否かを識別する要素を文書のキャッチ要素の中に挿入することにより、アプリケーション開発者は、文書の全体を再検討する必要なく、全てのキャッチイベントおよび適切な中断許可が正しく指定されていることを確認することができる。しかし、文書が特に複雑である場合、すなわち、文書が長いか、または多数の入れ子フィールドアイテムを含む場合には、中断許可状態がフィールドアイテム内で指定されていると、文書を更に容易に読み取ることができるであろう。
【００６７】
もう１つの可能性として、VoiceXML仕様に記載されているようにフォームを分割し、その部分ごとに中断状態を指定してもよい。更に別の可能性として、ブロック要素を挿入することによりフォームを複数のブロックに分割し、各々の特定のブロックを１つの特定の中断状態と関連付けてもよい。
【００６８】
先に説明した実施例においては、中断状態は、タスクが特定のイベントにより中断されてもよいこと、または特定のイベントにより中断されてはならないことのいずれかを指定する。デフォルトは中断が許可されることであるので、特定のイベントに関して中断要素およびロック要素が省略されると、そのイベントはそのタスクを中断することを許可される。この場合、中断要素とロック要素の双方を含む必要はなく、単にロック要素を提供するだけでよいであろう。しかし、子アイテムの中断状態はフォームアイテムの中断状態により設定されると考えられるため、これは融通性に欠ける。「中断」要素と「ロック」要素の双方を提供することにより、子アイテムと親アイテムに対して中断状態を個別に設定することが可能になる。
【００６９】
中断状態要素は更に別の要素として、イベントを必須イベントまたは非必須イベントとして指定する優先要素を含んでいてもよく、対話マネージャは、それらの必須イベントに関して、同時に起こる他のどのイベントより早くアクションがとられるように、必須イベントに優先権を与えるように構成される。これにより、例えば、ユーザが接続を遮断したか、またはセッションを終了させた場合、ユーザが接続を切ったという事実を除いてユーザのセッションに関連する他のイベントを対話マネージャ３０が処理する必要がなくなるように、直ちにそのことを対話制御装置１に通知することが可能になるであろう。
【００７０】
先に説明した実施例においては、キャッチスレッドはフォーム解釈アルゴリズムの中で初期設定される。もう１つの可能性として、各キャッチスレッドはフォーム解釈アルゴリズムを繰り返し呼び出してもよい。
【００７１】
重要であるのは中断要素の機能であり、異なる識別名（すなわち、「中断」、「ロック」および「優先」以外の名前）を使用しても差し支えないことは言うまでもなく理解されるであろう。
【００７２】
上述の実施例においては、ある特定のタスクを特定のイベントにより中断することが可能であるか否かを制御することができる。別の可能性として、中断状態は、ある特定のイベントがどのタスクをも中断してはならないこと、またはある特定のタスクがどのイベントによっても中断されてはならないことを指示してもよい。
【００７３】
先に説明した実施例においては、ユーザインタフェース３６は対話制御装置の一部を形成する。これは必ずしも必要ではなく、例えば、ユーザインタフェース３６は、対話制御装置１と無線を介して直接に通信するか、あるいは遠隔通信リンクまたはネットワークＮを介して通信する、図２に示す構成に類似する構成を有する別個のパーソナルコンピュータにより提供されてもよい。対話制御装置とユーザ装置との接続が音声ファイルの送信を可能にするものである場合、音声合成部３７は対話制御装置１に配置されてもよい。そうでない場合には、対話制御装置により提供されるテキストファイルがユーザの装置の音声合成部により音声に変換されるように、音声合成部３７はユーザの装置に配置されればよい。別の可能性として、ユーザの装置はＷＡＰ電話であってもよい。
【００７４】
先に説明した実施例においては、自動音声認識エンジン３２および文法ファイル３３は対話制御装置１に設けられている。これは必ずしも必要ではなく、例えば、ネットワークＮを介して自動音声認識エンジン３２および文法ファイル３３をアクセスするように対話制御装置１を構成してもよい。
【００７５】
先に説明した実施例においては、対話制御装置１はその制御の下にネットワークＮにより装置Ｄ１〜ＤＮに結合される。これは必ずしも必要ではなく、例えば、図１に示すシステム１００は、対話制御装置１が、例えば、物理的リンクまたは無線リンクを介してプリンタ、モデムなどの装置Ｄ１〜ＤＮに直接に接続されるパーソナルコンピュータであるような独立型コンピュータシステムを構成していてもよい。本発明は、これらの構成要素が単一の装置に統合されているような場合に適用されてもよい。
【００７６】
本発明は、対話制御装置とユーザとの間の対話が音声によるもの、すなわち、話し言葉による対話である場合に特に有利であるが、それは、この対話が必然的に時間的に連続して起こる、すなわち、直線的に連続するアクションであり、時間的により早いタスクに関連するイベントにより音声対話を中断することで、現在タスクに関連する対話が中断され、混乱を生じると考えられるからである。しかし、対話が一部のみ口頭による対話である場合、例えば、対話制御装置がパームトップコンピュータまたはＷＡＰ電話の場合のように相対的に小型の表示画面に表示されるテキストメッセージによってユーザに応答する場合にも有用であろう。また、対話が全て目視による対話またはテキストに基づく対話である場合にも本発明は有益であり、その場合、ユーザの表示装置で利用可能である表示スペースは限られているか、またはより早期のタスクに関連するイベントによるユーザのタスクへの無制御の中断はユーザに非常に大きな混乱を引き起こすであろう。したがって、「対話」という用語は、音声ブラウザではなくテキストおよび／またはグラフィックスを利用するブラウザが使用されている場合のプロセッサとユーザとの通信を含むと理解されるべきである。
【００７７】
先に説明した実施例はVoiceXMLを使用して実現される。VOXMLなどの他の音声利用マークアップ言語を使用して本発明を適用することも可能であろう。言うまでもなく、対話が話し言葉による対話ではない場合には、XMLまたはHTMLなどの非音声マークアップ言語が使用される。
【００７８】
本発明はJAVAScriptなどのスクリプティング言語を使用して実現されることが可能であろうが、ユーザとの対話はユーザに対する情報の提示（話し言葉による提示であれ、視覚表示であれ）に関係しているため、ユーザとの対話を実行するには（スクリプティング言語ではなく）マークアップ言語の使用が特に適切である。そのような状況においては、例えば、アプリケーション開発者はどのようにレコードを構成し、読み取り、かつ格納すべきであるか、または個々のフィールドをどのようにアドレス指定すべきであるかということに関して考える必要がないため、データにマークアップを追加することはプロセスデータにプログラムを書き込むよりはるかに容易である。むしろ、それらの前にあらゆるものが直接に配置され、データの中の必要な場所に正確にマークアップを挿入することができる。また、マークアップ言語は学習するのが非常に容易であり、ほぼ瞬時に適用でき、マークアップ文書は理解および修正が容易である。
【図面の簡単な説明】
【図１】  本発明を具現化したシステムの概略ブロック図である。
【図２】  図１に示すシステムの対話制御装置を構成するのに適したコンピュータシステムのブロック図である。
【図３】  図１に示すシステムの装置の機能構成要素を示すブロック図である。
【図４】  図１に示す対話制御装置の機能ブロック図である。
【図５】  ユーザとの対話中に対話制御装置により実行されるステップを示すフローチャートである。
【図６】  図１に示す装置のうちの１つからのイベントの受信に応答して対話制御装置により実行されるステップを示すフローチャートである。
【図７】  ユーザとの対話の一部の間に対話制御装置により実行されるステップを更に詳細に示すフローチャートである。
【図８】  どのフォームアイテムが中断可能であり、どのアイテムが中断不可能であるかを判定するために対話制御装置により実行されるステップを示すフローチャートである。
【図９】  イベントリスナの作成を示すフローチャートである。
【図１０】  イベントの受信時に対話制御装置により実行されるステップを示すフローチャートである。
【図１１】  フォームアイテムに対する中断許可の設定を示すフローチャートである。
【図１２】  イベントによりフォームアイテムが中断可能であるか否かを判定するために対話制御装置により実行されるステップを示すフローチャートである。
【図１３】  イベントの処理を示すフローチャートである。
【図１４】  ユーザにイベントに関連する詳細を提供することを可能にするためにイベントの処理中に実行できるステップを示すフローチャートである。
【図１】
0004416398.tif 000002
【図２】
0004416398.tif 000003
【図３】
0004416398.tif 000004
【図４】
0004416398.tif 000005
【図５】
0004416398.tif 000006
【図６】
0004416398.tif 000007
【図７】
0004416398.tif 000008
【図８】
0004416398.tif 000009
【図９】
0004416398.tif 000010
【図１０】
0004416398.tif 000011
【図１１】
0004416398.tif 000012
【図１２】
0004416398.tif 000013
【図１３】
0004416398.tif 000014
【図１４】
0004416398.tif 000015