(57)【要約】【課題】ＩＶＲシステム・クローリングのためのシステムおよび方法を提供する。【解決手段】対話式音声応答システム・クローリングのためのシステムを提供する。このシステムはＩＶＲクローラを備え、ＩＶＲクローラは、性質の点でＶＸＭＬ、設計仕様、ＤＴＭＦ、またはＡＳＲ／ＮＬＳＲスピーチベースであってよく、ＩＶＲメニューを辿って可能な対話パスを発見し、これらのパスに基づいてテスト・ケースを作成する。このシステムは、動作中にＩＶＲクローラによって作成されたテスト・ケースを記憶するデータベースを備える。ＩＶＲクローラを使用してシステム移行を実施する方法も提供する。【選択図】図５
2017188886.tif 000002
【特許請求の範囲】
【請求項１】
対話式音声応答システム・クローリングのためのシステムであって、
メモリに記憶された複数のプログラミング命令を少なくとも備え、ネットワーク接続されたコンピューティング・デバイスのプロセッサ上で動作する、ＩＶＲクローラであって、ネットワークを介してＩＶＲシステムに接続し、複数の利用可能なＩＶＲメニュー・オプションを識別し複数の入力選択を前記ＩＶＲシステムに提供して前記メニューの中を進むことによってＩＶＲメニュー・パスを辿るように構成され、特定のＩＶＲメニュー・パスを辿る際に使用された一連のプロンプトおよび入力に少なくとも部分的に基づいて複数のＩＶＲテスト・ケースを作成するように構成されたＩＶＲクローラと、
メモリに記憶された複数のプログラミング命令を少なくとも備え、コンピューティング・デバイスのプロセッサ上で動作する、データベースであって、ＩＶＲクローラによって作成されたテスト・ケースを記憶するように構成されたデータベースと、を備える、システム。
【請求項２】
前記ＩＶＲクローラはＶＸＭＬベースのクローラである、請求項１に記載のシステム。
【請求項３】
メモリに記憶された複数のプログラミング命令を備え、ネットワーク接続されたコンピューティング・デバイスのプロセッサ上で動作する、ＶＸＭＬブラウザをさらに備え、前記ＶＸＭＬブラウザは、ネットワークを介して複数のＶＸＭＬデータをＶＸＭＬベースのクローラに提供するように構成される、請求項２に記載のシステム。
【請求項４】
前記ＶＸＭＬベースのクローラは、複数のＶＸＭＬデータを前記ＶＸＭＬブラウザから受け取り、受け取った前記ＶＸＭＬデータに少なくとも部分的に基づいてＩＶＲメニュー・パスを辿る、請求項３に記載のシステム。
【請求項５】
前記ＩＶＲクローラは設計ベースのクローラである、請求項１に記載のシステム。
【請求項６】
前記設計ベースのクローラはＩＶＲについての設計仕様を処理する、請求項５に記載のシステム。
【請求項７】
前記ＩＶＲクローラはＤＴＭＦベースのクローラである、請求項１に記載のシステム。
【請求項８】
前記ＤＴＭＦベースのクローラは、電話ベースのネットワークを介して発呼することによってＩＶＲシステムに接続する、請求項７に記載のシステム。
【請求項９】
前記ＤＴＭＦベースのクローラは、ＤＴＭＦオーディオ・トーンを生成することによって入力選択を前記ＩＶＲシステムに提供する、請求項８に記載のシステム。
【請求項１０】
前記ＩＶＲクローラはＡＳＲ／ＮＬＳＲスピーチベースのクローラである、請求項１に記載のシステム。
【請求項１１】
前記ＡＳＲ／ＮＬＳＲスピーチベースのクローラは、電話ベースのネットワークを介して発呼することによってＩＶＲシステムに接続する、請求項７に記載のシステム。
【請求項１２】
前記ＡＳＲ／ＮＬＳＲスピーチベースのクローラは、複数のスピーチ発話オーディオ・データを生成することによって入力選択を前記ＩＶＲシステムに提供する、請求項８に記載のシステム。
【請求項１３】
メモリに記憶された複数のプログラミング命令を備え、ネットワーク接続されたコンピ
ューティング・デバイスのプロセッサ上で動作する、自動スピーチ認識エンジンをさらに備え、前記自動スピーチ認識エンジンは、オーディオ・データを含むメニュー・プロンプトを解釈し、解釈結果データをＤＴＭＦまたはＡＳＲ／ＮＬＳＲスピーチベースのクローラに提供するように構成される、請求項９に記載のシステム。
【請求項１４】
メモリに記憶された複数のプログラミング命令を備え、ネットワーク接続されたコンピューティング・デバイスのプロセッサ上で動作する、テスト・ケース実行エンジンをさらに備え、前記テスト・ケース実行エンジンは、前記ＩＶＲクローラによって作成されたテスト・ケースを実行するように構成される、請求項１に記載のシステム。
【請求項１５】
前記テスト・ケースは、作成されるのに伴って前記ＩＶＲクローラから直接的に受け取られる、請求項１１に記載のシステム。
【請求項１６】
記憶されたテスト・ケースは前記データベースから取り出される、請求項１１に記載のシステム。
【請求項１７】
メモリに記憶された複数のプログラミング命令を備え、ネットワーク接続されたコンピューティング・デバイスのプロセッサ上で動作する、テスト結果アナライザをさらに備え、前記テスト結果アナライザは、前記テスト実行エンジンからのテスト・ケース実行の結果を分析するように構成される、請求項１１に記載のシステム。
【請求項１８】
前記分析結果は前記データベースに記憶される、請求項１４に記載のシステム。
【請求項１９】
前記結果は検討のために人間のユーザに提供される、請求項１４に記載のシステム。
【請求項２０】
対話式音声応答システム・クローリングのための方法であって、
メモリに記憶された複数のプログラミング命令を少なくとも備え、ネットワーク接続されたコンピューティング・デバイスのプロセッサ上で動作する、ＩＶＲクローラであって、ネットワークを介してＩＶＲシステムに接続し、複数の利用可能なＩＶＲメニュー・オプションを識別し複数の入力選択を前記ＩＶＲシステムに提供して前記メニューの中を進むことによってＩＶＲメニュー・パスを辿るように構成され、メニュー・パスを辿る際に使用された一連のプロンプトおよび入力に少なくとも部分的に基づいて複数のＩＶＲテスト・ケースを作成するように構成されたＩＶＲクローラを介して、ＩＶＲシステムにアクセスする工程と、
複数の利用可能なＩＶＲメニュー・オプションを識別し複数の入力選択を提供して前記メニューの中を進むことによって、前記ＩＶＲシステムの前記メニュー・パスをリバース・エンジニアリングする工程と、
メニュー・パスを辿る際に使用された前記一連のプロンプトおよび入力選択に少なくとも部分的に基づいて、テスト・ケースを作成する工程と、
メモリに記憶された複数のプログラミング命令を少なくとも備え、コンピューティング・デバイスのプロセッサ上で動作する、データベースであって、ＩＶＲクローラによって作成されたテスト・ケースを記憶するように構成されたデータベースに、前記テスト・ケースを将来の参照のために記憶する工程と、を備える、方法。
【請求項２１】
メモリに記憶された複数のプログラミング命令を備え、ネットワーク接続されたコンピューティング・デバイスのプロセッサ上で動作する、テスト・ケース実行エンジンであって、前記ＩＶＲクローラによって作成されたテスト・ケースを実行するように構成されたテスト・ケース実行エンジンを介して、前記テスト・ケースを実行する工程と、
メモリに記憶された複数のプログラミング命令を備え、ネットワーク接続されたコンピューティング・デバイスのプロセッサ上で動作する、テスト結果アナライザであって、前
記テスト実行エンジンからの前記テスト・ケース実行の結果を分析するように構成されたテスト結果アナライザを介して、前記テスト・ケース実行の結果を分析する工程と、
前記分析の結果を提供する工程と、をさらに備える、請求項１７に記載の方法。
【請求項２２】
メモリに記憶された複数のプログラミング命令を少なくとも備え、コンピューティング・デバイスのプロセッサ上で動作する、データベースであって、ＩＶＲクローラによって作成されたテスト・ケースを記憶するように構成されたデータベースに、前記分析結果を将来の参照のために記憶する工程をさらに備える、請求項１８に記載の方法。
【請求項２３】
対話式音声応答システム移行のための方法であって、
メモリに記憶された複数のプログラミング命令を少なくとも備え、ネットワーク接続されたコンピューティング・デバイスのプロセッサ上で動作する、ＩＶＲクローラであって、ネットワークを介してＩＶＲシステムに接続し、複数の利用可能なＩＶＲメニュー・オプションを識別し複数の入力選択を前記ＩＶＲシステムに提供して前記メニューの中を進むことによってＩＶＲメニュー・パスを辿るように構成され、メニュー・パスを辿る際に使用された一連のプロンプトおよび入力に少なくとも部分的に基づいて複数のＩＶＲテスト・ケースを作成するように構成されたＩＶＲクローラを介して、ＩＶＲシステムにアクセスする工程と、
複数の利用可能なＩＶＲメニュー・オプションを識別し複数の入力選択を提供して前記メニューの中を進むことによって、前記ＩＶＲシステムの前記メニュー・パスをリバース・エンジニアリングする工程と、
前記ＩＶＲシステムの前記メニュー・パスの少なくとも一部に対応する複数のＶＸＭＬデータを作成する工程と、
前記複数のＶＸＭＬデータの少なくとも一部をＩＶＲシステムにインポートする工程とを備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンタクト・センタ運用の分野に関し、より詳細には、対話式音声応答システムおよびアプリケーションの分野に関する。
【背景技術】
【０００２】
対話式音声応答（ＩＶＲ）システムの分野では、顧客がシステムをナビゲートする間に選び得る可能な音声応答および対話パスをドキュメント化するなどのためにシステムを「そのままで」、すなわち、その現状態でドキュメント化することに、非常に時間がかかる可能性があり、往々にして、単一のシステムを完全にドキュメント化するのに３か月〜９か月も要することがある。したがって、ドキュメンテーションはしばしば、必要とされる時間およびリソースに起因して生産システムと同期せず、ドキュメンテーションの有効性を減少させる。ドキュメンテーション・スクリプトを手動で生成することもまた、時間がかかる可能性があり、手順を経済的にするのを困難にする。これらの要因の結果として、機敏さが損なわれ、タイム・トゥ・バリュー（ｔｉｍｅ−ｔｏ−ｖａｌｕｅ）が１年にわたる可能性がある。
【０００３】
加えて、新たなシステムに移行すること、または保守を手動で実施すること（例えば、修復もしくは除去される必要のある、断絶したパスもしくは古くなったオプションを識別するために）が困難なことに起因して、古くなったまたは保守の不十分なＩＶＲソフトウェアが使用され続けることがある。会社は、特定のＩＶＲ構成に対する大きな投資を有することがあり、自社の既存の設定を維持したいが、利用可能になるであろう新たな技術も利用したいことがある。一般に、これは、新たなＩＶＲシステムを手動で設定すること、および、これを既存の構成と同様にして入念に構成することを必要とするであろう。新たなＩＶＲシステムを手動で点検または設定することは、時間がかかり、エラーを被りやすい。このことは、投資が必要とされることに起因して、アップグレードではなく、古くなったシステムが動作状態にされ続けることにつながる。また、ユーザが、より大きな問題を引き起こすリスクなしに小さな変更を実施できることも重要である。例えばこれは、ユーザが、より大きなコール・フローを断絶するリスクを冒すことなく、小さな問題が現れたときにそれらを訂正できるようにするために、重要である。
【０００４】
生産ＩＶＲシステムのドキュメンテーションと、生産ＩＶＲシステムのためのテスト・ケースとを迅速かつ確実に生成する手段であって、それにより少なくとも、展開およびタイム・トゥ・バリュー（例えば既存のシステムに対する）を加速させ、また、ＩＶＲシステムへの迅速なインポートに適したＶＸＭＬを生成し、ユーザがＩＶＲを安全かつ効率的な方式で閲覧および修正できるようにするための対話式ＩＶＲドキュメンテーションを生成する、手段が必要とされている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、発明者は、本発明の好ましい一実施形態で、ＩＶＲ構成をアップグレードまたは置換として新たなシステムに移行する際に使用するのに適合された、生ＩＶＲシステム・クローリングのための様々なシステムおよび方法を構想し具体化した。
【課題を解決するための手段】
【０００６】
本発明の好ましい一実施形態によれば、ＩＶＲクローリングのためのシステムが開示される。このシステムは：ネットワーク接続されたコンピューティング・デバイス（サーバまたはデスクトップ・ワークステーションなど）上で記憶され動作する、ＶＸＭＬベース
のクローラであってよいスピーチ・クローラと；タッチトーンまたはスピーカ・シミュレーション・ベースの対話プログラムであってよいＤＴＭＦまたはＡＳＲ／ＮＬＳＲクローラと；スプレッドシートベースのソフトウェア・クローラであってよい設計クローラと；本発明のクローラによって生成されたものなどのコール・フロー・ドキュメンテーションまたはレコードを記憶および提供できるコール・フロー・データベースと；既知のコール・フロー・レコードに従ってコール・フロー・テストを実施できるテスト実行エンジンと；ＩＶＲの性能を決定したりコール・フロー・ドキュメンテーション・レコードの精度を決定したりするために、実施されたコール・フロー・テストの結果の分析を実施できるテスト結果アナライザと；を備える。この実施形態によれば、スピーチ・クローラ（ＳＡＣ）は：ターゲットＶＸＭＬブラウザに問い合わせること；ＶＸＭＬアプリケーションの各ブランチを構文解析する（すべての可能なレイヤにおけるすべての可能な入力を提供することなどにより）ことによっていずれかの発見されたコール・フローをリバース・エンジニアリングすること；および、問い合わされたＩＶＲを通るすべての可能なパスを網羅的に試験するために自動化テスト・ソリューションによって使用できる完全なテスト・ケース・ライブラリを構築すること；を行う手順であってよい。入力は、ターゲットＶＸＭＬブラウザのＵＲＬであってよく、出力は、データベースへの記憶またはドキュメンテーション・ファイルへの追加などのための、テスト・ケースをＸＭＬフォーマットで含むファイルであってよい。
【０００７】
ＤＴＭＦクローラ（ＤＣ）は、クローラ・プラットフォームからＩＶＲに実際に発呼することによって、ＶＸＭＬに準拠しないかまたはそのＶＸＭＬインタフェースが直接的にアクセス可能でないターゲット・タッチ・トーンＩＶＲに問い合わせる手順であってよい。次いで、クローラは、前述のように、すべての可能なレイヤにおけるすべての可能なＤＴＭＦ入力を提供することによってアプリケーションのあらゆるブランチを構文解析することなどによって、いずれかの発見されたコール・フローをリバース・エンジニアリングすることができ、次いで、完全なテスト・ケース・ライブラリを構築することができる。このソリューションは、自動化音声認識を例えば使用することによって音をテスト・ケース用のテキストに変換するための転写の使用を含み、それにより、ソフトウェアベースのクローラは、電話を介したＩＶＲからの聞こえた音声プロンプトを構文解析してそれに応答することができる。入力は、電話番号、または複数の番号（内部ＩＶＲアプリケーションを試験すること、もしくは内部電話ネットワークの外部からの外部ＩＶＲを遠隔に試験することなどのための、内部もしくは外部の番号）であってよく、出力は、ドキュメンテーションへの追加またはデータベースへの記憶に適した、テスト・ケースのライブラリ、またはＩＶＲアプリケーション構造の図表現であってよい。
【０００８】
自動化または自然言語スピーチ認識（ＡＳＲ／ＮＬＳＲ）クローラ（ＡＳＣ）は、クローラ・プラットフォームからＩＶＲに実際に発呼することによって、ＶＸＭＬに準拠しないかまたはそのＶＸＭＬインタフェースが直接的にアクセス可能でないターゲット・スピーチ認識ＩＶＲに問い合わせる手順であってよい。次いで、クローラは、前述のように、すべての可能なレイヤにおけるすべての可能なスピーチ入力を提供することによってスピーチ・アプリケーションのあらゆるブランチを構文解析することなどによって、いずれかの発見されたコール・フローをリバース・エンジニアリングすることができ、次いで、完全なテスト・ケース・ライブラリを構築することができる。このソリューションは、自動化音声認識を例えば使用して音をテスト・ケース用のテキストに変換するための転写の使用を含み、それにより、ソフトウェアベースのクローラは、電話を介したＩＶＲからの聞こえた音声プロンプトを構文解析してそれに応答することができる。入力は、電話番号、または複数の番号（内部ＩＶＲアプリケーションを試験すること、もしくは内部電話ネットワークの外部からの外部ＩＶＲを遠隔に試験することなどのための、内部もしくは外部の番号）であってよく、出力は、ドキュメンテーションへの追加またはデータベースへの記憶に適した、テスト・ケースのライブラリ、またはＩＶＲアプリケーション構造の図表
現であってよい。
【０００９】
設計クローラは、当技術分野で一般的に使用される任意の標準的なスピーチ・アプリケーション設計テンプレートに問い合わせて、スピーチ／ＤＴＭＦアプリケーションのためのテスト・ケースの完全なライブラリを構築する手順であってよい。このような構成では、クローラは、スプレッドシートなどの設計ドキュメントを辿ることができ、前述のように、ドキュメントからのいずれかの発見されたフローをリバース・エンジニアリングし、データベースとＩＶＲドキュメンテーションとのいずれかまたは両方に組み込むのに適したテスト・ケース・ライブラリを出力することができる。
【００１０】
本発明のシステムは、特定の構成または応用に対して望ましいものであるように、前述のような複数のクローラおよびクローラ・タイプを交換可能にまたは同時に組み込むことができることを理解されたい。
【００１１】
前述のクローラに関する２つの例示的な使用事例は、次のとおりである。
使用事例１：スピーチ・クローラを使用する。ユーザが、コマンド・ライン・インタフェースを使用してアプリケーションを立ち上げる。
【００１２】
・入力：ユーザが、リバース・エンジニアリングされるべきＶＸＭＬブラウザのＵＲＬと、Ｔｅｓｔ  Ｃａｓｅライブラリの親フォルダ名とを入力し、「Ｅｎｔｅｒ」キーを押す。
【００１３】
・＜アプリケーションが稼働する＞
・出力：親フォルダの名前を有するＸＭＬファイル。必要に応じて、サブ・フォルダ、および各フォルダ内のテスト・ケース。
【００１４】
使用事例２：Ｔｅｓｔ  Ｃａｓｅｓ  ＸＭＬをインポートする。通常のインポート・プロシージャに従うが、ただし、Ｔｅｓｔ  Ｃａｓｅｓのライブラリ全体が、ディレクトリ構造はそのままでインポートされる。
【００１５】
本発明の別の好ましい一実施形態によれば、前述のような複数のＩＶＲクローリング・ソフトウェア・アプリケーションを使用してＩＶＲをリバース・エンジニアリングする方法が開示される。この実施形態によれば、この方法は、上記の本発明のシステムにおいて述べたような様々なＩＶＲクローラ、例えば、性質または動作の点でＶＸＭＬ、ＤＴＭＦ、スピーチ、または設計ベースのものである場合のあるクローラを利用することができる。最初の工程で、クローラが、その具体的な性質に従ってＩＶＲ情報にアクセスすることができ、これは、ＶＸＭＬベースのクローラがＵＲＬもしくは記憶済みファイルなどからＶＸＭＬスクリプトをロードすること、または、ＤＴＭＦ／スピーチベースのクローラがＩＶＲシステムに直接発呼すること、などである。次の工程で、クローラは、会話パスを反復的もしくは再帰的に辿ることによって、またはデータ・ファイル中のあらゆる潜在的なパスを探索する（ＶＸＭＬベースのクローラの場合など）ことによって、ＩＶＲ情報を「クロール」またはリバース・エンジニアリングすることができる。次の工程で、次いでクローラは、新たなコール・テスト・ケースをテスト・データベースに追加することができ、次の工程で、記憶されたテスト・ケースがテスト・ケース実行エンジンによって取り出されてよく、次いでテスト・ケース実行エンジンは、次の工程でテスト・ケースを実行することができる。次の工程で、テスト・ケース実行の結果が分析されてよく、次いでこれらのテスト結果は、次の工程で、さらに参照されるためにデータベースに記憶されてよい。任意選択の最後の工程で、テスト結果は、人間の分析者などによる手動の検討のために提示されてよく、この分析者は、テストを手動で実施するかまたは以前のテストの結果を検討して、動作を検討する。
【００１６】
本発明の別の好ましい実施形態によれば、対話式音声応答システム移行の方法が開示され、この方法は、ＩＶＲクローラを介してＩＶＲシステムにアクセスする工程と、ＩＶＲシステムのメニュー・パスをリバース・エンジニアリングする工程と、ＩＶＲシステムのメニュー・パスの少なくとも一部に対応する複数のＶＸＭＬデータを作成する工程と、複数のＶＸＭＬデータの少なくとも一部をＩＶＲシステムにインポートする工程と、を備える。
【００１７】
添付の図面は、本発明のいくつかの実施形態を例証するものであり、本記述と共に、実施形態により本発明の原理を説明する働きをする。図面で例証される特定の実施形態は例に過ぎず、本明細書における発明または請求項の範囲を限定すると考えるべきでは決してないことは、当業者には理解されるであろう。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態で使用されるコンピューティング・デバイスの例示的なハードウェア・アーキテクチャを例証するブロック図。
【図２】本発明の一実施形態による、クライアント・デバイスに関する例示的な論理アーキテクチャを例証するブロック図。
【図３】本発明の一実施形態による、クライアント、サーバ、および外部サービスの例示的なアーキテクチャ構成を示すブロック図。
【図４】本発明の様々な実施形態で使用されるコンピューティング・デバイスの例示的なハードウェア・アーキテクチャを例証する別のブロック図。
【図５】本発明の好ましい一実施形態による、ＩＶＲクローリングのための例示的なシステム・アーキテクチャを例証するブロック図。
【図６】本発明の好ましい一実施形態による、ＩＶＲクローリングのための例示的な概観方法の概観を例証する方法のフローチャート。
【図７】本発明による、ＶＸＭＬクローラを使用してＶＸＭＬドキュメントをリバース・エンジニアリングするための例示的な詳細な方法を例証する方法のフローチャート。
【図８】本発明による、適切なクローラを使用してＤＴＭＦまたはスピーチベースの音によってＩＶＲと対話するための例示的な詳細な方法を例証する方法のフローチャート。
【図９】本発明の好ましい一実施形態による、ＩＶＲクローラを使用してシステム移行を実施するための例示的な方法を例証する方法のフローチャート。
【図１０】本発明の一実施形態による、対話式ＩＶＲマップを閲覧するための例示的なユーザ・インタフェースの図。
【発明を実施するための形態】
【００１９】
発明者は、本発明の好ましい一実施形態で、生産ＩＶＲシステムを迅速にナビゲートしドキュメント化するなどのために、生ＩＶＲシステム・クローリングのための様々なシステムおよび方法を構想し具体化した。
【００２０】
本出願では、１つまたは複数の異なる発明が記述される場合がある。さらに、本明細書に記載の発明の１つまたは複数について、多くの代替実施形態が記述される場合がある。これらは、例証の目的のみで提示されるものであり、本明細書に含まれる発明または本明細書で提示される特許請求の範囲の限定では決してないことを理解されたい。本開示からすぐに明らかであろうが、本発明の１つまたは複数は、多くの実施形態に広く適用可能とすることができる。一般に、実施形態は、当業者が本発明の１つまたは複数を実践できるようにするのに十分なほど詳細に記述され、特定の発明の範囲を逸脱することなく、他の実施形態が利用されてもよいこと、ならびに、構造上の、論理的な、ソフトウェアの、電
気的な、および他の変更が加えられてもよいことを理解されたい。したがって、本発明の１つまたは複数は様々な修正および改変と共に実践されてもよいことを、当業者なら認識するであろう。本明細書に記載の発明の１つまたは複数の、特定の特徴は、本開示の一部をなす１つまたは複数の特定の実施形態または図に関して記述される場合があり、これらの実施形態または図では、本発明の１つまたは複数の、具体的な実施形態が例証によって示される。しかし、そのような特徴は、それらが記述される際に参照される１つまたは複数の特定の実施形態または図における使用に限定されないことを理解されたい。本開示は、本発明の１つまたは複数の、すべての実施形態についての文字どおりの記述でもなければ、すべての実施形態に存在しなければならない本発明の１つまたは複数の特徴の列挙でもない。
【００２１】
本特許出願で提供されるセクションの見出し、および本特許出願の名称は、便宜上に過ぎず、本開示を限定すると解釈されるべきでは決してない。
相互と通信するデバイスは、別段の明白な指示がない限り、相互と継続的に通信する必要はない。加えて、相互と通信するデバイスは、直接的に通信してもよく、または、論理的もしくは物理的な１つもしくは複数の通信手段もしくは媒介を介して間接的に通信してもよい。
【００２２】
相互と通信するいくつかの構成要素を含む実施形態についての記述は、そのようなすべての構成要素が必要とされることを含意しない。反対に、本発明の１つまたは複数の、あり得る多様な実施形態を例証するために、かつ本発明の１つまたは複数の態様をより完全に例証するために、様々な任意選択の構成要素が記述される場合がある。同様に、手順工程、方法工程、アルゴリズムなどが逐次的な順序で記述される場合があるが、そのような手順、方法、およびアルゴリズムは一般に、特に反対の記載がない限り、代替の順序で機能するように構成されてもよい。言い換えれば、本特許出願で記述される場合のある工程のいずれの連続または順序も、本来的にそれ自体では、工程がその順序で実施される必要があることを示すものではない。記述される手順の工程は、実際的な任意の順序で実施されてよい。さらに、いくつかの工程は、非同時的に行われるように記述または含意される（例えば、一方の工程が他方の工程の後に記載されているので）にもかかわらず、同時に実施されてもよい。さらに、手順が図面におけるその描写によって例証される場合、これは、例証される手順がそれに対する他の変形および修正を除外することを含意せず、また、例証される手順またはそのいずれかの工程が本発明の１つまたは複数に必要であることを含意せず、また、例証される工程が好ましいことを含意しない。また、工程は一般に、１つの実施形態につき１回記述されるが、これは、工程が１回行われなければならないことを意味するものではなく、また、手順、方法、またはアルゴリズムが遂行または実行されるたびに工程が１回だけ行われてよいことを意味するものでもない。いくつかの工程は、いくつかの実施形態もしくはいくつかの発生では省略されてもよく、または、いくつかの工程は、所与の実施形態もしくは発生では２回以上実行されてもよい。
【００２３】
単一のデバイスまたは物品が本明細書に記載されているとき、単一のデバイスまたは物品の代わりに２つ以上のデバイスまたは物品が使用されてもよいことはすぐに明らかであろう。同様に、２つ以上のデバイスまたは物品が本明細書に記載されているとき、２つ以上のデバイスまたは物品の代わりに単一のデバイスまたは物品が使用されてもよいことはすぐに明らかであろう。
【００２４】
デバイスの機能または特徴は、別法として、そのような機能または特徴を有すると明示的に記述されない１つまたは複数の他のデバイスによって具現化されてもよい。したがって、本発明の１つまたは複数の、他の実施形態は、そのデバイス自体を含む必要はない。
【００２５】
本明細書で記述または参照される技法またはメカニズムは、明確にするために単数形で
記述されることがあるであろう。しかし、特定の実施形態は、別段に記載がない限り、技法の複数の反復、またはメカニズムの複数のインスタンス化を含む場合があることを理解されたい。図中の手順記述またはブロックは、手順中の具体的な論理機能または工程を実装するための１つまたは複数の実行可能命令を含む、モジュール、セグメント、またはコード部分を表すと理解されたい。代替実装形態も本発明の実施形態の範囲内に含まれ、これらの代替実施形態では、例えば、当業者には理解されるであろうが、関連する機能に応じて、機能は、ほぼ同時にまたは逆の順序で実行されることを含めて、図示または考察される順序以外の順序で実行される場合がある。
【００２６】
ハードウェア・アーキテクチャ
一般に、本明細書で開示される技法は、ハードウェア上で、またはソフトウェアとハードウェアの組合せ上で実装されることが可能である。例えば、これらの技法は、オペレーティング・システム・カーネル中で、別個のユーザ・プロセス中で、ネットワーク・アプリケーションにバインドされたライブラリ・パッケージ中で、特別に構築されたマシン上で、特定要素向け集積回路（ＡＳＩＣ）上で、またはネットワーク・インタフェース・カード上で、実装されることが可能である。
【００２７】
本明細書で開示される実施形態の少なくともいくつかの、ソフトウェア／ハードウェア・ハイブリッド実装形態は、メモリに記憶されたコンピュータ・プログラムによって選択的に作動または再構成されるプログラム可能なネットワーク常駐マシン（これは、断続的に接続されるネットワークアウェアなマシンを含むと理解されたい）上で実装されることが可能である。このようなネットワーク・デバイスは、種々のタイプのネットワーク通信プロトコルを利用するように構成または設計される場合のある複数のネットワーク・インタフェースを有することができる。機能の所与のユニットが実装され得るための１つまたは複数の例示的な手段を例証するために、これらのマシンのいくつかに関する一般的なアーキテクチャが本明細書で記述される場合がある。具体的な実施形態によれば、本明細書で開示される様々な実施形態の特徴または機能の少なくともいくつかは、１つまたは複数のネットワークに関連付けられた１つまたは複数の汎用コンピュータ上で実装されることが可能であり、これらの汎用コンピュータは、例えば、エンドユーザ・コンピュータ・システム、クライアント・コンピュータ、ネットワーク・サーバもしくは他のサーバ・システム、モバイル・コンピューティング・デバイス（例えば、タブレット・コンピューティング・デバイス、モバイル・フォン、スマートフォン、ラップトップ、もしくは他の適切なコンピューティング・デバイス）、消費者電子デバイス、音楽プレーヤ、もしくは他の任意の適切な電子デバイス、ルータ、スイッチ、もしくは他の適切なデバイス、またはこれらの任意の組合せなどである。少なくともいくつかの実施形態では、本明細書で開示される様々な実施形態の特徴または機能の少なくともいくつかは、１つまたは複数の仮想化コンピューティング環境（例えば、ネットワーク・コンピューティング・クラウド、１つもしくは複数の物理コンピューティング・マシン上でホストされる仮想マシン、または他の適切な仮想環境）で実装されることが可能である。
【００２８】
次に図１を参照すると、本明細書で開示される特徴または機能の少なくとも一部を実装するのに適した例示的なコンピューティング・デバイス１００を描くブロック図が示されている。コンピューティング・デバイス１００は、例えば、前の段落で列挙されたコンピューティング・マシンのいずれか１つであってよく、または実際、メモリに記憶された１つもしくは複数のプログラムに従ってソフトウェアもしくはハードウェアベースの命令を実行できる他の任意の電子デバイスであってもよい。コンピューティング・デバイス１００は、ワイド・エリア・ネットワーク、メトロポリタン・エリア・ネットワーク、ローカル・エリア・ネットワーク、無線ネットワーク、インターネット、または他の任意のネットワークなどの通信ネットワークを介して、クライアントまたはサーバなど他の複数のコンピューティング・デバイスと通信するように適合されてよく、これは、無線であろうと
有線であろうと、そのような通信のための公知のプロトコルを使用して行われてよい。
【００２９】
一実施形態では、コンピューティング・デバイス１００は、１つまたは複数の中央処理装置（ＣＰＵ）１０２と、１つまたは複数のインタフェース１１０と、１つまたは複数のバス１０６（ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスなど）とを備える。ＣＰＵ１０２は、適切なソフトウェアまたはファームウェアの制御下で作用するとき、具体的に構成されたコンピューティング・デバイスまたはマシンの機能に関連する具体的な機能を実装することを担うことができる。例えば、少なくとも１つの実施形態では、コンピューティング・デバイス１００は、ＣＰＵ１０２、ローカル・メモリ１０１、および／または遠隔メモリ１２０、ならびにインタフェース１１０を利用して、サーバ・システムとして機能するように構成または設計されてよい。少なくとも１つの実施形態では、ＣＰＵ１０２は、オペレーティング・システムおよび任意の適切なアプリケーション・ソフトウェアやドライバなどを例えば含む場合のある、ソフトウェア・モジュールまたは構成要素の制御下で、種々のタイプの機能および／または動作のうちの１つまたは複数を実施するようになされてよい。
【００３０】
ＣＰＵ１０２は、例えば、Ｉｎｔｅｌ、ＡＲＭ、Ｑｕａｌｃｏｍｍ、およびＡＭＤファミリのマイクロプロセッサのうちの１つからのプロセッサなど、１つまたは複数のプロセッサ１０３を含むことができる。いくつかの実施形態では、プロセッサ１０３は、特定用途向け集積回路（ＡＳＩＣ）、電気的に消去可能プログラム可能な読取専用メモリ（ＥＥＰＲＯＭ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）など、コンピューティング・デバイス１００の動作を制御するための特別設計されたハードウェアを含むことができる。具体的な一実施形態では、ローカル・メモリ１０１（１つまたは複数のレベルのキャッシュ・メモリを例えば含めた、不揮発性ランダム・アクセス・メモリ（ＲＡＭ）および／または読取専用メモリ（ＲＯＭ）など）もまた、ＣＰＵ１０２の一部を形成することができる。しかし、メモリをシステム１００に結合できる方式には、多くの異なる方式がある。メモリ１０１は、例えば、データやプログラミング命令をキャッシュおよび／または記憶するなど、様々な目的に使用されることがある。さらに、ＣＰＵ１０２は、Ｑｕａｌｃｏｍｍ  ＳＮＡＰＤＲＡＧＯＮ（商標）やＳａｍｓｕｎｇ  ＥＸＹＮＯＳ（商標）ＣＰＵなど、モバイル・デバイス中や統合デバイス中での使用などのために当技術分野でますます普及しつつあるような、メモリやグラフィックス処理チップなど追加のハードウェアを含む場合のある様々なシステムオンチップ（ＳＯＣ）タイプのハードウェアの１つであってもよいことを理解されたい。
【００３１】
本明細書において、用語「プロセッサ」は、当技術分野でプロセッサ、モバイル・プロセッサ、またはマイクロプロセッサと呼ばれる集積回路のみに限定されず、広くマイクロコントローラ、マイクロコンピュータ、プログラマブル・ロジック・コントローラ、特定用途向け集積回路、および他の任意のプログラマブル回路に及ぶ。
【００３２】
一実施形態では、インタフェース１１０は、ネットワーク・インタフェース・カード（ＮＩＣ）として設けられる。一般に、ＮＩＣは、コンピュータ・ネットワークを介したデータ・パケットの送受信を制御し、他のタイプのインタフェース１１０は、例えば、コンピューティング・デバイス１００と共に使用される他の周辺機器をサポートすることができる。設けられる可能性のあるインタフェースとしては、イーサネット（登録商標）インタフェース、フレーム・リレー・インタフェース、ケーブル・インタフェース、ＤＳＬインタフェース、トークン・リング・インタフェース、グラフィックス・インタフェースなどがある。加えて、例えば、ユニバーサル・シリアル・バス（ＵＳＢ）、シリアル、イーサネット、ＦＩＲＥＷＩＲＥ（登録商標）、ＴＨＵＮＤＥＲＢＯＬＴ（商標）、ＰＣＩ、パラレル、無線周波数（ＲＦ）、ＢＬＵＥＴＯＯＴＨ（登録商標）、近接場通信（例えば近接場磁気学を使用する）、８０２．１１（ＷｉＦｉ）、フレーム・リレー、ＴＣＰ／Ｉ
Ｐ、ＩＳＤＮ、高速イーサネット・インタフェース、ギガビット・イーサネット・インタフェース、シリアルＡＴＡ（ＳＡＴＡ）または外部ＳＡＴＡ（ＥＳＡＴＡ）インタフェース、高精細度マルチメディア・インタフェース（ＨＤＭＩ（登録商標））、デジタル・ビジュアル・インタフェース（ＤＶＩ）、アナログまたはデジタル・オーディオ・インタフェース、非同期転送モード（ＡＴＭ）インタフェース、高速シリアル・インタフェース（ＨＳＳＩ）インタフェース、販売時点情報管理（ＰＯＳ）インタフェース、ファイバ・データ分配インタフェース（ＦＤＤＩ）など、様々なタイプのインタフェースが設けられてよい。一般に、このようなインタフェース１１０は、適切な媒体との通信に適した物理ポートを備えることができる。場合によっては、これらは、独立したプロセッサ（高忠実度Ａ／Ｖハードウェア・インタフェースに対して当技術分野で一般的であるような、専用オーディオまたはビデオ・プロセッサなど）を備えることもあり、場合によっては、揮発性および／または不揮発性メモリ（例えばＲＡＭ）を備えることもある。
【００３３】
図１に示すシステムは、本明細書に記載の発明の１つまたは複数を実装するためのコンピューティング・デバイス１００に関する１つの具体的なアーキテクチャを例証するが、これは、本明細書に記載の特徴および技法の少なくとも一部が実装され得る唯一のデバイス・アーキテクチャでは決してない。例えば、１つまたは任意の数のプロセッサ１０３を有するアーキテクチャが使用されてよく、そのようなプロセッサ１０３は、単一のデバイス中にあるかまたは任意の数のデバイス間で分散されてよい。一実施形態では、単一のプロセッサ１０３が通信ならびにルーティング計算を扱い、他の実施形態では、別個の専用の通信プロセッサが設けられてよい。様々な実施形態で、クライアント・デバイス（クライアント・ソフトウェアを実行するタブレット・デバイスまたはスマートフォンなど）およびサーバ・システム（後でより詳細に記述されるサーバ・システムなど）を含む本発明によるシステム中で、種々のタイプの特徴または機能が実装されてよい。
【００３４】
ネットワーク・デバイス構成にかかわらず、本発明のシステムは、データ、汎用ネットワーク動作のためのプログラム命令、または本明細書に記載の実施形態の機能に関係する他の情報（またはこれらの任意の組合せ）を記憶するように構成された、１つまたは複数のメモリまたはメモリ・モジュール（例えば、遠隔メモリ・ブロック１２０およびローカル・メモリ１０１）を採用することができる。プログラム命令は、例えば、オペレーティング・システムおよび／または１つもしくは複数のアプリケーションの実行を制御するか、またはこれらを含むことができる。メモリ１２０またはメモリ１０１、１２０はまた、データ構造、構成データ、暗号化データ、履歴システム動作情報、または本明細書に記載の具体的もしくは一般的な他の任意の非プログラム情報を記憶するように構成されてもよい。
【００３５】
このような情報およびプログラム命令を採用して本明細書に記載の１つまたは複数のシステムまたは方法を実装することができるので、少なくともいくつかのネットワーク・デバイス実施形態は、非一時的な機械可読記憶媒体を含むことができ、この媒体は、本明細書に記載の様々な動作を実施するためのプログラム命令や状態情報などを記憶するように構成または設計されてよい。このような非一時的な機械可読記憶媒体の例は、以下のものに限定されないが、ハード・ディスクやフロッピー（登録商標）ディスクや磁気テープなどの磁気媒体；ＣＤ−ＲＯＭディスクなどの光媒体；光ディスクなどの光磁気媒体；および、プログラム命令を記憶および実施するように特別に構成されたハードウェア・デバイスを含み、これらのハードウェア・デバイスは、読取専用メモリ・デバイス（ＲＯＭ）、フラッシュ・メモリ（モバイル・デバイス中および統合システム中で一般的であるような）、固体ドライブ（ＳＳＤ）、および、固体ドライブとハード・ディスク・ドライブの物理的構成要素を単一のハードウェア・デバイス中で結合できる「ハイブリッドＳＳＤ」ストレージ・ドライブ（パーソナル・コンピュータに関して当技術分野でますます普及しつつあるような）、メモリスタ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）などであ
る。このようなストレージ手段は、一体型で非取外し可能である場合もあり（マザーボード上に半田付けされるかもしくは他の方法で電子デバイスに統合される場合のあるＲＡＭハードウェア・モジュールなど）、あるいはこれらは、スワップ可能フラッシュ・メモリ・モジュール（物理ストレージ・デバイスを迅速に交換するために設計された「サム・ドライブ」もしくは他の取外し可能媒体など）、「ホットスワップ可能」ハード・ディスク・ドライブもしくは固体ドライブ、取外し可能光ストレージ・ディスク、または他のそのような取外し可能媒体など、取外し可能である場合もあること、および、このような一体型記憶媒体と取外し可能記憶媒体とは交換可能に利用されてよいことを理解されたい。プログラム命令の例は、コンパイラによって作成される場合があるものなどのオブジェクト・コード、アセンブラまたはリンカによって作成される場合があるものなどの機械コード、Ｊａｖａ（登録商標）コンパイラによって例えば生成される場合がありＪａｖａ仮想マシンまたは均等物を使用して実行される場合があるものなどのバイト・コードと、インタープリタを使用してコンピュータによって実行できるより高水準のコードを含むファイル（例えば、Ｐｙｔｈｏｎ、Ｐｅｒｌ、Ｒｕｂｙ、Ｇｒｏｏｖｙ、または他の任意のスクリプティング言語で書かれたスクリプト）と、の両方を含む。
【００３６】
いくつかの実施形態では、本発明によるシステムは、スタンドアロン・コンピューティング・システム上で実装されることが可能である。次に図２を参照すると、スタンドアロン・コンピューティング・システム上での、１つもしくは複数の実施形態またはその構成要素の典型的な例示的アーキテクチャを描くブロック図が示されている。コンピューティング・デバイス２００は、例えばクライアント・アプリケーション２３０など、本発明の実施形態の１つまたは複数の機能またはアプリケーションを遂行するソフトウェアを実行できるプロセッサ２１０を備える。プロセッサ２１０は、例えば、ＭｉｃｒｏｓｏｆｔのＷＩＮＤＯＷＳ（登録商標）オペレーティング・システム、ＡｐｐｌｅのＭａｃ  ＯＳ／ＸまたはｉＯＳオペレーティング・システム、Ｌｉｎｕｘ（登録商標）オペレーティング・システムの何らかの種類、ＧｏｏｇｌｅのＡＮＤＲＯＩＤ（登録商標）オペレーティング・システム等、のバージョンなど、オペレーティング・システム２２０の制御下で、コンピューティング命令を遂行することができる。多くの場合、１つまたは複数の共有サービス２２５が、システム２００中で動作可能であってよく、共通サービスをクライアント・アプリケーション２３０に提供するために有用であってよい。サービス２２５は、例えば、ＷＩＮＤＯＷＳ（登録商標）サービス、Ｌｉｎｕｘ環境におけるユーザ空間共通サービス、または、オペレーティング・システム２１０と共に使用される他の任意のタイプの共通サービス・アーキテクチャであってよい。入力デバイス２７０は、例えば、キーボード、タッチスクリーン、マイクロフォン（例えば音声入力のための）、マウス、タッチパッド、トラックボール、またはこれらの任意の組合せを含めた、ユーザ入力を受け取るのに適した任意のタイプのものであってよい。出力デバイス２６０は、システム２００に対して遠隔であろうとローカルであろうと、出力を１人または複数のユーザに提供するのに適した任意のタイプのものであってよく、例えば、視覚的出力のための１つもしくは複数の画面、スピーカ、プリンタ、またはこれらの任意の組合せを含むことができる。メモリ２４０は、例えばソフトウェアを実行するためにプロセッサ２１０によって使用されるための、当技術分野で公知の任意の構造およびアーキテクチャを有するランダム・アクセス・メモリであってよい。ストレージ・デバイス２５０は、データをデジタル形式で記憶するための、任意の磁気的、光学的、機械的、メモリスタ、または電気的ストレージ・デバイス（図１に関して上述したような）であってよい。ストレージ・デバイス２５０の例は、フラッシュ・メモリ、磁気ハード・ドライブ、ＣＤ−ＲＯＭ、および／またはその他を含む。
【００３７】
いくつかの実施形態では、本発明のシステムは、任意の数のクライアントおよび／またはサーバを有するものなど、分散コンピューティング・ネットワーク上で実装されることが可能である。次に図３を参照すると、本発明の一実施形態によるシステムの少なくとも
一部を分散コンピューティング・ネットワーク上で実装するための例示的なアーキテクチャ３００を描くブロック図が示されている。この実施形態によれば、任意の数のクライアント３３０が設けられてよい。各クライアント３３０は、本発明のクライアント側部分を実装するためのソフトウェアを実行することができる。クライアントは、図２で例証されるようなシステム２００を含むことができる。加えて、１つまたは複数のクライアント３３０から受け取った要求を扱うために、任意の数のサーバ３２０が設けられてよい。クライアント３３０とサーバ３２０とは、１つまたは複数の電子ネットワーク３１０を介して相互と通信することができ、電子ネットワーク３１０は、様々な実施形態で、インターネット、ワイド・エリア・ネットワーク、モバイル電話ネットワーク（ＣＤＭＡもしくはＧＳＭ（登録商標）セルラ・ネットワークなど）、無線ネットワーク（ＷｉＦｉ、Ｗｉｍａｘ、ＬＴＥなど）、またはローカル・エリア・ネットワーク、のいずれかであってよい（または実際、当技術分野で公知の任意のネットワーク・トポロジであってもよく、本発明は、いずれか１つのネットワーク・トポロジを他のいずれかよりも好むものではない）。ネットワーク３１０は、例えば有線および／または無線プロトコルを含めて、公知の任意のネットワーク・プロトコルを使用して実装されてよい。
【００３８】
加えて、いくつかの実施形態では、サーバ３２０は、追加の情報を得るかまたは特定の呼に関する追加のデータを参照するために必要とされるとき、外部サービス３７０を呼び出すことができる。外部サービス３７０との通信は、例えば、１つまたは複数のネットワーク３１０を介して行われてよい。様々な実施形態で、外部サービス３７０は、ハードウェア・デバイス自体に関係するかまたはハードウェア・デバイス自体にインストールされた、ウェブ対応サービスまたは機能を含むことができる。例えば、クライアント・アプリケーション２３０がスマートフォンまたは他の電子デバイス上で実装される実施形態では、クライアント・アプリケーション２３０は、クラウド中のサーバ・システム３２０に記憶された情報、または、特定企業の構内もしくはユーザの構内のうちの１つもしくは複数で展開される外部サービス３７０に記憶された情報を得ることができる。
【００３９】
本発明のいくつかの実施形態では、クライアント３３０またはサーバ３２０（または両方）は、ローカルにまたは１つもしくは複数のネットワーク３１０にわたって遠隔に展開される場合のある、１つまたは複数の特殊化されたサービスまたはアプリケーションを利用することができる。例えば、１つまたは複数のデータベース３４０が、本発明の１つまたは複数の実施形態によって使用または参照されてよい。データベース３４０は、多様なアーキテクチャで、かつ多様なデータ・アクセスおよび操作手段を使用して構成されてよいことを、当業者は理解されたい。例えば、様々な実施形態で、１つまたは複数のデータベース３４０は、構造化照会言語（ＳＱＬ）を使用する関係データベース・システムを含むことができ、他のデータベース３４０は、当技術分野で「ＮｏＳＱＬ」と呼ばれるものなどの代替データ記憶技術（例えば、Ｈａｄｏｏｐ  Ｃａｓｓａｎｄｒａ、Ｇｏｏｇｌｅ
Ｂｉｇ  Ｔａｂｌｅなど）を含むことができる。いくつかの実施形態では、本発明により、列指向データベース、インメモリ・データベース、クラスタ化データベース、分散データベース、さらにはフラット・ファイル・データ・リポジトリなど、種々のデータベース・アーキテクチャが使用されてもよい。本明細書における特定の実施形態について具体的なデータベース技術または具体的な構成要素が指定されない限り、公知であるかまたは将来のデータベース技術の任意の組合せが適宜使用されてよいことは、当業者には理解されるであろう。さらに、本明細書における用語「データベース」は、物理的なデータベース・マシン、単一のデータベース・システムとして働くマシンのクラスタ、またはデータベース管理システム全体の内の論理データベース、に及ぶ場合があることを理解されたい。用語「データベース」の所与の使用について具体的な意味が指定されない限り、これは、この単語のこれらの意味のいずれかを意味すると解釈されるべきであり、これらの意味はすべて、当業者によって用語「データベース」の明白な意味として理解される。
【００４０】
同様に、本発明のほとんどの実施形態は、１つまたは複数のセキュリティ・システム３６０および構成システム３５０を利用することができる。セキュリティおよび構成管理は、一般的な情報技術（ＩＴ）およびウェブ機能であり、それぞれのいくらかの量は、一般に、任意のＩＴまたはウェブ・システムに関連する。具体的なセキュリティ３６０または構成システム３５０またはアプローチがいずれかの具体的な実施形態に関する記述によって具体的に必要とされない限り、当技術分野で現在または将来において公知である任意の構成またはセキュリティ・サブシステムが制限なく本発明の実施形態と共に使用されてよいことを、当業者は理解されたい。
【００４１】
図４に、システム全体にわたる様々な場所のいずれかで使用できるようなコンピュータ・システム４００の例示的な概観を示す。これは、コードを実行してデータを処理することができる任意のコンピュータの例である。本明細書で開示されるシステムおよび方法のより広い範囲を逸脱することなく、コンピュータ・システム４００に様々な修正および変更が加えられてもよい。ＣＰＵ４０１がバス４０２に接続され、このバスにはまた、メモリ４０３、不揮発性メモリ４０４、ディスプレイ４０７、Ｉ／Ｏユニット４０８、およびネットワーク・インタフェース・カード（ＮＩＣ）４１３も接続される。Ｉ／Ｏユニット４０８は通常、キーボード４０９、ポインティング・デバイス４１０、ハード・ディスク４１２、およびリアルタイム・クロック４１１に接続されてよい。ＮＩＣ４１３はネットワーク４１４に接続し、ネットワーク４１４は、インターネットまたはローカル・ネットワークであってよく、このローカル・ネットワークは、インターネットへの接続を有する場合もあり有さない場合もある。システム４００の一部として電源ユニット４０５も示されており、電源ユニット４０５は、この例ではＡＣ電源４０６に接続される。存在する可能性のあるバッテリは図示されておらず、また、周知ではあるが本明細書で開示される現在のシステムおよび方法の具体的な新規機能には適用可能でない、他の多くのデバイスおよび修正は図示されていない。例証されるいくつかまたはすべての構成要素が組み合わされてもよいことを理解されたい。これは、様々な統合応用例（例えば、ＱｕａｌｃｏｍｍまたはＳｕｍｓｕｎｇ  ＳＯＣベースのデバイス）などにおいて行われてよく、あるいは、複数の能力または機能を単一のハードウェア・デバイスに結合することが適切である可能性があるときはいつでも行われてよい（例えば、スマートフォンなどのモバイル・デバイス、ビデオ・ゲーム・コンソール、自動車内のナビゲーション・システムもしくはマルチメディア・システムなどの車内コンピュータ・システム、または他の統合ハードウェア・デバイスにおいて）。
【００４２】
様々な実施形態で、本発明のシステムまたは方法を実装するための機能は、任意の数のクライアントおよび／またはサーバの構成要素間で分散されてよい。例えば、本発明との関連で様々な機能を実施するために様々なソフトウェア・モジュールが実装されてよく、このようなモジュールは、サーバおよび／またはクライアントの構成要素上で稼働するように様々に実装されてよい。
【００４３】
概念的なアーキテクチャ
図５は、ＩＶＲクローリングのための例示的なシステム５００のブロック図である。システム５００は：ネットワーク接続されたコンピューティング・デバイス（サーバまたはデスクトップ・ワークステーションなど）上で記憶され動作する、ＶＸＭＬベースのクローラであってよいスピーチ・クローラ５２１と；デュアルトーン多重周波数（ＤＴＭＦ）クローラ（ＤＣ）５２２ａ（例えば、タッチトーン・ベースの対話プログラム）、または自動生成された発話ベースの対話プログラムであり得るＡＳＲ／ＮＬＳＲスピーチ・アプリケーション・クローラ（ＡＳＣ）５２２ｂ（受け取った音入力または実施されている操作の性質に従って交換可能にまたは同時に利用される場合がある）であってよいＩＶＲクローラと；スプレッドシートベースのソフトウェア・クローラであってよい設計クローラ５２０と；本発明のクローラによって生成されたものなどのコール・フロー・ドキュメン
テーションまたはレコードを記憶および提供できるコール・フロー・データベース５３０と；既知のコール・フロー・レコードに従ってコール・フロー・テストを実施できるテスト実行エンジン５４０と；ＩＶＲの性能を決定したりコール・フロー・ドキュメンテーション・レコードの精度を決定したりするために、実施されたコール・フロー・テストの結果の分析を実施できるテスト結果アナライザ５４５と、を備える。この実施形態によれば、スピーチ・アプリケーション・クローラ（ＳＡＣ）５２１は、ターゲットＶＸＭＬブラウザ５７２に問い合わせ、次いで、ＶＸＭＬアプリケーションの各ブランチを構文解析する（すべての可能なレイヤにおけるすべての可能な入力を提供することなどにより）ことによっていずれかの発見されたコール・フローをリバース・エンジニアリングし（後述のように）、完全なテスト・ケース・ライブラリを構築する、手順であってよい。入力は、ターゲットＶＸＭＬファイル５１１のＵＲＬであってよく、出力は、データベースへの記憶またはドキュメンテーション・ファイルへの追加などのための、テスト・ケースをＸＭＬフォーマットで含むファイルであってよい。
【００４４】
ＤＴＭＦクローラ（ＤＣ）５２２ａは、公衆交換電話網（ＰＳＴＮ）またはセルラ・ネットワーク（ＧＳＭもしくはＣＤＭＡ無線通信ネットワーク等）などの電話ネットワーク５０１を介してクローラ・プラットフォームからＩＶＲ５１３に実際に発呼することによって、ＶＸＭＬに準拠しない（またはそのＶＸＭＬインタフェースがアクセス可能でない）ターゲット・タッチ・トーンＩＶＲ５１３に問い合わせる手順であってよい。次いで、クローラは、前述のように、すべての可能なレイヤにおいてＤＴＭＦジェネレータ５２４（ソフトウェアベースのアプリケーションで適切であるように、物理的なキー押下を必要とせずに電話入力を信号化するためのＤＴＭＦトーンを生成するのに利用できるものなど）を介してすべての可能なＤＴＭＦ入力を提供することによってアプリケーションのあらゆるブランチを構文解析することなどによって、いずれかの発見されたコール・フローをリバース・エンジニアリングすることができ、次いで、完全なテスト・ケース・ライブラリを構築することができる。このソリューションは、自動化スピーチ認識（ＡＳＲ）エンジン５２３を例えば利用することによって音をテスト・ケース用のテキストに変換するための転写の使用を含み、それにより、ソフトウェアベースのクローラは、電話を介したＩＶＲからの聞こえた音声プロンプトを構文解析してそれに応答することができる。入力は、電話番号、または複数の番号（内部ＩＶＲアプリケーションを試験すること、もしくは内部電話ネットワークの外部からの外部ＩＶＲを遠隔に試験することなどのための、内部もしくは外部の番号）であってよく、出力は、ドキュメンテーションへの追加またはデータベースへの記憶に適した、テスト・ケースのライブラリ、またはＩＶＲアプリケーション構造の図表現であってよい。
【００４５】
ＡＳＲ／ＮＬＳＲスピーチ・アプリケーション・クローラ（ＡＳＣ）５２２ｂは、公衆交換電話網（ＰＳＴＮ）またはセルラ・ネットワーク（ＧＳＭもしくはＣＤＭＡ無線通信ネットワーク等）などの電話ネットワーク５０１を介してクローラ・プラットフォームからＩＶＲ５１３に実際に発呼することによって、ＶＸＭＬに準拠しない（またはそのＶＸＭＬインタフェースがアクセス可能でない）ターゲットＡＳＲ／ＮＬＳＲスピーチベースのＩＶＲ５１３に問い合わせる手順であってよい。次いで、クローラは、前述のように、すべての可能なレイヤにおいてスピーチ発話（テキスト−スピーチ）ジェネレータ５２４（ソフトウェアベースのアプリケーションで適切であるように、生の人間の話者を必要とせずに、シミュレートされた顧客によって話される発話を生成するのに利用できるものなど）を介してすべての可能なＤＴＭＦ入力を提供することによってアプリケーションのあらゆるブランチを構文解析することなどによって、いずれかの発見されたコール・フローをリバース・エンジニアリングすることができ、次いで、完全なテスト・ケース・ライブラリを構築することができる。このソリューションは、自動化スピーチ認識エンジン５２３を例えば利用することによって音をテスト・ケース用のテキストに変換するための転写の使用を含み、それにより、ソフトウェアベースのクローラは、電話を介したＩＶＲから
の聞こえた音声プロンプトを構文解析してそれに応答することができる。入力は、電話番号、または複数の番号（内部ＩＶＲアプリケーションを試験すること、もしくは内部電話ネットワークの外部からの外部ＩＶＲを遠隔に試験することなどのための、内部もしくは外部の番号）であってよく、出力は、ドキュメンテーションへの追加またはデータベースへの記憶に適した、テスト・ケースのライブラリであってよい。
【００４６】
設計クローラ５２０は、当技術分野で一般的に使用される標準的なスピーチ・アプリケーション設計テンプレート５１０に問い合わせて、スピーチ／ＤＴＭＦアプリケーションのためのテスト・ケースの完全なライブラリを構築する手順であってよい。このような構成では、クローラは、スプレッドシートなどの設計ドキュメント５１０を辿ることができ、前述のように、ドキュメントからのいずれかの発見されたフローをリバース・エンジニアリングし、データベースとＩＶＲドキュメンテーションとのいずれかまたは両方に組み込むのに適したテスト・ケース・ライブラリを出力することができる。
【００４７】
この実施形態によれば、クローラは、動作中に発見されたコール・フローのリバース・エンジニアリングを実施することができる。これは一般に、ＩＶＲシステムと対話して、利用可能なコール・フロー・オプションを探索するか、メニュー・プロンプトを識別するか、またはコール・フロー・エンドポイントを識別する（例えば、ＩＶＲが、コンタクト・センタ・エージェントや、メッセージを残すための音声録音システムなど、ＩＶＲシステムの外部に発呼者を向けるとき）ことによって、実施することができる。例えば、ＤＴＭＦクローラ（前述のような）が、顧客がするようにアクセス番号をダイヤルすることによって、ＩＶＲに発呼することができる。ＩＶＲにつながると、クローラは、メニュー・プロンプトを記録し、ＡＳＲエンジン５２３との統合などを介して、利用可能なオプションを識別して、入力のための選択肢（例えば、「部門Ａについては１を押してください」）を推測することができる。次いでクローラは、例えば、電話ハンドセット上の数字キーを押すのをシミュレートするのに適切なオーディオ・トーンを生成することによって、メニュー選択肢に対応する入力を提供することができる。この動作がコール・フローの全体にわたって継続することができ、これは、クローラがＩＶＲシステムの中を進むのに伴って、メニュー・プロンプトを聞き、利用可能な選択肢を識別し、選択肢を入力し、新たなプロンプトを聞くことによって、可能である。呼がＩＶＲ外部のエージェントまたは他のシステムにルーティングされたときなど、エンドポイントに達したとき、クローラは、この特定のコール・フローを終結し、それを適切にドキュメント化し（後述のように、ＶＸＭＬデータや、コール・フローを記述する人間可読のドキュメンテーションを作成すること、またはテスト・ケースにおいて使用されるデータを提供することなどによって）、次いで、任意選択で、ＩＶＲに電話をかけ直し、新たな入力選択肢を選択することによってコール・フローを辿り続けることができる。例えば、ＩＶＲシステム全体がこのようにして辿られてよく、これは、最後のメニュー（コール・フローが終了して呼がルーティングされたときを認識し、その直前のメニュー・プロンプトを「最後の」メニュー・プロンプトとして識別することによって、前のコール・フローから識別され得る）から始まり、各メニュー・プロンプトにつき次の利用可能な選択肢を反復的に選択することによって、行われてよい。このようにして、ＩＶＲシステムのいくらかまたはすべてを効率的かつ自動的にリバース・エンジニアリングすることができる。ＶＸＭＬデータを使用したリバース・エンジニアリングに関する別の例示的な構成については、図７に関して後述する。
【００４８】
例証されるように、テスト実行エンジン５４０は、本発明の様々なＩＶＲクローラからの記憶されたまたは受け取った入力に少なくとも部分的に基づいてテスト・ケースを実行することができ、テスト実行の結果を分析のためにテスト結果アナライザ５４５に提示することができる。結果的に得られた分析されたテスト結果５５０は、次いで、人間の分析者などによる検討のために提示されてもよく、または、後の時点でさらに検討されるためもしくは将来の追加分析動作に組み込まれるために、データベースに記憶されるように提
示されてもよい。
【００４９】
本発明のシステムは、特定の構成または応用に対して望ましいものであるように、前述のような複数のクローラおよびクローラ・タイプを交換可能にまたは同時に組み込むことができることを理解されたい。
【００５０】
例えば、いくつかのＩＶＲアプリケーションがすでに配備されたコンタクト・センタが、動作を監査するために、そのコール・フローをドキュメント化しテスト・ケースを導入する必要がある場合がある。このような構成では、１つまたは複数のタイプのＩＶＲクローラを利用して、既存のＩＶＲ設定を最初から辿ってドキュメント化し、動作中に新たなドキュメンテーションおよびテスト・ケースを生成することができる。同様のアプローチを使用して、ドキュメンテーションまたはテスト・ケースが以前に存在していない場合にドキュメンテーションまたはテスト・ケースを追加することができ、以前のドキュメンテーションを必要とすることなく、「配備済み」システムまたは生産システムのドキュメンテーションおよび試験を可能にすることができる。
【００５１】
別の例示的な構成では、コンタクト・センタが、例えば、所有権もしくは場所の変更中に、またはシステム・アップグレード中に、新たなＩＶＲシステムに移行したいと思う場合がある。このような構成では、コンタクト・センタは、１つまたは複数のタイプのＩＶＲクローラを利用して、既存のＩＶＲ構成を辿ってドキュメント化することができ、それにより、このドキュメンテーションを、移行後の再構築のための開始点として使用することができる。加えて、クローラを使用して、既存の構成を記述する、ＩＶＲシステムへのインポートに適した複数のＶＸＭＬデータを作成することもできる。移行動作中、次いでこのＶＸＭＬデータは、新たなＩＶＲシステムにインポートされてよく、前の構成を新たなシステム中で効率的にクローニングして移行手順全体を大幅に促進することができる。任意選択で、移行前に作成されたテスト・ケースまたはドキュメンテーションを使用して、新たなシステムを監査することができ、移行がいずれのエラーも破損データも招かなかったことを確実にすることができる。
【００５２】
別の例示的な構成では、いくつかのＩＶＲクローラが、継続的な動作でコンタクト・センタによって使用されて、ＩＶＲシステムが継続的または周期的に辿られてよく、いずれかの変更が見つかり次第、これらの変更についてのドキュメンテーションが作成されてよい。このような構成では、クローラは、ＩＶＲドキュメンテーションをＩＶＲ構成の状態に対して最新に維持することができ、それにより例えば、メニュー・プロンプトに対して加えられた、コール・フローに影響を及ぼす可能性のある変更を反映させることができる。加えて、テスト・ケースも最新に維持されてよく、コール・フローに対して加えられた変更が試験動作を予想外に断絶しないことを確実にすることができ、また、テスト・ケースを使用していずれの新たな変更も監査できることを確実にすることができる。
【００５３】
例示的な実施形態に関する詳細な記述
図６は、前述のような複数のＩＶＲクローリング・ソフトウェア・アプリケーションを使用してＩＶＲをリバース・エンジニアリングするための例示的な概観方法６００を例証する方法のフローチャートである。この実施形態によれば、この方法は、上記の本発明のシステムにおいて述べたような様々なＩＶＲクローラ、例えば、性質または動作の点でＶＸＭＬ、ＤＴＭＦ、または設計ベースのものである場合のあるクローラを利用することができる。最初の工程で、クローラが、その具体的な性質に従ってＩＶＲ情報にアクセスすることができ、これは、ＶＸＭＬベースのクローラがＵＲＬもしくは記憶済みファイルなどからＶＸＭＬスクリプトをロードすること（６０１）、スピーチ・アプリケーション・クローラ５２１が設計仕様をロードすること（６０５）、または、ＤＴＭＦもしくはＡＳＲ／ＮＬＳＲスピーチベースのクローラがＩＶＲに接続（６１０）してＩＶＲシステムに
直接発呼すること（６１１）などである。次の工程で、クローラは、ＩＶＲアプリケーションをリバース・エンジニアリングするために、その具体的な性質に従ってＩＶＲ情報をクロールするかまたは辿ることができ、これは、ＶＸＭＬドキュメントをリバース・エンジニアリングすること（６０２）や設計仕様をリバース・エンジニアリングすること（６０６）、あるいは、ＤＴＭＦまたは口頭発話（実際の生のもしくは録音された人間のスピーチや、スクリプトを利用したテキスト−スピーチ・ジェネレータなどからの自動生成された人工スピーチなど）音を使用してＩＶＲの会話パスを辿ること（６１２）などによって行うことができる。次の工程６２０で、次いでクローラは、新たなコール・テスト・ケースをテスト・データベースに追加することができ、次の工程６２１で、記憶済みテスト・ケースがテスト・ケース実行エンジンによって取り出されてよく、次いでテスト・ケース実行エンジンは、次の工程６２２でテスト・ケースを実行することができる。次の工程６２３で、テスト・ケース実行の結果が分析されてよく、次いでこれらのテスト結果は、次の工程６２４で、さらに参照されるためにデータベースに記憶されてよい。任意選択の最後の工程６２５で、テスト結果は、人間の分析者などによる手動の検討のために提示されてよく、この分析者は、テストを手動で実施するかまたは前のテストの結果を検討して、動作を検討する。
【００５４】
図７は、本発明による、ＶＸＭＬクローラを使用してＶＸＭＬドキュメントをリバース・エンジニアリングするための例示的な詳細な方法７００を例証する方法のフローチャートである。最初の工程７０１で、クローラが、ＶＸＭＬファイルにリンク付けするＵＲＬをＶＸＭＬブラウザから取り出すことができ、次の工程７０２で、取出し後に、リンク付けされたＶＸＭＬファイルを構文解析することができる。次の工程７０３で、クローラは、ＶＸＭＬファイルを構文解析して、ＩＶＲが選択肢を提示することになるポイントを識別することなどによって、すべての可能な実行ブランチを識別することに進むことができる。この場合、様々な入力が顧客（またはＩＶＲシステムへの他の発呼者）から受け取られる可能性があり、各入力は、ＩＶＲメニューを通して会話パスを導いていく異なる可能な選択肢に対応する。次の工程７０４で、クローラは、見つかったブランチを辿るのにいずれの入力ストリングが必要とされるであろうかを識別することができる。次の工程７０５で、クローラは、識別された入力を使用してテスト・ケースを生み出すことができる。このテスト・ケースは、テスト・ケースを実行することで、ＩＶＲメニューを通して特定のパスを効果的にナビゲートすることになるようなものであり、このナビゲートは、ブランチを示す入力プロンプトを待機し、次いで、必要とされる入力を供給してブランチを１つのパスだけ下に辿り、これ以上のブランチが存在しないときである実行の終わり、およびＩＶＲメニューの終わりに到達するまで以下同様にすることなどによって行われる（この結果、通常、発呼者は、コンタクト・センタ・エージェントに接続されることになるか、または、ＩＶＲ外部の支援を得るためのさらに他の指示（例えば、さらに助けを求めるための具体的な番号またはウェブ・アドレス）が与えられることなどになるであろう）。最後の工程７０６で、結果的に得られたテスト・ケースは、将来の参照のためにデータベースに記憶されてよい。
【００５５】
図８は、本発明による、ＤＴＭＦまたはＡＳＲ／ＮＬＳＲスピーチ・クローラを使用してＤＴＭＦまたはスピーチベースの音を介してＩＶＲと対話するための例示的な詳細な方法８００を例証する方法のフローチャートである。最初の工程８０１で、クローラは、ＰＳＴＮまたはインターネットベースの接続など（ＤＴＭＦトーンベースのまたは口頭発話の入力をサポートする、いくつかのボイスオーバＩＰ（ＶｏＩＰ）サービスのいずれかなど）を介して、ＩＶＲシステムに発呼することができる。次の工程８０２で、クローラは、入力を求めるプロンプトをＩＶＲから受け取ることができ、これは、発呼者が通常、ＩＶＲメニューをナビゲートし続けるために選択肢を発呼者に指示する音声プロンプトを聞くことになるものなどである（例えば、「技術サポートについては１を押してください。アカウント・サービスについては２を押してください」、または、スピーチ・アプリケー
ションの場合は、「技術サポートについてはサポートと言ってください。アカウント・サービスについてはアカウントと言ってください」など）。次の工程８０３で、クローラは、自動化スピーチ認識（ＡＳＲ）を使用してこのプロンプトを処理することができ、それにより、ＩＶＲメニュー・プロンプトによって何が話されているかを識別してこのプロンプトを処理することなどができる。次の工程８０４で、クローラは、許容可能なＤＴＭＦまたはスピーチ発話入力を識別することができる。これは、（前の例を続けると）キー押下「１」もしくは「２」（またはスピーチの場合は例えば「サポート」もしくは「アカウント」）が、この特定のプロンプトに対する可能な入力選択肢であると識別することなどである。次いで、クローラは、これらの入力選択肢を処理スタックに追加することができ、したがって、可能な入力は、それらに対応するプロンプトと共に、それらに遭遇した順序で記憶されることが可能であり、それにより、動作中にＩＶＲメニュー・システムを順序正しく辿るのが容易になる。次の工程８０５で、クローラは、スタック上の次のＤＴＭＦまたはスピーチ発話入力（この例の場合では、キー「１」を押すことまたは「サポート」と言うことに対応するトーンなど）を取り出し、対応するＤＴＭＦトーン入力をＩＶＲシステムに供給することができ、それにより、メニュー・プロンプトをトリガしてメニュー・パスを辿り続けることなどができる。追加のプロンプトに遭遇する間、動作は前の工程８０２からルーピングまたは反復方式で継続することができ、したがって、クローラは、ＩＶＲからのオーディオ・プロンプトを受け取って処理し、適切なＤＴＭＦまたはスピーチ発話入力を識別し、これらをスタック上に配置し、次の入力を供給して、遭遇するＩＶＲメニュー・プロンプトの中を進む、ということを継続することができる。遭遇するプロンプトがこれ以上存在しないとき（クローラがＩＶＲメニュー・パスの終わりに達したときなど）は、次の工程８０６で、クローラは、遭遇したプロンプトおよび供給された入力に少なくとも部分的に基づいて、使用されたパスについてのテスト・ケースを生成することができ、次いで、スタック上の次のＤＴＭＦまたはスピーチ発話入力に進み、ＩＶＲを通して新たなメニュー・パスを下に継続することができる。最後の工程８０６で、クローラは、結果的に得られたテスト・ケースを、記憶および将来の参照のためにデータベースに送ることができる。テスト・ケースは、完成するにつれて個々に送られてもよく（クローラが新たなケースを求めて追加のＩＶＲパスをまだ辿っている間に、など）、または、すべての可能なＩＶＲパスが尽きて動作が完了した後で全部一度にバルク操作により送られてもよいことを理解されたい。
【００５６】
図９は、本発明の好ましい一実施形態による、ＩＶＲクローラを使用してシステム移行を実施するための例示的な方法９００を例証する方法のフローチャートである。最初の工程９０１で、ＩＶＲクローラは、既存のＩＶＲシステムに接続することができる。接続は、ＤＴＭＦクローラを使用して番号をダイヤルし、トーンベースのダイヤルを介してＩＶＲシステムと対話するなど、特定の構成または使用に従って変動することがある。次の工程９０２で、ＩＶＲクローラは、利用可能なＩＶＲブランチおよびダイアログ・オプションを辿ることができる。例えば、ＤＴＭＦ構成では、クローラは、音声プロンプトを聞き、次いで、電話キーパッド上で押された番号に対応する入力を提供することができ、実際の発呼者と同様にしてＩＶＲシステムの中を進むことができる。次の工程９０３で、ＩＶＲクローラは、発見されたＩＶＲ詳細のドキュメンテーションを作成することができる。例えば、聞こえた音声プロンプトを記述する人間可読テキスト・ドキュメンテーションを作成すること（例えばスピーチ−テキスト変換を使用するなどして）、または、ＩＶＲシステムの対話式グラフィカル・マップを生成すること（図１０に関して後述するように）ができる。次の工程９０４で、クローラは、辿られたＩＶＲシステムを記述する複数のリバース・エンジニアリングされたＶＸＭＬデータを作成することができる。このＶＸＭＬデータは、例えば、既存のＩＶＲデータを新たなシステムに移行するために、ＩＶＲシステムにインポートする際に使用するのに一般に適するものであり（例えば、新たなＩＶＲシステムへのアップグレード時に）、または、ＩＶＲバックアップとして使用するのに一般に適するものである（例えば、障害からの回復、もしくは複製ＩＶＲシステムの追加イ
ンスタンスの展開などのために、ＩＶＲシステムのコピーを復元することが必要な場合に備えて）。次の工程９０５で、作成されたＶＸＭＬデータは、新たなＩＶＲシステムにインポートされてよく、任意選択で、いずれかの既存のデータをオーバライドしてよい（例えば、望まれないＩＶＲ構成をクリアし、新たなシステムを、前にクロールされたシステムのコピーとして設定するために）。これは、複製ＩＶＲシステムの追加インスタンスを展開するのに使用することができる（既存の構成をクライアントに送達するＩＶＲコンテンツ・プロバイダがＩＶＲシステムを迅速に展開すること、または、既存のＩＶＲ構成をアップグレードもしくは置換として新たなシステムに移行する際に使用すること、などのために）。次の工程９０６で、新たなＩＶＲシステムが、インポートされたＶＸＭＬデータを構文解析し、ＩＶＲブランチとダイアログ・ツリーと他の構成との複製セットを作成することができ、前にクロールされたＩＶＲシステムの機能の複製を生み出すことができる。この時点で、新たなＩＶＲシステムは、展開に向けて準備ができており完全に機能するものであってよく、前にクロールされたシステムと同様の構成を有することができる。または、追加の動作工程９０７で、次いでＩＶＲクローラが使用されて、新たなＩＶＲが辿られてよく、それにより例えば、変更があればそれらがドキュメント化され、エラーが存在しないかどうかチェックされ、またはバックアップ目的などのための新たなＶＸＭＬが作成される。
【００５７】
このようにして、既存のＩＶＲシステムがクロールされ構文解析されてよく、それにより、前述のようにドキュメンテーションおよびテスト・ケースが作成されるだけでなく、ＩＶＲシステムを完全にまたは部分的に複製または復元する際に使用するのに適するであろうＶＸＭＬデータの機能セットもまた作成される。ＶＸＭＬデータを使用して、ＩＶＲシステムのバックアップ・コピーを記憶することができ、それにより例えば、障害に備えてＩＶＲの履歴スナップショットを維持することができる（例えば、ダイアログ・ツリーを断絶するかまたは他の動作問題を引き起こす変更が加えられた場合、問題が診断される間にバックアップを復元して機能を迅速に修復することができる）。ＶＸＭＬデータはまた、ＩＶＲシステムにインポートするのにも適するであろう。これは一般に、アップグレードされたシステムに移行することや、あるＩＶＲを別のＩＶＲで上書きすることなどのために、ＩＶＲ構成のいくらかまたはすべてを複製する際に使用するものである。例えば、会社が、改良されたＩＶＲシステムにアップグレードしたい場合があるが、ＩＶＲを手動で構成して既知の望ましい構成に整合させようと試みるのではなく、本発明により、既存のＩＶＲがクローニングまたは複製され、新たなシステムにロードされることが可能である。別の例は、複数のＩＶＲ構成が同時に展開され監視されることが可能な、試験構成であろう。測定された性能結果に基づいて、適切なまたは「最も望ましい」構成が決定された後、望ましい構成をクロールすることから生み出されたＶＸＭＬデータが使用されて、試験において使用された他の構成が上書きされ置換されることが可能であり、したがって、望ましい構成のみが動作中であり続ける。
【００５８】
図１０は、本発明の一実施形態による、対話式ＩＶＲマップ１０１０を閲覧するための例示的なユーザ・インタフェース１０００の図である。この実施形態によれば、ＩＶＲクローラが、ＩＶＲシステムをドキュメント化するためのマップ１０１０を作成することができ、したがって例えば、ユーザは、理解しやすいフォーマットでダイアログ・ツリーおよびオプションを容易に見ることができ、不完全なツリーや、古くなったまたは正しくないオプションなど、改善のための領域を視覚的に識別することができる。メイン・プロンプト１０１１またはルート・レベル・ダイアログを識別するための、グラフィックが表示されてよく、これは例えば、一般に、ＩＶＲにダイヤルしたときに聞こえる最初のプロンプトである。また、ユーザが選択するための複数の利用可能なオプション１０１２が表示されてよく、これらは例えば、メイン・プロンプト１０１１のグラフィックの内部でネストされるようにして表示されてよい。メニュー・プロンプトおよび選択肢の具体的な視覚的性質または構成は、実施形態により変動することがあり、記述および図示される構成は
、例であって妥当な明確性を提供するものと意図されることを理解されたい。複数の追加のメニュー・プロンプト１０１３が示されてよく、これらは、ダイアログ・ツリー中における、前のプロンプトに対するそれぞれの位置を示すように構成されてよい（例えば、左から右へ、または上から下への形で）。各メニュー・プロンプトは、プロンプトを聞いた後で発呼者に利用可能な選択肢に対応する複数の特定の選択肢１０１２と共に表示されてよく、したがって、視覚的構成は、メニュー・プロンプトとそれらに対応する選択肢との関係、および、選択肢とそれが選ばれた場合に至るであろう後続のプロンプトとの関係、を示すことができる。複数のエンドポイント１０１４が表示されてよく、これらは、発呼者がＩＶＲ中でそのレベルに達したときにダイアログ・ツリーが終了することを示す。例えば、発呼者は、いくつかの選択を行って呼の目的を示した後、この実施形態によるエンドポイントによって示され得るように、発呼者の問題を解決するためにコンタクト・センタ・エージェントに接続されることがある。さらに、この実施形態によれば、いくつかのプロンプト、選択肢、またはダイアログ・エンドポイントは、それらに対応する音コンテンツ（ＩＶＲシステムとの対話中に発呼者に提示される場合があるような）の、テキストベースの記述または要約と共に示されることも可能であろう。したがって一般に、マップ１０１０を見るユーザは、発呼者がＩＶＲとの対話中にツリーの中のいずれか特定の時点で何を聞く可能性があるかをすぐに理解することができ、また、古くなった記述や、語彙または文法の誤りなど、ダイアログ・エラーに気付くことができる。加えて、表示されるプロンプト、選択、またはエンドポイントは、接続を示す視覚的な印（例えば、「発呼者が番号１を押すとこの特定のメニュー・プロンプトに至る」ことを示すための）、および、ダイアログ・フローを示すための他の直接的な相関、と共に提示されることも可能であろう。このようにして、ユーザは、どのようにＩＶＲへの呼がダイアログ・パスの中を進むことができるかを容易に見ることができ、また、コール・フローに関する問題があればそれに気付かされることが可能である。これらの問題は、無限ループに至る選択肢、または、呼が適正にルーティングされるのではなくドロップされることになるオプション、または、ＩＶＲシステム中で生じる可能性のあるいずれか他のそのようなルーティング問題、などである。
【００５９】
この実施形態によれば、ＩＶＲマップ１０１０は対話式であってよく、それにより、マップ１０１０を見るユーザは、その個々の選好または目的に適した方式で閲覧し（例えば、提示される情報の詳細レベルを増減させたり、マップの特定領域を見て特定のダイアログ・オプションまたは経路を点検したりするなど）、提示された情報に基づいてすぐにアクションをとることができる。例えば、ダイアログ・プロンプト中の誤り（古くなった記述や正しくない語彙など）が見られた場合、ユーザは、マップ１０１０との直接対話を介して問題を訂正することができる。ＩＶＲシステムをドキュメント化するためのマップ１０１０を作成するＩＶＲクローラはまた、マップ１０１０中で提示されている情報に対応する複数のＶＸＭＬデータを作成することもでき、この２つの間の、生の、すなわち、リアルタイムの相関が、ＩＶＲシステムによって実施されてよい。したがって、対話式マップを介した変更が処理されてよく、対応するＶＸＭＬが、変更に整合するように更新されてよく、修正されたＶＸＭＬがＩＶＲシステムにインポートされて（図９に関して上述したように）、変更が動作ＩＶＲシステム中で施行されてよい。このようにして、ユーザは、専門の訓練も、ＩＶＲシステムに対するいずれのレベルの熟知も必要とせずに、ＩＶＲシステムを保守または修正する権限を与えられてよく、いずれの変更も、理解しやすいグラフィカル・コンテキスト中で見られることが可能であり、これにより、変更の結果が明らかになって、予測されない複雑な事態が防止される。
【００６０】
図７〜図１０に関して上述した実施形態によれば、クローリング動作が完了した後の対話式マップ（図１０に記載のような）に加えて、ＩＶＲクローラの特定の動作もしくは構成、または特定のクローリング動作が、対話式にされるかまたは人間のユーザによって構成可能にされてよい。例えば、ユーザのデバイス上のウェブ・ブラウザ・ソフトウェア・
アプリケーションを使用してアクセス可能なウェブ・インタフェースなどを介して、ソフトウェア・インタフェースが提供されてよく、このソフトウェア・インタフェースは、ユーザがＩＶＲクローリング動作を指示することまたはＩＶＲクローラに関する全般的な動作を構成することができるように、様々な構成オプションまたは対話オプションを提供することができる。例示的な構成オプションは、特定のクローラ・タイプ（ＤＴＭＦやＡＳＲなど）または特定のクローリング動作モード（例えば、いずれの形のリバース・エンジニアリング、出力、もしくはＩＶＲトラバースが実施されるべきかを選択するための、「ドキュメント化のみ」や「ドキュメント化およびテスト」など）を選択すること、ダイヤル番号（例えば、クローリングのためにＩＶＲシステムにダイヤルしてつながるのに使用される番号）を設定すること、言語を選択すること（例えば、ＡＳＲ動作を改善するために）、あるいは、クローラがエミュレートするための電話番号を設定すること（例えば、電話番号が発呼者のデバイスから提供されると通常予想することになるＩＶＲと対話するときに）を含むことができる。ユーザはまた、キーワード・ベースまたはフレーズ・ベースの代用規則を構成することもでき、これは、例えばＡＳＲ動作を補助するために頭字語ＤＴＭＦを表音発音「ディーティーエムエフ」で置き換えるなどである。通知が構成されてもよく、これは例えば、電子メール・アドレスまたは他の連絡先情報を設定することによって行われ、したがって、クローリング動作が完了したときまたはエラーが発生した場合にユーザに通知されてよい。加えて、クローラが動作を終える前にいくつのレベルのメニュー・オプションを調べるべきかを構成するために、クロール深度が構成可能であってもよい。それにより、例えば、クローラが、メイン・プロンプトに対する最近の変更を試験するために、余分な時間またはリソースを費やしてさらに他の未変更のメニュー・プロンプトを試験することなしに、メイン・メニュー・プロンプトのみを試験することが確実になる。
【００６１】
当業者なら、前述の様々な実施形態の、可能な修正の範囲を認識するであろう。したがって、本発明は、特許請求の範囲およびそれらの均等物によって定義される。
【図１】
2017188886.tif 000003
【図２】
2017188886.tif 000004
【図３】
2017188886.tif 000005
【図４】
2017188886.tif 000006
【図５】
2017188886.tif 000007
【図６】
2017188886.tif 000008
【図７】
2017188886.tif 000009
【図８】
2017188886.tif 000010
【図９】
2017188886.tif 000011
【図１０】
2017188886.tif 000012
【外国語明細書】
2017188886000001.pdf