(57)【要約】  ＵＭ（ユニファイドメッセージング）アプリケーションは、ＸＭＬ（拡張マークアップ言語）のプラットフォーム独立性および人間にとってのわかりやすさから利益を得る。ＵＭアプリケーションのＦＳＭ（有限状態機械）が、ＵＭソフトウェアコンポーネントに基づいて有効なメニュー状態を作成するためにＸＭＬ特徴を利用して作成される。ＵＭアプリケーションのコンテキストまたはセッティングであるＵＭソフトウェアコンポーネントにとって、ＸＭＬ条件付き属性は、ＵＭ  ＦＳＭのプロンプト、遷移、または文法ノードを条件付けする。ＸＭＬスニペットであるＵＭソフトウェアコンポーネントにとって、ＸＭＬインポート要素は、コンパイル時にＸＭＬスニペットを複製し、時間がかかりエラーを被りがちな手動コード複製の要件を回避する。外部メソッド、関数、変数、またはアクションなどのＵＭソフトウェアコンポーネントにとって、関数ラッピングＸＭＬツールは、ビルド時にそのような外部ＵＭソフトウェアコンポーネントの存在を妥当性検査し、実行時に同一バージョンの可用性を検証するためにバージョン情報を取り込む。
2010541387.tif 000002
【特許請求の範囲】
【請求項１】
ＵＭ（ユニファイドメッセージング）アプリケーションをプログラムする、コンピュータが実施するシステム（１２、２００、３００、４００、１０００）であって、
ユーザインターフェース（９３６、９４０）と、
複数のユーザプロンプトおよびユーザプロンプトの間の遷移によって定義されるメニュー状態を含むＵＭ  ＦＳＭ（有限状態機械）（２０）をＸＭＬで構成する、前記ユーザインターフェース（９３６、９４０）を介してアクセスされるプログラミング環境（１０、９１０）であって、各遷移は、プロンプトに対する特定のユーザ応答によって定義される、プログラミング環境（１０、９１０）と、
ＵＭソフトウェアコンポーネントと、
前記ＵＭソフトウェアコンポーネントに基づいて有効なメニュー状態を作成するのに前記プログラミング環境（１０、９１０）によって利用されるＸＭＬ特徴と
を含むことを特徴とするシステム。
【請求項２】
前記ＵＭソフトウェアコンポーネントは、ＵＭアプリケーション（１４）のセッティングを含み、前記ＸＭＬ特徴は、前記ＵＭ  ＦＳＭ（２０）の遷移を事前に決定する条件付き属性を含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記条件付き属性は、コンテキスト変数からなる属性を含むことを特徴とする請求項２に記載のシステム。
【請求項４】
前記条件付き属性は、構文木への解析に適する少なくとも１つの論理演算子によって組み合わされた複数のコンテキスト変数からなる属性を含むことを特徴とする請求項３に記載のシステム。
【請求項５】
前記ＵＭソフトウェアコンポーネントは、文法ノードを含み、前記ＸＭＬ特徴は、コマンド文法を選択的にアクティブにする条件付き要素属性を含むことを特徴とする請求項２に記載のシステム。
【請求項６】
前記ＵＭソフトウェアコンポーネントは、ＸＭＬスニペットを含み、前記ＸＭＬ特徴は、コンパイル時に前記ＸＭＬスニペットを複製するのに前記プログラミング環境（１０、９１０）によって利用されるインポート要素を含むことを特徴とする請求項１に記載のシステム。
【請求項７】
前記ＸＭＬスニペットは、プロンプトと非応答ユーザ発話に応答する遷移とを定義する音声メニューを含むことを特徴とする請求項６に記載のシステム。
【請求項８】
前記非応答ユーザ発話は、無音、つぶやき、および現在のコンテキストで適用可能ではない単語からなる群から選択された１つまたは複数の応答であることを特徴とする請求項７に記載のシステム。
【請求項９】
前記ＵＭソフトウェアコンポーネントは、前記ＵＭ  ＦＳＭ（２０）によって呼び出される外部構成要素を含み、前記ＸＭＬ特徴は、前記外部構成要素を妥当性検査する関数ラッパーを含むことを特徴とする請求項１に記載のシステム。
【請求項１０】
前記外部構成要素は、メソッド、関数、変数、およびアクションからなる群の１つであることを特徴とする請求項９に記載のシステム。
【請求項１１】
前記関数ラッパーは、ビルド時に前記構成要素を妥当性検査し、コンパイル中に不在の時にエラーを引き起こすことを特徴とする請求項９に記載のシステム。
【請求項１２】
ビルド時に存在する前記外部構成要素のバージョンが実行に使用可能な前記外部構成要素のバージョンと同一であることを比較する、前記ＵＭ  ＦＳＭ（２０）の実行時に呼び出される検証ツール（１５６）をさらに含むことを特徴とする請求項９に記載のシステム。
【請求項１３】
前記ユーザプロンプトと意味的に同等の複数のユーザ応答のうちの１つとしてセマンティックイベントを定義する自動化音声認識メニューをさらに含み、前記遷移は、特定のセマンティックイベントに依存することを特徴とする請求項１に記載のシステム。
【請求項１４】
セマンティックイベントをＤＴＭＦ（デュアルトーンマルチフリケンシ）キーパッド入力（２１０、３７０）として定義するＤＴＭＦインターフェース（２１０、３７０）をさらに含むことを特徴とする請求項１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的にはコンピュータシステムに関し、より具体的には、本発明は、柔軟に、きめ細かく、明示的な形でメニューアクティビティ、プロンプト、または遷移を指定し、ハードコーディングされた状態機械（state machine）または文書サーバのドメインの外部にあるファイル宣言を介してメニュー駆動通信アプリケーションの動的構成を容易にするシステムおよび方法に関する。
【背景技術】
【０００２】
通信テクノロジーは、情報時代のすばやく変化する要件の最先端にある。ほんの数年前には、ファックス機テクノロジーが、内容の電子符号化および電話回線を介するメッセージの送達によって、郵便で情報を受け取るという伝統的な形を脅かした。このテクノロジーは、数百年にわたって仕事が行われてきた形に革命をもたらした。ファックス機が遍在するようになるのとほぼ同時に、電子メールまたはｅメールとして知られる新しいテクノロジーが、以前に排他的にファックス機の領域にあった多くの応用に追い付き始めた。電子メール応用例が増加するにつれて、インスタントメッセージングサービスなどのさらに別の通信テクノロジーが現れ、これらは、やはり、より古い形の通信を脅かした。電子メールおよびファックス機などのテキスト駆動テクノロジーと一緒に、音声通信も、ハード・ワイヤード接続から現在の人気があり増加する無線テクノロジーに変化した。
【０００３】
多くのユーザが使用可能な広範囲の通信オプションを管理するために、ユーザの使用可能な多数の通信オプションを扱うサービスを提供するユニファイドメッセージング（ＵＭ）アプリケーションが、現れ始めた。ユニファイドメッセージングは、一般に、音声、ファックス、電子メールなどの統合を意味し、ユーザがこれらのメッセージのいずれにもどこでもいつでも最適な任意の端末からアクセスすることを可能にする。ユニファイドメッセージングシステムの１つの目標は、会社または他のエンティティ内で時間およびコストの節約を達成するために通信プロセスを単純化し、高速化することである。
【０００４】
現代の通信システムの１つの共通の特徴は、ユーザが、一般に、特定の通信プリファレンスに関してこれらのシステムを調整するために、異なるスタイルのメニューからさまざまな構成オプションを与えられることである。したがって、音声メール、ユニファイドメッセージング、および他のインテリジェント音声認識（ＩＶＲ：Intelligent Voice Recognition）アプリケーションは、通常はメニュー駆動のユーザインターフェースを有する。メニューは、例えば、電話機でエンドユーザに再生できる１つまたは複数のプロンプトからなる。ユーザは、ＤＴＭＦ（デュアルトーンマルチフリケンシ：dual tone multi frequency）キーパッドを使用することによるなど、１つまたは複数の方法によってメニュー選択を行う。ＤＴＭＦナビゲーション技法は、多数の入力オプションが存在する時に面倒であることが判明する可能性がある。さらに、ハンズフリー通信デバイスの使用の増加に伴って、ＤＴＭＦキーパッド入力は、便利でも適切でもない場合がある。
【０００５】
最近、ＡＳＲ（自動音声認識：automatic speech recognition）が、ＵＭメニューアプリケーションをより使いやすくするために、ある度合までＵＭメニューアプリケーションで使用されてきた。しかし、言語、方言、話し方、および個人の傾向の大きい変動を考慮すれば、ＡＳＲは、高いパーセンテージの失敗を避けるために多数の可能な談話シナリオを扱わなければならない。したがって、従来の状態機械などのハードコーディングされた解決策は、厄介なコード開発およびテストなしで新しいＵＭ特徴に対処することができないので、非実用的になる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願第１１／２３８５２１号明細書
【特許文献２】米国特許出願公開第２００７／００７３５４４号明細書
【特許文献３】米国特許出願第１１／０６８６９１号明細書
【特許文献４】米国特許出願公開第２００７／００５５７５１号明細書
【発明の概要】
【０００７】
以下では、本発明のいくつかの態様の基本的理解を提供するために、本発明の単純化された要約を提示する。この要約は本発明の広範囲の概要ではない。本発明の主要な／クリティカルな要素を識別すること、または本発明の範囲を区切ることは、意図されていない。その唯一の目的は、後で提示されるより詳細な説明の前置きとして、単純化された形で本発明のいくつかの概念を提示することである。
【０００８】
本発明は、ＵＭ（ユニファイドメッセージング）アプリケーションをプログラムするシステムおよび方法に関する。具体的に言うと、ＸＭＬ（拡張マークアップ言語）のプラットフォーム独立性および人間にとってのわかりやすさの利益が、ユーザプロンプトによって定義されるメニュー状態およびユーザ応答に従う別のメニュー状態への遷移のＦＳＭ（有限状態機械：finite state machine）を作るために、プログラミング環境によって使用される。一態様では、プログラミング環境は、ＸＭＬ特徴を使用して、ＵＭソフトウェアコンポーネントに基づいて有効なメニュー状態を作成する。これによって、複雑さの増したメニューを作成することができる。
【０００９】
前述のおよび関連する目的を達成するために、本発明のある種の例示的態様を、以下の説明および添付図面に関連して本明細書で説明する。これらの態様は、本発明を実践できるさまざまな形を示し、そのすべてが、本発明によって包含されること意図されている。本発明の他の利益および新規の特徴は、図面に関連して検討される時に本発明の以下の詳細な説明から明白になるであろう。
【図面の簡単な説明】
【００１０】
【図１】本発明の一態様による構成可能メッセージングシステムのプログラミング環境を示す概略ブロック図である。
【図２】図５のメッセージングシステムの例示的メニューオプションを示すブロック図である。
【図３】図２のメニューオプションの拡張を示す例示的描写である。
【図４】図３のメッセージングシステムによるメニュー階層を示す例示的描写である。
【図５】図１のプログラミング環境によるディレクトリ検索メニューのインポートに伴って生成されるメニュー階層を示すブロック図である。
【図６】図１のプログラミング環境の使用によって容易にされるメニュー階層を示す例示的ブロック図である。
【図７】本発明の一態様による文法エンジンによって機能強化された呼セッションを示すブロック図である。
【図８】図１のプログラミング環境によって作られた構成可能メッセージングシステムを示す概略ブロック図である。
【図９】本発明の一態様による例示的構成ファイルを示すブロック図である。
【図１０】本発明の一態様による例示的なユニファイドメッセージングシステムを示すブロック図である。
【図１１】メッセージプロンプトのローカライズを伴う例示的なユニファイドメッセージングシステムを示すブロック図である。
【図１２】本発明の一態様による適切なオペレーティング環境を示す概略ブロック図である。
【図１３】本発明が相互作用できるサンプルのコンピューティング環境を示す概略ブロック図である。
【発明を実施するための形態】
【００１１】
本発明は、ＵＭ（ユニファイドメッセージング）アプリケーションの一部として電子通信ダイアログの動的プログラミングおよび実行を可能にするシステムおよび方法に関する。具体的に言うと、ＸＭＬのプラットフォーム独立性および人間にとってのわかりやすさの利益が、ユーザプロンプトによって定義されるメニュー状態およびユーザ応答に従う別のメニュー状態への遷移のＦＳＭ（有限状態機械）を作るために、プログラミング環境によって使用される。プログラミング環境は、ＸＭＬ特徴を使用して、ＵＭソフトウェアコンポーネントに基づいて有効なメニュー状態を作成する。これによって、複雑さを高められたメニューを作成することができる。一態様では、ＵＭアプリケーションのコンテキストまたはセッティングであるＵＭソフトウェアコンポーネント（例えば、特定のユーザに関するＵＭサービスの可用性）について、プログラミング環境は、ＸＭＬ条件付き属性を使用して、プロンプト、遷移、またはＵＭ  ＦＳＭの文法ノードを条件付ける。これによって、高水準の判断を、調整された応答のためにメニュー構造に導入することができる。もう１つの態様では、ＸＭＬスニペット（snippet）のＵＭソフトウェアコンポーネントについて、プログラミング環境は、ＸＭＬインポート要素を利用してＸＭＬスニペットをコンパイル時に複製することができ、手動コード複製に関する、時間がかかりエラーを受けやすい要件が回避される。もう１つの態様では、外部メソッド、関数、変数、またはアクションなどのＵＭソフトウェアコンポーネントについて、プログラミング環境は、関数ラッピングＸＭＬツールを利用して、ビルド時にそのような外部ＵＭソフトウェアコンポーネントの存在を妥当性検査し、実行時に同一バージョンの可用性を検証するように働くバージョン情報を取り込む。これによって、システム完全性が保証される。
【００１２】
本願で使用される時に、用語「コンポーネント」、「ファイル」、「システム」、「オブジェクト」、「コントローラ」などは、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれであれ、コンピュータ関連のエンティティを指すことが意図されている。例えば、コンポーネントは、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および／またはコンピュータとすることができるが、これらに限定はされない。例えば、サーバで動作するアプリケーションとサーバとの両方を、コンポーネントとすることができる。１つまたは複数のコンポーネントが、１つのプロセスおよび／または実行のスレッド内に常駐することができ、１つのコンポーネントを、１つのコンピュータにローカライズし、かつ／または複数のコンピュータの間で分散させることができる。また、これらのコンポーネントは、その上にさまざまなデータ構造を格納されたさまざまなコンピュータ可読媒体から実行することができる。コンポーネントは、１つまたは複数のデータパケットを有する信号（例えば、ローカルシステム内、分散システム内、および／またはインターネットなどのネットワークにまたがって別のコンポーネントと信号を介して他のシステムと相互作用する１つのコンポーネントからのデータ）に従ってなど、ローカルプロセスおよび／またはリモートプロセスを介して通信することができる。
【００１３】
図１では、ＵＭ（ユニファイドメッセージング）実装システム１２のＵＭプログラミング環境１０が、柔軟なプログラミング構造、既存プログラム要素の再利用、およびプログラミング環境１０によって作られＵＭ実行マシン１６で使用される作られたＵＭアプリケーション１４の完全性の検証を容易にする。
【００１４】
例示的バージョンでは、エディタ１８は、ＵＭアプリケーションのすばやく変化する必要性を満足できるＵＭメニューＦＳＭ（有限状態機械）２０を作る。メッセージ処理のハードコーディングされた性質および制御要素の重荷を救済するために、ＸＭＬ（拡張マークアップ言語）が、ＦＳＭ  ２０を作成するのに使用される。ＸＭＬは、そのユーザが彼ら自身のタグを定義することを可能にするので拡張可能言語として分類される、汎用マークアップ言語である。ＸＭＬは、特にインターネットを介する、異なる情報システムにまたがる構造化データの共有を容易にする。したがって、その使用は、文書符号化の領域とデータ直列化の領域との両方を含む。
【００１５】
文書（または、アプリケーションと呼ばれる関連する文書のセット）は、会話ＵＭ有限状態機械２０を形成する。ユーザは、必ず、一時に１つの会話状態またはダイアログにいる。各ダイアログは、遷移すべき次のダイアログを決定する。遷移は、識別子を用いて指定され、この識別子は、次に使用すべき文書およびダイアログを定義する。ユーザは、エディタ１８を用いてユーザインターフェース（図示せず）を介して対話して、ＵＭプロンプト２２および遷移２４として示されたダイアログ／状態をアセンブルする。有利なことに、ユーザは、ＵＭ  ＸＭＬ定義ファイル２６として示されたＸＭＬスニペットを再利用することができる。というのは、プログラミング環境１０が、ＸＭＬサブルーチンおよびファイル包含のサポートを提供するからである。例えば、ＤＴＭＦスペリングを使用して「ユーザを見つける」ためのコードは、メニューのかなり複雑なシーケンスである（例えば、スペルを尋ねる第１のメニュー、確認する第２のメニュー、ユーザが再始動することを可能にするもう１つのメニュー、結果が見つからなかったことを知らせるもう１つのメニューなど）。さらに、「ユーザを見つける」というその特徴は、複数の位置で使用される（例えば、電話をかけるために連絡先を調べる、音声メールを転送するためにある人のアドレスを見つける、ミーティングの要求を転送するためにある人のアドレスを見つけるなど）。その結果、各コンテキストに正しいＸＭＬスニペットを複製する、頻繁な必要性がある。
【００１６】
そのために、符号２８に示された、＜FsmImport＞と呼ばれるＸＭＬ言語要素が、状態機械定義に含まれる。この要素は、「FsmModule」の名前と、オプションでファイル参照を含む。システムスタートアップ時に、FsmImportタグは、それが参照するモジュールに展開される。例えば、次のタグは、ファイル「Common.Fsm」内の「SearchMenus」と呼ばれるコードのＸＭＬブロックに置換される。  
<FsmImport file=’’common.Fsm’’ module=’’SearchMenus’/>
【００１７】
図２は、インポート特徴から利益を得ないアプリケーション３２の描写である。アプリケーション１８が、さまざまな異なる交換アイテムをユーザに「転送する」ことを可能にすると考えられたい。例えば、電子メールメッセージ、音声メールメッセージ、またはカレンダアイテムを転送することができる。これらのオプションのすべてが、ＸＭＬ定義の異なる「メニュー状態」を介して表される。というのは、それぞれが、多くの点で互いに実際に非常に異なり、独自のプロンプトおよび遷移を必要とするからである。しかし、転送されるメッセージを誰が受け取るべきかを解き明かすことになった時には、それぞれは、これに関して、同一でないとしても非常に似ている。転送に関する例示的ダイアログは、次のように進行することができる。  
システム：「これを誰に転送しますか？」
ユーザ：「トム」
システム：「ジョンとおっしゃったと思いますが、そうですか？」
ユーザ：「違う。トムと言った」
システム：「ああ、わかりました。トムですね」
ユーザ：「そうだ」
そのようなダイアログは、実際には非常に複雑になる可能性があり、複雑な形で対話する数十個の異なるメニューを必要とする。各ディレクトリ検索メニューは、図２でそれぞれ電子メール転送ステートメント３４として示された、ディレクトリ検索メニュー３６を介して電子メール転送済みステートメント３８へ進む、各転送構造内で複製されなければならない。音声メール転送ステートメント４０は、ディレクトリ検索メニュー４２の第１の複製を介して音声メール転送済みステートメント４４に移る。カレンダ転送ステートメント４６は、ディレクトリ検索メニュー４８の第２の複製を介してカレンダ転送済みステートメント５０に移る。
【００１８】
図３では、描写は、ランタイムにサブルーチンを「インポートする」機構を有することが、どのようにしてそのようなＸＭＬスニペットを複製する必要を回避するのかを示す。ＸＭＬ構成ファイルに現れる用語 FsmImportは、XML  FsmModuleを消費する。したがって、ディレクトリ検索メニュー３６の単一のコピーを再利用して、電子メール転送ステートメント３４を電子メール転送済みステートメント３８にリンクし、音声メール転送ステートメント４０を音声メール転送済みステートメント４４にリンクし、カレンダ転送ステートメント４６をカレンダ転送済みステートメント５０にリンクして、検索メニュー３２’を形成することができる。検索メニュー３２’のＸＭＬコードは、サンプル１として記述することができる。
【００１９】
【表１】
2010541387.tif 000003
【００２０】
第１０行は、ＸＭＬ定義を消費する有限状態機械エンジンに、Search.fsmという名前のファイルを調べ、これらのメニュー定義をインラインでEmailManagerコンテキストにインポートするように指示する。それが、ＩＤ  EmailForwardStatementを有するメニューが SearchMenuStartという名前のメニューを参照することを可能にするものであり、後者のメニューは、そうでなければ、参照されるファイルにのみ存在するので、EmailManagerコンテキストには現れない。
【００２１】
エディタ１８は、状態機械メニュー定義への条件付き属性６０の追加されたＸＭＬ要素を利用して、ＦＳＭ  ２０の追加の複雑さおよびプログラミングの簡単さを容易にすることもできる。図４を検討されたく、メニュー７０は、ユーザに再生すべき命令のセット（「プロンプト」）およびユーザ入力に基づいて次の状態が何であるべきか（「遷移」）によって作成される４つの状態だけからなる。図示の例では、メインメニュー状態７２は、ユーザに、音声メールについては「１」、電子メールについては「２」、カレンダについては「３」を押すように知らせる。ユーザが符号７４の「１」を押すこと、符号７６の「２」を押すこと、または符号７８の「３」を押すことに示されている、ユーザが押すものに依存して、ダイアログは、音声メールサブシステム８０、電子メールサブシステム８２、またはカレンダサブシステム８４のそれぞれの状態に移動する。
【００２２】
ＸＭＬを使用するこの情報の符号化は、この特定のメニュー７０について、次のサンプル２のとおりである。
【００２３】
【表２】
2010541387.tif 000004
【００２４】
各メニュー状態７２、８０、８２、８４が、「コンテキスト」内で生存することを了解されたい。メインメニュー状態７２は、この特定のメニューに関連するいくつかの情報を格納する、GlobalManagerと呼ばれるメモリ内のオブジェクトがあるという点で、「グローバルマネージャコンテキスト」内で生存する。GlobalManagerのコードの例は、次のサンプル３のとおりとすることができる。
【００２５】
【表３】
2010541387.tif 000005
【００２６】
図５では、ＵＭメニュー８６は、条件ＸＭＬ要素属性を有利に組み込んでいる。特徴設計が、発呼者がアクセスすることを許可するフラグを管理者が指定した場合に限って電子メールオプションが再生されることを要求することを考慮されたい。これは、メインメニュー７２状態が開始する前であっても、電子メールがイネーブルされるという条件８８として示されたトップレベル判断を導入するものと考えることができる。「Ｙｅｓ」フラグが条件８８からの遷移９０で存在する場合には、メイン状態７２は、以前に説明したように達成される。しかし、「Ｎｏ」フラグが条件８８からの遷移９２で存在する場合には、短縮されたメインメニュー状態９４に入る。ユーザは、音声メールについて「１」、またはカレンダについて「３」を入力するように促され、これは、それぞれ、「１」について音声メールサブシステム状態８０への符号９６での遷移、および「３」についてカレンダサブシステム状態８４への符号９８での遷移をもたらす。符号１００での「２」に関する遷移の場合には、「エラー！オプションは使用可能ではありません」の状態１０２に入る。これによって、条件８８は、より面倒でエラーを受けやすいメニュー構造を回避する。
【００２７】
ＵＭメニュー８６の符号化は、サンプル４に示されるように達成することができる。
【００２８】
【表４】
2010541387.tif 000006
【００２９】
この例を拡張するために、管理者が、条件的にカレンダアクセスを使用禁止にすることをも選択する場合にどうなるかを検討されたい。従来は、MainMenuAllOptions（メインメニュー全オプション）、MainMenuNoEmail（メインメニュー電子メールなし）、MainMenuNoCalendar（メインメニューカレンダなし）、およびMainMenuNoEmailNoCalendar（メインメニュー電子メールなしカレンダなし）など、４つのメニューが必要であるはずである。
【００３０】
対照的に、条件文の使用は、プロンプトおよび遷移をサンプル５に示されるように条件的に適用することを可能にする、ＸＭＬ定義に対する拡張を提供することによって、よりエレガントな手法を作る。
【００３１】
【表５】
2010541387.tif 000007
【００３２】
「IsEmailEnabled」という名前の変数は、グローバルマネージャコンテキスト内で生存するブーリアン（真／偽）である。ランタイムには、ＸＭＬ状態機械エンジンは、ＸＭＬを調べ、条件付き属性のランタイム値に基づいて、どの要素が「アクティブ」であるべきか否かを判断する。
【００３３】
条件属性言語は、かなり堅牢であり、コンテキスト変数を組み合わせるために論理演算子ＡＮＤ、ＯＲ、ＮＯＴ、ＧＴ（より大きい）、ＬＴ（より小さい）、および他のいくつかをサポートする。例えば、プロンプトを、condition=‘‘IsEmailEnabled AND IsVoicemailEnabled’’（条件＝「電子メールがイネーブルされているかＡＮＤ音声メールがイネーブルされているか」）などを用いてタグ付けすることができる。その式は、ランタイムに単純なｓｈｉｆｔ−ｒｅｄｕｃｅパーサを使用して構文木に解析され、評価される。
【００３４】
条件付き属性は、プロンプトおよび遷移に適用されるだけではなく、文法ノードにも適用される。したがって、音声メニューの反復中に条件的にコマンド文法をアクティブにすることができる。ＡＳＲ（自動化音声認識）の全般的な概念が、その開示が参照によってその全体を本明細書に組み込まれている、本願の譲受人が所有する、同時係属の特許文献１、２に記載されている。したがって、図１の符号１１０に示されたＡＳＲの使用は、音声メニューの各適当な部分にこのミニ状態機械をたやすくインポートする能力ならびに条件文を用いてより簡単に構成できることによって機能強化される。
【００３５】
ＡＳＲ１１０との相互作用の例である図６では、メイン状態１１２に入る時に何らかの音声応答がユーザから期待される。ＡＳＲ１１０のこの部分は、意味のある応答を得ることができない時を示す。Ｓｉｌｅｎｃｅ（沈黙）１状態１１４では、プロンプトは、ユーザがサイレントであるかどうか（例えば、「すみません、聞こえません」）を再生する。Ｓｉｌｅｎｃｅ２状態１１６が次に発生する場合には、プロンプトは、ユーザが２回続けてサイレントである場合に再生される（例えば、「すみません、まだ聞こえません」）。ユーザが、Ｓｉｌｅｎｃｅ１状態１１４の後につぶやいた場合には、Ｍｕｍｂｌｅ（つぶやき）１状態１１８で、プロンプトを再生する（例えば、「すみません、聞き取れませんでした」）。ユーザがメイン状態１１２の後に沈黙ではなくつぶやく場合には、もう１つのＭｕｍｂｌｅ１状態１２０が開始される。これに沈黙が続く場合には、Ｓｉｌｅｎｃｅ１状態１２２が呼び出される。その代わりに、別のつぶやきが続く場合には、Ｍｕｍｂｌｅ２状態１２４が、ユーザが２回続けて沈黙する場合にプロンプトを再生させる（例えば、「すみません、何をおっしゃっているのかわかりません。言えることは次のとおりです…」）。その後、ヘルプ状態１２６が、このメニューのヘルププロンプトを与える。その代わりに、ユーザからの応答が、理解できるがこのメニューには不適切である場合があり、これは、ＩｎｖａｌｉｄＣｏｍｍａｎｄ（無効コマンド）状態１２８にプロンプトを与えさせる（例えば、「ユーザが言ったことは理解するが、ユーザの言ったことは現在有効なオプションではない」、「すみません、あなたは主催者ではないので、この会合をキャンセルすることはできません」、ユーザが最後に言ったことを繰り返す）。多すぎる失敗した試み（例えば、一連の３回の沈黙またはつぶやき）の後に、ＳｐｅｅｃｈＥｒｒｏｒ（音声エラー）状態１３０が、ユーザにこの失敗について知らせ、回復アクションを行う（例えば、「すみません、力になることができません。メインメニューに戻ります」）。
【００３６】
図７では、つぶやきまたは沈黙ではなく意味のある応答がユーザから入手された場合に、インポートおよび条件文によって機能強化されたもう１つの態様は、ユーザの音声が状態機械レイヤにどのように伝えられ、メニューレベルでどのように消費されるかである。例えば、「ｙｅｓ（はい）」と言う多数の形がある。「ｙｅａｈ、ｙｅｐ、ｙｕｐ、ｙｅｓｓｉｒ、ＯＫ、ｓｕｒｅ」などということができ、これらのすべてが、意味的には「ｙｅｓ」と同等であり、符号１３２、１３４、および１３６に示されている。「ＳＭＬ」すなわちセマンティックマークアップ言語を使用することによって、文法エンジン１３８内のコマンド文法は、「セマンティックイベント」の値を定義し、このセマンティックイベントは、Ｙｅｓ／Ｎｏメニュー１４０として示された状態機械に通信され、この状態機械は、ダイアログＡ１４２についてＲｅｃｏＹｅｓ、ダイアログＢ１４４についてＲｅｃｏＮｏによって反応する。このメニューは、絶対にユーザが実際に言ったものを知らない。
【００３７】
図１に戻って、インポート特徴および条件文特徴の利益を伴って、ＡＳＲ１１０、ＸＭＬコード１４６、メディアファイル１４８、クラス定義１５０、およびリソースファイル１５２からなるＵＭ  ＦＳＭ２０が作られる。ＸＭＬを用いるコーディングは、複数の利益を有するが、しばしば、変数または参照されるファイルが欠けていることがありえる。そのような省略は、ＵＭアプリケーション１４を配置につける処理のかなり遅くになってから検出されるはずである。したがって、アクション／変数ラッピングツール１５６は、ビルド時コンパイラ１５８として示されたＣ＃コンパイルフェーズの一部である。ラッピングツール１５６は、状態機械ＸＭＬファイルを消費し、ＵＭビルド時バイナリ１６０として示されたラッパーを生成し、このＵＭビルド時バイナリ１６０は、関連するマネージャに関する既存のＣ＃（コード）定義１６１で定義されたメソッドおよび関数を参照する。例えば、ストリングを返すNextMessageという名前のメソッドを有するEmailManagerという名前のクラスを与えられれば、このメソッドの例示的ラッパーは、次のサンプル６に示されているものとすることができる。
【００３８】
【表６】
2010541387.tif 000008
【００３９】
行１のパーツ「string NextMessage」および行３の「NextMessage」は、ＸＭＬ定義ファイルで宣言され、上のラッパーを生成するのに使用されるので、ラッパーの行３は、通常のコンパイルフェーズ中にクラスEmailManagerが実際にNextMessageというメソッドを有することを保証する。さらに、ラッパーの行３は、メソッドNextMessageがストリングを返すことを保証する。両方のチェックが満足されない場合には、ラッパーは、コンパイルエラーを発生させる。
【００４０】
したがって、ラッピングツール１５６の使用は、ＸＭＬ定義ファイルがやはりコンパイルされるコード１６１に実際には存在しないメソッドまたは変数を参照できないことと、それらのメソッドおよび変数が正しい型（例えばＢｏｏｌｅａｎ）を有することとを保証する。ＸＭＬ定義ファイルが、存在しないメソッドまたは変数を参照する場合には、ラッピングツール１５６は、これらのラッパーを生成し、その後、「コンパイル」フェーズで、ビルドブレークを生成する。成功裏にコンパイルされたならば、ビルド時ＵＭバイナリ１６０が、ＵＭ定義ファイル１６２と共にプログラミング環境１０からのエクスポートのために作成される。
【００４１】
例えば、EmailManagerクラスが、NextMessageという名前のメソッドを含み、ＸＭＬ定義が、これをNextMessageItemと呼ばれるものとして識別し、ツールが、コードラッパーを適切に生成する場合に、Ｃ＃コンパイルフェーズは、ビルドブレークを生じるはずである。その後、「エラー：クラスEmailManagerはNextMessageItemの定義を含まない（ERROR: class EmailManager does not contain a definition for NextMessageItem）」などのコンパイル時エラーが生成される。そのような実施態様の例をサンプル７として与える。
【００４２】
【表７】
2010541387.tif 000009
【００４３】
【表８】
2010541387.tif 000010
【００４４】
【表９】
2010541387.tif 000011
【００４５】
検証の第２部分は、ＵＭアプリケーション１４がインストールされ、ＵＭ実行マシン１６で動作している時に発生する。ＵＭアプリケーション１４がスタートアップする時に、ＵＭアプリケーション１４は、ＸＭＬ構成ファイル１６２を読み取る。ＵＭアプリケーション１４が、例えばEmailManager内で、EmailManagerクラスの何らかのメソッドを呼び出すＸＭＬ定義に出くわす時に、本件特許出願人の  ．Ｎｅｔプラットフォームによって提供される．ＮＥＴリフレクション１６４が、ＵＭバイナリ１６０内で生成されたラッパーを見つける。とりわけ、．ＮＥＴリフレクション１６４は、Ｃ＃で記述されたプログラムが、Ｃ＃で記述された別のプログラムのプログラム構造を調べることを可能にする。例えば、あるプログラムが、別のプログラムのバイナリ内容を調べ、その関数およびそれらの名前のすべてを列挙することができる。そのラッパーが存在しない場合には、ＸＭＬファイルは、ラッパーを生成するためにビルド時に使用されたものではなく、バージョン不一致エラーが与えられる。そうでない場合には、符号１６６に示されているように、有効なＸＭＬおよびバイナリが、実行を許可される。
【００４６】
．Ｎｅｔリフレクションの使用は、ラッピングフェーズおよびコンパイルフェーズ中にラッピングツール１５６によって使用可能にされる検証を補足する。どちらの場合でも、サンプル６のラッパーコードの例について、ＦＳＭ定義は、EmailManagerと呼ばれるクラスがNextMessageと呼ばれるメソッドを有することを判定するために調べられる。ビルド時に行われるラッピングフェーズでは、この検証コードが生成される。ランタイムに行われるリフレクションフェーズでは、．ＮＥＴリフレクション１６４は、ラッパー関数が実際にＵＭバイナリ１６０に存在することを保証する。したがって、不正なバージョンまたは破壊されたバージョンを使用する試みを防ぐことができる。
【００４７】
図８では、構成可能メッセージングシステム２００を、プログラミング環境１０によって作ることができる。システム２００は、さまざまな通信アプリケーションの処理を容易にするために１つまたは複数のユーザおよび／または自動化されたアプリケーション２２０と相互作用するメッセージングコンポーネント２１０を含む。メッセージングコンポーネント２１０を、ユニファイドメッセージングアプリケーション、音声メール処理、または実質的にすべてのタイプの音声認識アプリケーションなどのさまざまなアプリケーションに関連付けることができる。通常、メッセージングコンポーネント２１０との相互作用は、ＤＴＭＦ（デュアルトーンマルチフリケンシ）入力を介するが、音声入力またはテキスト入力などの他のタイプの入力も動作することができる。
【００４８】
一般に、構成ファイル２３０は、ユーザまたはアプリケーション２２０とのインターフェースダイアログセッション２４０を駆動する命令またはコマンドのグループを格納する。そのような命令またはコマンドは、ダイアログセッション２４０に、例えばユーザまたはアプリケーション２２０との相互作用を集合的に制御する、メニューの１つまたは複数のアイテムを生成させ、処理させることができる。例えば、第１アイテムを、セッションを識別する挨拶に関係付けることができ、第２アイテムは、パスワード入力を要求することができ、第３アイテムは、音声メールメッセージをメッセージングコンポーネント２１０に関連するファイルに記録することを要求することができる。以下でより詳細に説明するように、構成ファイルは、ダイアログセッション２４０を制御し、最終的にメッセージングコンポーネントがユーザまたはアプリケーション２２０とどのように相互作用するのかを制御する、アクティビティ、プロンプト、または遷移を指定することができる。
【００４９】
構成ファイル２３０は、一般に、例えば、ダイアログセッション２４０でどのアクティビティを達成すべきかおよび所与のアクティビティが完了するか打ち切られた後にどの状態に遷移すべきかを指定する。状態は、状態コントローラ２５０によって管理され、状態コントローラ２５０は、メッセージ処理コンポーネント２６０（またはサービスなどのコンポーネント）に、あるアクション（例えば、音声メールの記録、メッセージの再生、ユーザ入力の検査など）をシステム２００内で実行するように指示する。構成ファイル２３０は、管理者が、複数の多様な通信アプリケーションのメッセージングコンポーネント２１０の機能性を動的に適合させることを可能にする。これは、メッセージングコンポーネント２１０の状態を制御するために協力するＸＭＬ（拡張マークアップ言語）または他のタイプの言語でダイアログ相互作用またはコマンドを指定することによって達成される。この場合に、構成ファイル２３０内の命令は、状態コントローラ２５０からハードコーディングされた状態実施態様を除去し、変更を行った後にも状態コントローラを変更する必要なしに管理者が状況を変更するために適合することを可能にする。
【００５０】
他の状態への遷移は、構成ファイル２３０内に含まれるので、ダイアログ制御を、システム２００の適当な状態またはアクションを判定するための他のコンピュータ／コンポーネントとの相互作用を緩和しながら所与のダイアログセッション２４０について粒状レベルで動的に指定する（例えば、外部文書に対してではなくファイル内のグループとして遷移を指定する）ことができる。したがって、本発明は、ダイアログセッション２４０のメニューおよびその遷移を、状態コントローラ２５０内でハードコーディングするのではなく、ＸＭＬファイル（または他のタイプ）で構成することを容易にする。この特徴は、拡張性を容易にし、ここで、新しいメニューおよび遷移を、メッセージングコンポーネント２１０に対する変更なしで追加することができる。また、構成ファイル２３０は、アプリケーション開発時間を減らし、カスタマイズを可能にし、これによって、管理者およびエンドユーザが潜在的に彼らの必要性に合わせて新しいメニューを追加し、既存メニュー遷移を変更することができる。他の態様は、メッセージングシステム２００の基礎になるアプリケーション実装を変更されないままにすることができると同時に、単に１つまたは複数の構成ファイル２３０を変更することによって、他の言語（例えば、ドイツ語、フランス語、英語など）のプロンプト、メニュー、および遷移を追加するための言語サポートを含む。例示的構成ファイルの追加の諸態様は、参照によってその開示全体が本明細書に組み込まれている、本願の譲受人が譲渡する同時係属の特許文献３、４に記載されている。
【００５１】
ここで図９を参照すると、本発明の態様による例示的な構成ファイル２７０が示されている。一般に、構成ファイル２７０は、アクティビティ要素、プロンプト要素、および遷移要素を含み、これらの要素は、符号２８０に示された１つまたは複数のダイアログコマンドグループ（例えば、グループ１０１、１０２、１０３など）に編成され、そのようなグループは、通信システムまたはメッセージングシステムと相互作用するためのユーザインターフェースまたはメニューの動作を指定する。例えば、ユニファイドメッセージングの例に関するテレフォニユーザインターフェース（ＴＵＩ）は、ＸＭＬ構成ファイルで記述される。「ｉｄ」属性を有する要素は、アクティビティを記述する。例えば、Ｍｅｎｕ（メニュー）、Ｒｅｃｏｒｄ（レコード）などが、アクティビティの例である。プロンプト要素は、エンドユーザに再生されるプロンプトを表し、遷移要素は、次に実行されるアクティビティおよび遷移の前に行われるアクションを記述する。
【００５２】
一般に、ダイアログアプリケーションの１つの可能な実施態様は、各状態が構成ファイル２７０内のアクティビティにマッピングされた状態機械を含む。状態遷移を、例えばＸＭＬ内の遷移要素にマッピングすることができる。アクション属性は、状態遷移の直前に実行すべきアクションを表す。また、サブ状態機械遷移もこのモデルでサポートされる。例えば、Record Voicemail（音声メールを記録せよ）は、メニューおよびレコードを含む多数のサブアクティビティを有する親アクティビティとすることができる。例えば、ユニファイドメッセージングアプリケーションがエンドユーザから呼を受信し、その呼に関するＸＭＬ構成（メモリ内にプリロードされる）を、使用することができ、アクティビティ状態機械全体を、その呼について実行することができる。構成をロードすることのこの呼ごとの粒度は、管理者およびエンドユーザが他の言語に拡張し、カスタマイズし、サポートするための強大な柔軟性を与える。
【００５３】
図１０に移ると、本発明の態様による例示的なユニファイドメッセージングシステム３００が示されている。この例では、システム３００は、ユニファイドメッセージングシステム３００がＰＢＸ３１０およびＳＩＰ（Session Initiation Protocol）ゲートウェイ３２０のコンテキストでどのように協力するのかを示す。ゲートウェイ３２０は、呼３３０（有線または無線）を、ＳＩＰプロトコルを使用してＩＰネットワーク３４０を介してユニファイドメッセージングシステム３００にルーティングすることができる。これは、ユニファイドメッセージングシステム３００を、ＰＢＸ３１０と同一位置に置かないことを可能にする。他のコンポーネントは、メッセージを格納するメールボックスサーバ３５０およびそれらのメッセージを管理するアクティブディレクトリ３６０を含むことができる。図示されているように、ユニファイドメッセージングシステム３００は、着呼３３０を処理するためのテキスト・トゥ・スピーチ（ＴＴＳ）および音声認識エンジン３７０などのコンポーネントを含むことができるが、ＤＴＭＦ制御などの他のタイプのコンポーネントを設けることもできる。呼３３０を生成するユーザ（またはアプリケーション）と相互作用するためにインターフェースセッションを作成するために構成ファイルをロードし、実行する、ユニファイドメッセージングサービスまたはサービス（図示せず）を提供できることを、本発明の開示の利益と共に了解されたい。これは、システム３００の状態動作を管理するさまざまなオブジェクトおよびクラスの動作を含むことができる。
【００５４】
図１１では、図１のプログラミング環境１０が、参照によってその開示の全体が本明細書に組み込まれている、本願の譲受人が譲渡する同時係属の特許文献１、２に記載されたメッセージプロンプトのローカライズを有利にサポートし、機能強化する。システム４００は、コンピュータ４０２、コンピュータ実行可能コード４０４、クラス定義テーブル４０６、リソースファイル４０８、およびローカライズされたメディアファイル４１０を有する。コンピュータ４０２は、プロンプトをレンダリングする方法（例えば、話されたプロンプトを表すオーディオファイルを再生する）を指定するコード４０４を実行する。システム４００は、有利に、コード４０４に対する変更に一切影響せずに、リソースストリングおよびメディアファイルを別々に個別にローカライズされた言語に変更し、または翻訳することを可能にする。この重要な利益は、複数の異なるローカライズされた言語での使用のために、コード４０４をプログラマによって１回記述することを可能にする。コード４０４が作成され、リソースストリングが特定の言語（例えば、英語）で作成された後に、翻訳者は、リソースストリングをレビューし、リソースストリングのローカライズされた翻訳（例えば、フランス語）を提供することができる。次に、翻訳は、フランス語についてローカライズされたリソースファイルに保存される。同様に、翻訳者は、リソースストリングおよびリソースストリング断片の話されたメディアクリップをローカライズされた言語（例えば、フランス語）で録音し、その録音をローカライズされたメディアファイルとして保存することができ、このローカライズされたメディアファイルは、コード４０４によって呼ばれた時にローカライズされたメディアクリップを再生する時に、コンピュータ４０２によってアクセスされる。
【００５５】
例えば、コード４０４は、ＫＥＹ変数に割り当てられた値に基づいてVariableNameに割り当てられる名前（例えば、「Messages」）を作成することを指定する。コンピュータ４０２は、クラス定義テーブル４０６にアクセスして、ＫＥＹ変数の値に対応する文法変数（例えば、「_Plural」）を識別する。コード４０４は、新しい名前（例えば、「Messages_Plural」）を作成し、その新しい名前をVariableNameに割り当て、VariableName（即ち、「Messages_Plural」）に対応するメディアファイルを識別するようにコンピュータ４０２に指示する。コンピュータ４０２は、リソースファイル４０８にアクセスし、VariableNameに対応するリソースストリングを突き止める。コンピュータ４０２は、リソースストリングを分析し、そのリソースストリングに対応するメディアファイルおよびそのリソースストリング内のメディアファイルの順序を判定する。コンピュータ４０２は、ローカライズされたメディアファイル４１０からそのリソースストリングに対応するメディアファイルにアクセスする。次に、コード４０４は、そのリソースストリング内で識別された文法的に正しい順序でローカライズされたメディアファイルをレンダリングするようにコンピュータ４０２に指示する。
【００５６】
１つのバージョンでは、クラス定義テーブル４０６は、接頭辞、接尾辞、またはその組合せとすることができる文法的変数を含む。次に、この文法的変数は、VariableNameに割り当てられた名前に付加され、ＫＥＹの数値に関連する文法的に正しいリソースストリングリソースファイルに対応するようになる。例えば、ＫＥＹの値が「１」である場合に、関連するリソースストリングは、単数の値について文法的に正しいストリングになる（例えば、「You have 1 new message」）。ＫＥＹの値が「５」である場合には、関連するリソースストリングは、複数の値について文法的に正しいストリングになる（例えば、「You have 5 new messages」）。また、ＫＥＹの値が「０」である場合には、関連するリソースストリングは、０またはヌルの値について文法的に正しいストリングになる（例えば、「You have no new messages」）。
【００５７】
もう１つのバージョンでは、リソースファイル４０８内で突き止められるリソースストリングは、コード４０４とは別々であり、コード４０４の変更または再コンパイルを必要とせずに、ローカル言語翻訳者によって非英語言語に翻訳され得る。翻訳中に、リソースストリングおよび数値変数を、ローカル言語に翻訳することができ、リソースストリングおよび数値を、翻訳された言語の文法的に正しい順序で再配置することができる。例えば、英語リソースストリング「You have」｛０｝「new messages」の文法的に正しい順序および時制は、２つのテキスト断片「You have」および「new messages」を含み、この例では、「｛０｝」は、複数数値である。しかし、このリソースがフランス語に翻訳される場合には、１つの文法的に正しい順序および時制は、｛０｝「nouveau messages sont arrivesであり、ここで、数値変数は、文の始めに配置され、複数のメッセージが受け取られたことを述べる。
【００５８】
もう１つのバージョンでは、メディアファイルは、リソースストリングおよびリソースストリングに対応するリソースストリング断片のローカライズされた録音を含むことができる。メディアファイルを、コード４０４の変更または再コンパイルを必要とせずに、録音し、コード４０４によって利用することもできる。
【００５９】
したがって、先行する開示の利益と共に、諸態様がＤＴＭＦのみのＵＭアプリケーション、ＡＳＲのみのＵＭアプリケーション、またはハイブリッドＤＴＭＦ／ＡＳＲ  ＵＭアプリケーションを含むことができることを了解されたい。
【００６０】
図１２を参照すると、本発明のさまざまな態様を実施する例示的環境９１０は、コンピュータ９１２を含む。コンピュータ９１２は、処理ユニット９１４、システムメモリ９１６、およびシステムバス９１８を含む。システムバス９１８は、システムメモリ９１６を含むがこれに限定はされないシステムコンポーネントを処理ユニット９１４に結合する。処理ユニット９１４は、さまざまな入手可能なプロセッサのいずれとすることもできる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを、処理ユニット９１４として使用することもできる。
【００６１】
システムバス９１８は、１１ビットバス、ＩＳＡ（Industrial Standard Architecture）、ＭＳＡ（Micro-Channel Architecture）、ＥＩＳＡ（Extended ISA）、ＩＤＥ（Intelligent Drive Electronics）、ＶＬＢ（VESA Local Bus）、ＰＣＩ（Peripheral Component Interconnect）、ＵＳＢ（Universal Serial Bus）、ＡＧＰ（Advanced Graphics Port）、ＰＣＭＣＩＡ（Personal Computer Memory Card International Association bus）、およびＳＣＳＩ（Small Computer Systems Interface）を含むがこれらに限定はされない任意のさまざまな使用可能なバスアーキテクチャを使用する、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および／あるいはローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。
【００６２】
システムメモリ９１６は、揮発性メモリ９２０および不揮発性メモリ９２２を含む。スタートアップ中などにコンピュータ９１２内の要素の間で情報を転送する基本ルーチンを含む基本入出力システム（ＢＩＯＳ）が、不揮発性メモリ９２２に格納される。限定ではなく例示として、不揮発性メモリ９２２は、ＲＯＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリを含むことができる。揮発性メモリ９２０は、外部キャッシュメモリとして働くＲＡＭを含む。限定ではなく例示として、ＲＡＭは、ＳＲＡＭ（synchronous RAM）、ＤＲＡＭ（dynamic RAM）、ＳＤＲＡＭ（synchronous DRAM）、ＤＤＲ  ＳＤＲＡＭ（double data rate SDRAM）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、ＳＬＤＲＡＭ（Synchlink DRAM）、およびＤＲＲＡＭ（direct Rambus RAM）などの多数の形で入手可能である。
【００６３】
コンピュータ９１２は、リムーバブル／ノンリムーバブル、揮発性／不揮発性のコンピュータ記憶媒体をも含む。図１２に、例えば、ディスクストレージ９２４を示す。ディスクストレージ９２４は、磁気ディスクドライブ、フロッピディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックなどのデバイスを含むが、これらに限定はされない。さらに、ディスクストレージ９２４は、コンパクトディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）、追記型ＣＤドライブ（ＣＤ−Ｒドライブ）、書換可能ＣＤドライブ（ＣＤ−ＲＷドライブ）、またはディジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）などの光ディスクドライブを含むがこれらに限定はされない他の記憶媒体とは別々にまたはこれらと組み合わせて記憶媒体を含むことができる。システムバス９１８へのディスクストレージデバイス９２４の接続を容易にするために、インターフェース９２６などのリムーバブルインターフェースまたはノンリムーバブルインターフェースが、通常は使用される。
【００６４】
図１２が、ユーザと適切なオペレーティング環境９１０に記載の基本コンピュータリソースとの間の媒介として働くソフトウェアを記述することを了解されたい。そのようなソフトウェアは、オペレーティングシステム９２８を含む。オペレーティングシステム９２８は、ディスクストレージ９２４に格納され得るが、コンピュータシステム９１２のリソースを制御し、割り当てるように働く。システムアプリケーション９３０は、システムメモリ９１６またはディスクストレージ９２４のいずれかに格納されたプログラムモジュール９３２およびプログラムデータ９３４を介してオペレーティングシステム９２８によるリソースの管理を利用する。本発明を、さまざまなオペレーティングシステムまたはオペレーティングシステムの組合せを用いて実施できることを了解されたい。
【００６５】
ユーザは、入力デバイス９３６を介してコンピュータ９１２にコマンドまたは情報を入力する。入力デバイス９３６は、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、ＴＶチューナカード、ディジタルカメラ、ディジタルビデオカメラ、ウェブカメラなどを含むが、これらに限定はされない。これらおよび他の入力デバイスは、システムバス９１８を介し、インターフェースポート９３８を介して処理ユニット９１４に接続される。インターフェースポート９３８は、例えば、シリアルポート、パラレルポート、ゲームポート、およびＵＳＢを含む。出力デバイス９４０は、入力デバイス９３６と同一タイプのポートのうちのいくつかを使用する。したがって、例えば、ＵＳＢポートを使用して、コンピュータ９１２に入力を供給し、コンピュータ９１２から出力デバイス９４０に情報を出力することができる。出力アダプタ９４２は、他の出力デバイス９４０の中でも、モニタ、スピーカ、およびプリンタなど、特殊なアダプタを必要とするいくつかの出力デバイス９４０があることを示すために提供される。出力アダプタ９４２は、限定ではなく例示として、出力デバイス９４０とシステムバス９１８との間の接続の手段を提供するビデオカードおよびサウンドカードを含む。リモートコンピュータ９４４など、他のデバイスおよび／またはデバイスのシステムが、入力機能と出力機能との両方を提供することに留意されたい。
【００６６】
コンピュータ９１２は、リモートコンピュータ９４４などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ９４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの機器、ピアデバイスまたは他の一般的なネットワークノードなどとすることができ、通常は、コンピュータ９１２に関して説明した要素の多くまたはすべてを含む。簡潔にするために、メモリストレージデバイス９４６だけを、リモートコンピュータ９４４と共に示す。リモートコンピュータ９４４は、論理的にはネットワークインターフェース９４８を介してコンピュータ９１２に接続され、物理的には通信接続９５０を介して接続される。ネットワークインターフェース９４８は、ＬＡＮおよびＷＡＮなどの通信ネットワークを包含する。ＬＡＮテクノロジーは、ＦＤＤＩ（Fiber Distributed Data Interface）、ＣＤＤＩ（Copper Distributed Data Interface）、イーサネット（登録商標）／ＩＥＥＥ８０２．３、トークンリング／ＩＥＥＥ８０２．５などを含む。ＷＡＮテクノロジーは、ポイントツーポイントリンク、ＩＳＤＮおよびその変形などの回線交換網、パケット交換網、およびディジタル加入者回線（ＤＳＬ）を含むが、これらに限定はされない。
【００６７】
通信接続９５０は、ネットワークインターフェース９４８をバス９１８に接続するのに使用されるハードウェア／ソフトウェアを指す。通信接続９５０は、図を明瞭にするためにコンピュータ９１２の内部に図示されているが、コンピュータ９１２の外部にすることもできる。ネットワークインターフェース９４８への接続に必要なハードウェア／ソフトウェアは、例示のみのために、通常の電話級モデム、ケーブルモデム、およびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、ならびにイーサネットカードなどの内部技術および外部技術を含む。
【００６８】
図１３は、本発明が相互作用できるサンプルのコンピューティング環境１０００の概略ブロック図である。システム１０００は、１つまたは複数のクライアント１０１０を含む。クライアント１０１０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。システム１０００は、１つまたは複数のサーバ１０３０をも含む。サーバ１０３０も、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。サーバ１０３０は、例えば、本発明を使用することによって変換を実行するスレッドを収容することができる。クライアント１０１０とサーバ１０３０との間の１つの可能な通信を、複数のコンピュータプロセスの間で伝送されるように適合されたデータパケットの形とすることができる。システム１０００は、クライアント１０１０とサーバ１０３０との間の通信を容易にするのに使用できる通信フレームワーク１０５０を含む。クライアント１０１０は、クライアント１０１０にローカルに情報を格納するのに使用できる１つまたは複数のクライアントデータストア１０６０に動作可能に接続される。同様に、サーバ１０３０は、サーバ１０３０にローカルに情報を格納するのに使用できる１つまたは複数のサーバデータストア１０４０に動作可能に接続される。
【００６９】
上記で説明したものは本発明の例を含む。本発明を説明するためにコンポーネントまたは方法論のすべての考えられる組合せを記述することは不可能であるが、当業者は、本発明の多数のさらなる組合せおよび置換が可能であることを認めるであろう。したがって、本発明は、特許請求の範囲の趣旨および範囲に含まれる、代替形態、修正形態および変形形態のすべてを包含することが意図されている。さらに、用語「includes」がこの詳細な説明または特許請求の範囲のいずれかで使用される範囲で、そのような用語は、用語「comprising」が特許請求の範囲で接続させる語として使用される時に解釈されるものに似た形で包含的であることが意図されている。
【００７０】
参照によって本明細書に組み込まれる全ての特許、刊行物または他の開示材料は、全体的または部分的に、組み込まれる材料が本開示で示される既存の定義、言明または他の開示材料と衝突しない範囲に限り本明細書に組み込まれることを了解されたい。従って、必要な範囲で本明細書で明示的に示された開示は、参照によって本明細書に組み込まれた全ての衝突する材料に取って代わる。参照によって本明細書に組み込まれる、本明細書で示される既存の定義、言明、または他の開示材料と衝突する、全ての材料またはその一部は、その組み込まれる材料と既存の開示材料との間に衝突が生じない範囲で組み込まれる。
【図１】
2010541387.tif 000012
【図２】
2010541387.tif 000013
【図３】
2010541387.tif 000014
【図４】
2010541387.tif 000015
【図５】
2010541387.tif 000016
【図６】
2010541387.tif 000017
【図７】
2010541387.tif 000018
【図８】
2010541387.tif 000019
【図９】
2010541387.tif 000020
【図１０】
2010541387.tif 000021
【図１１】
2010541387.tif 000022
【図１２】
2010541387.tif 000023
【図１３】
2010541387.tif 000024
【国際調査報告】
2010541387.tif 000025
2010541387.tif 000026