(57)【特許請求の範囲】
【請求項１】
メディアベースのカンファレンス・セッションを再ルーティングするためのコンピュータ化された方法であって、以下のステップを含む方法：
外部メディアストリームによってサーバコンピュータ装置にそれぞれ接続されるとともに第１の内部メディアストリームによって前記サーバコンピュータ装置から第１の多地点制御ユニットにそれぞれ接続されている複数のエンドポイントデバイス間の、第１のカンファレンス・セッションに関連したコンディションを前記サーバコンピュータ装置が判定するステップであって、ここで、前記コンディションは、新たな多地点制御ユニットが必要であることを示すものである、該ステップ；
前記サーバコンピュータ装置が、前記複数のエンドポイントデバイス間の第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップであって、該ステップは、セッション要件を特定するために前記第１のカンファレンス・セッションを分析することと、前記第２の多地点制御ユニットが前記セッション要件を満たすことが可能かどうか判断することとを含み、前記セッション要件が、以下のうちの１つ以上を含む、該ステップ：前記第１のカンファレンス・セッションに参加している前記エンドポイントデバイスのカウント数、前記第１のカンファレンス・セッションに参加している前記エンドポイントデバイスによって消費されるメディア帯域幅、及び前記第１のカンファレンス・セッションに参加している前記複数のエンドポイントデバイスの少なくとも１つによって使用されるメディアプロトコル；
前記サーバコンピュータ装置が、前記外部メディアストリームが接続されたままで、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断するステップ；
前記サーバコンピュータ装置が、前記複数のエンドポイントデバイスの各々を、第２の内部メディアストリームによって前記サーバコンピュータ装置から前記第２の多地点制御ユニットに接続するステップ；及び
前記サーバコンピュータ装置が、前記第２の多地点制御ユニット上で、前記複数のエンドポイントデバイス間の前記第２のカンファレンス・セッションを確立するステップ。
【請求項２】
請求項１に記載の方法であって、前記コンディションが、前記第１の多地点制御ユニットの障害、所定の限度を超える前記第１のカンファレンス・セッションのエンドポイントデバイスのカウント数、及び、所定の限度を超える前記第１のカンファレンス・セッションから生じるリソース負荷のうちの１つ以上を含む、該方法。
【請求項３】
請求項１に記載の方法であって、前記サーバコンピュータ装置が、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断する前に、前記複数のエンドポイントデバイスに通知するステップを更に含む、該方法。
【請求項４】
請求項１に記載の方法であって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップが、前記第２の多地点制御ユニットのロケーションを特定することを含む、該方法。
【請求項５】
請求項１に記載の方法であって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップが、多地点制御ユニットのリストを特定することと、前記多地点制御ユニットの各々に関連した現在のリソース利用状況に基づいて、前記リストから多地点制御ユニットを選択することとを含む、該方法。
【請求項６】
請求項１に記載の方法であって、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断するステップは、前記外部メディアストリームがアクティブに維持されるように、前記外部メディアストリームによって、前記複数のエンドポイントデバイスにメディアを伝送することを含む、該方法。
【請求項７】
請求項１に記載の方法であって、前記ステップが、リアルタイムで実行される、該方法。
【請求項８】
請求項１に記載の方法であって、前記サーバコンピュータ装置が、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定する前に、前記第１のカンファレンス・セッションに関連した前記コンディションが解消するのを待つステップを更に含む、該方法。
【請求項９】
請求項８に記載の方法であって、前記サーバコンピュータ装置は、所定の期間待機する、該方法。
【請求項１０】
メディアベースのカンファレンス・セッションを再ルーティングするためのシステムであって、前記システムはサーバコンピュータ装置を備え、前記サーバコンピュータ装置は、以下のステップを行うように構成される、該システム：
外部メディアストリームによって前記サーバコンピュータ装置にそれぞれ接続されるとともに第１の内部メディアストリームによって前記サーバコンピュータ装置から第１の多地点制御ユニットにそれぞれ接続されている複数のエンドポイントデバイス間の、第１のカンファレンス・セッションに関連したコンディションを判定するステップであって、前記コンディションは、新たな多地点制御ユニットが必要であることを示す、該ステップ；
前記複数のエンドポイントデバイス間の第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップであって、該ステップは、セッション要件を特定するために前記第１のカンファレンス・セッションを分析することと、前記第２の多地点制御ユニットが前記セッション要件を満たすことが可能かどうか判断することとを含み、前記セッション要件が、以下のうちの１つ以上を含む、該ステップ：前記第１のカンファレンス・セッションに参加している前記エンドポイントデバイスのカウント数、前記第１のカンファレンス・セッションに参加している前記エンドポイントデバイスによって消費されるメディア帯域幅、及び前記第１のカンファレンス・セッションに参加している前記複数のエンドポイントデバイスの少なくとも１つによって使用されるメディアプロトコル；
前記外部メディアストリームが接続されたままで、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断するステップ；
前記複数のエンドポイントデバイスの各々を、第２の内部メディアストリームによって前記サーバコンピュータ装置から前記第２の多地点制御ユニットに接続するステップ；及び
前記第２の多地点制御ユニット上で、前記複数のエンドポイントデバイス間の前記第２のカンファレンス・セッションを確立するステップ。
【請求項１１】
請求項１０に記載のシステムであって、前記コンディションが、前記第１の多地点制御ユニットの障害、所定の限度を超える前記第１のカンファレンス・セッションのエンドポイントデバイスのカウント数、及び、所定の限度を超える前記第１のカンファレンス・セッションから生じるリソース負荷のうちの１つ以上を含む、該システム。
【請求項１２】
請求項１０に記載のシステムであって、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断する前に、前記複数のエンドポイントデバイスに通知するように前記サーバコンピュータ装置が更に構成される、該システム。
【請求項１３】
請求項１０に記載のシステムであって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップが、前記第２の多地点制御ユニットのロケーションを特定することを含む、該システム。
【請求項１４】
請求項１０に記載のシステムであって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップが、多地点制御ユニットのリストを特定することと、前記多地点制御ユニットの各々に関連した現在のリソース利用状況に基づいて、前記リストから多地点制御ユニットを選択することとを含む、該システム。
【請求項１５】
請求項１０に記載のシステムであって、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断するステップは、前記外部メディアストリームがアクティブに維持されるように、前記外部メディアストリームによって、前記複数のエンドポイントデバイスにメディアを伝送することを含む、該システム。
【請求項１６】
請求項１０に記載のシステムであって、前記ステップが、リアルタイムで実行される、該システム。
【請求項１７】
請求項１０に記載のシステムであって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定する前に、前記第１のカンファレンス・セッションに関連した前記コンディションが解消するのを待つように前記サーバコンピュータ装置が更に構成される、該システム。
【請求項１８】
請求項１７に記載のシステムであって、前記サーバコンピュータ装置は、所定の期間待機する、該システム。
【請求項１９】
メディアベースのカンファレンス・セッションを再ルーティングするためのコンピュータプログラムであって、
非一時的なコンピュータ可読記憶媒体内に有形に具現化されたコンピュータプログラムであり、
前記コンピュータプログラムは、サーバコンピュータ装置に、以下の動作を行わせるように機能する命令を含む、該コンピュータプログラム：
外部メディアストリームによって前記サーバコンピュータ装置にそれぞれ接続されるとともに第１の内部メディアストリームによって前記サーバコンピュータ装置から第１の多地点制御ユニットにそれぞれ接続されている複数のエンドポイントデバイス間の、第１のカンファレンス・セッションに関連したコンディションを判定すること、ここで、前記コンディションは、新たな多地点制御ユニットが必要であることを示す；
前記複数のエンドポイントデバイス間の第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定することであって、該特定することは、セッション要件を特定するために前記第１のカンファレンス・セッションを分析することと、前記第２の多地点制御ユニットが前記セッション要件を満たすことが可能かどうか判断することとを含み、前記セッション要件が、以下のうちの１つ以上を含む、該特定すること：前記第１のカンファレンス・セッションに参加している前記エンドポイントデバイスのカウント数、前記第１のカンファレンス・セッションに参加している前記エンドポイントデバイスによって消費されるメディア帯域幅、及び前記第１のカンファレンス・セッションに参加している前記複数のエンドポイントデバイスの少なくとも１つによって使用されるメディアプロトコル；
前記外部メディアストリームが接続されたままで、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断すること；
前記複数のエンドポイントデバイスの各々を、第２の内部メディアストリームによって前記サーバコンピュータ装置から前記第２の多地点制御ユニットに接続すること；及び
前記第２の多地点制御ユニット上で、前記複数のエンドポイントデバイス間の前記第２のカンファレンス・セッションを確立すること。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、広くは、セキュアなメディアベース・カンファレンシングにおいて、動的なカンファレンスセッションの再ルーティングを行うための、コンピュータプログラムプロダクトを含む、方法および装置に関するものである。
【背景技術】
【０００２】
メディアベース（すなわち、ビデオおよび／または音声）カンファレンシングは、従来、動的なリソース割り当て、監視、データ保存、セッション移動、およびメディアネゴシエーションの特性を欠いている。一般的に、カンファレンス・コールは、静的に構成されたプライベートネットワークを介して、ネットワークおよびカンファレンシングシステムに既知の認証済みエンドポイントデバイス間で実施される。一部の例では、それらのプライベートネットワークは、特定のベンダからのプロプライエタリ・ソフトウェアおよび／またはハードウェアプラットフォームで動作し、プロプライエタリ技術の範囲外のエンドポイントデバイスがカンファレンシング・プラットフォームにアクセスすることを難しくしている。
【０００３】
また、多くの場合、ミーティングルーム、ＩＶＲ、およびルーティング機能のようなカンファレンシング・リソースは、プライベートネットワークにおいて、カンファレンシングシステムの予想される利用状況に基づいて予め構成設定され、変化するネットワーク要求および予想外のリソース利用状況に対して適応することは、困難でコストがかかる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
そこで、必要なのは、対話型音声応答（ＩＶＲ）機能および自動出席などのコール・エンハンスメント特性、エンドポイントのパスワード管理、（フィルタリングおよび許可／拒否機能を含む）多要素認証および認可などのコール・セキュリティ特性、記録オプション、規制ルール、および他の保持／監視特性などのコール・コンプライアンス特性を与えるロバストな特性群を提供しつつ、メディアベース・カンファレンシングにおいて動的なリソース割り当て、データ保存、カンファレンス・セッション監視、およびメディアベースネゴシエーションを実施するための方法およびシステムである。本明細書に記載のシステムおよび方法は、ルーティング、パーミッション、認証などに関する動的意思決定を提供するという利点を有する。本明細書に記載のシステムおよび方法は、様々に異なるタイプのソフトウェアおよびハードウェアプラットフォームで動作するエンドポイント間のシームレスな相互運用性を備えることによるメディアベース・カンファレンシングの利点を提供する。
【課題を解決するための手段】
【０００５】
本明細書に記載のシステムおよび方法は、メディアベースのカンファレンス・コールの可用性および効率的ルーティングを確保するために、システムのハードウェアおよびソフトウェアリソースを動的に割り当てるという利点を有する。例えば、本明細書に記載のシステムおよび方法によって割り当てられるハードウェアおよびソフトウェアリソースは、メッシュベースのフレームワークで通信する複数の地理的に分散した（例えば、同一の物理的エリアにない）独立ノード上に配置することができる。この属性によって、本システムは、従来の共通に使用される「シングルボックス」システムに代えて、コンポーネント化されたコールシステムという利点を提供することが可能となる。また、所与のカンファレンス・コール、エンドポイントデバイス、またはユーザに対してどのようなアクションを取るべきかについての意思決定において、システムを構成するプロセスおよびモジュールは、互いに独立に、システムの他のノードまたはモジュールに依存することなく動作することができる。本明細書に記載のシステムおよび方法は、「カンファレンス・コール」を、いずれの特定の物理的インフラストラクチャからも切り離すという利点を実現する。
【０００６】
本発明は、一態様では、メディアベースのカンファレンス・セッションにおいてリソースを割り当てる方法を特徴とする。サーバコンピュータ装置は、カンファレンス・セッションに参加するための第１の要求を、そのカンファレンス・セッションの非主催者参加者に関連付けられた第１のエンドポイントデバイスから受信し、このとき、第１の要求は、第１のエンドポイントデバイスからの第１のメディアストリームを含んでいる。サーバコンピュータ装置は、第１の要求に基づいてメディアロケーションサービスに問い合わせすることにより、そのカンファレンス・セッションのホスティングサイトを決定し、さらに、第１の要求に基づいてホスティングサイトのデータベースに問い合わせすることにより、カンファレンス・セッションの構成属性を決定する。サーバコンピュータ装置は、第１のエンドポイントデバイスのメディアストリームを、ホスティングサイトのウェイティングルームに接続する。サーバコンピュータ装置は、そのカンファレンス・セッションに参加するための第２の要求を、そのカンファレンス・セッションの主催者に関連付けられた第２のエンドポイントデバイスから受信し、このとき、第２の要求は、第２のエンドポイントデバイスからの第２のメディアストリームを含んでいる。サーバコンピュータ装置は、第２の要求に基づいてメディアロケーションサービスに問い合わせすることにより、そのホスティングサイトにおけるカンファレンス・セッションのためのミーティングルームを決定し、さらに、第１のメディアストリームおよび第２のメディアストリームをそのミーティングルームに転送することにより、カンファレンス・セッションを確立する。
【０００７】
本発明は、別の態様では、メディアベースのカンファレンス・セッションにおいてリソースを割り当てるためのシステムを特徴とする。システムは、カンファレンス・セッションに参加するための第１の要求を、そのカンファレンス・セッションの非主催者参加者に関連付けられた第１のエンドポイントデバイスから受信するように構成されたサーバコンピュータ装置を備え、このとき、第１の要求は、第１のエンドポイントデバイスからの第１のメディアストリームを含んでいる。サーバコンピュータ装置は、第１の要求に基づいてメディアロケーションサービスに問い合わせすることにより、そのカンファレンス・セッションのホスティングサイトを決定し、さらに、第１の要求に基づいてホスティングサイトのデータベースに問い合わせすることにより、カンファレンス・セッションの構成属性を決定するように、さらに構成されている。サーバコンピュータ装置は、第１のエンドポイントデバイスのメディアストリームを、ホスティングサイトのウェイティングルームに接続するように、さらに構成されている。サーバコンピュータ装置は、そのカンファレンス・セッションに参加するための第２の要求を、そのカンファレンス・セッションの主催者に関連付けられた第２のエンドポイントデバイスから受信するように、さらに構成されており、このとき、第２の要求は、第２のエンドポイントデバイスからの第２のメディアストリームを含んでいる。サーバコンピュータ装置は、第２の要求に基づいてメディアロケーションサービスに問い合わせすることにより、そのホスティングサイトにおけるカンファレンス・セッションのためのミーティングルームを決定し、さらに、第１のメディアストリームおよび第２のメディアストリームをそのミーティングルームに転送することにより、カンファレンス・セッションを確立するように、さらに構成されている。
【０００８】
本発明は、別の態様では、メディアベースのカンファレンス・セッションにおいてリソースを割り当てるためのコンピュータプログラムプロダクトであって、非一時的なコンピュータ可読記憶媒体内に有形に具現化されたコンピュータプログラムプロダクトを特徴とする。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、カンファレンス・セッションに参加するための第１の要求を、そのカンファレンス・セッションの非主催者参加者に関連付けられた第１のエンドポイントデバイスから受信させるように機能する命令を含み、このとき、第１の要求は、第１のエンドポイントデバイスからの第１のメディアストリームを含んでいる。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、第１の要求に基づいてメディアロケーションサービスに問い合わせすることにより、そのカンファレンス・セッションのホスティングサイトを決定させ、さらに、第１の要求に基づいてホスティングサイトのデータベースに問い合わせすることにより、カンファレンス・セッションの構成属性を決定させるように機能する命令をさらに含む。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、第１のエンドポイントデバイスのメディアストリームを、ホスティングサイトのウェイティングルームに接続させるように機能する命令をさらに含む。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、そのカンファレンス・セッションに参加するための第２の要求を、そのカンファレンス・セッションの主催者に関連付けられた第２のエンドポイントデバイスから受信させるように機能する命令をさらに含み、このとき、第２の要求は、第２のエンドポイントデバイスからの第２のメディアストリームを含んでいる。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、第２の要求に基づいてメディアロケーションサービスに問い合わせすることにより、そのホスティングサイトにおけるカンファレンス・セッションのためのミーティングルームを決定させ、さらに、第１のメディアストリームおよび第２のメディアストリームをそのミーティングルームに転送することにより、カンファレンス・セッションを確立させるように機能する命令をさらに含む。
【０００９】
上記の態様はいずれも、以下の特徴のうちの１つ以上を含むことができる。一部の実施形態では、カンファレンス・セッションのホスティングサイトには、カンファレンス・セッションをホストするために使用されるコンピュータ装置の地理的ロケーション、およびカンファレンス・セッションをホストするために使用されるコンピュータ装置の論理的ロケーション、のうちの１つ以上が含まれる。一部の実施形態では、構成属性には、認証データ、セッション主催者データ、セッション参加者データ、セッションのメディア能力データ、セッション特性データ、のうちの１つ以上が含まれる。一部の実施形態では、ウェイティングルームは、対話型音声応答（ＩＶＲ）システムを含む。
【００１０】
一部の実施形態では、カンファレンス・セッションのホスティングサイトを決定することは、利用できるホスティングサイトのリストをメディアロケーションサービスから取得することと、第１のエンドポイントデバイスのロケーションに基づいてホスティングサイトを選択することとを含む。一部の実施形態では、カンファレンス・セッションのホスティングサイトを決定することは、利用できるホスティングサイトのリストをメディアロケーションサービスから取得することと、カンファレンス・セッションの主催者に基づいてホスティングサイトを選択することとを含む。
【００１１】
一部の実施形態では、そのホスティングサイトにおけるカンファレンス・セッションのためのミーティングルームを決定することは、利用できるミーティングルームのリストをメディアロケーションサービスから取得することと、そのカンファレンス・セッションを確立するために必要なリソースに基づいてミーティングルームを選択することとを含む。一部の実施形態では、サーバコンピュータ装置は、第１の要求に基づいてユーザプロファイル・データベースに問い合わせすることによって、その非主催者参加者を識別する。一部の実施形態では、サーバコンピュータ装置は、第３のエンドポイントデバイスに接続して、第３のエンドポイントデバイスからの第３のメディアストリームをミーティングルームに転送する。
【００１２】
一部の実施形態では、第１の要求は、その非主催者参加者に関連付けられた第１の認証資格情報を含み、サーバコンピュータ装置は、第１の認証資格情報に基づいて、第１のエンドポイントデバイスをミーティングルームに接続すべきかどうか判断する。一部の実施形態では、第２の要求は、その主催者に関連付けられた第２の認証資格情報を含み、サーバコンピュータ装置は、第２の認証資格情報に基づいて、カンファレンス・セッションを確立すべきかどうか判断する。
【００１３】
本発明は、別の態様では、複数のメディアベースカンファレンス・セッションのセッション状態を管理する方法を特徴とする。サーバコンピュータ装置は、一次インメモリデータ構造体内のデータ要素を更新するための第１の要求を受け取り、このとき、該要求は、１つ以上の進行中のメディアベースカンファレンス・セッションのセッション状態に関連付けられたデータ要素に対する更新を含んでいる。サーバコンピュータ装置は、そのデータ要素を更新するための、第１の要求の後に受け取る後続の要求をブロックし、そしてブロックされた各要求に関連付けられたタイムスタンプに基づいて、それらのブロックされた要求を順に一時キューに格納する。サーバコンピュータ装置は、そのデータ要素に対する更新を二次インメモリデータ構造体に複製する。サーバコンピュータ装置は、複製ステップが完了すると、第１の要求のデータ要素の更新に基づいて、一次インメモリデータ構造体においてそのデータ要素を更新し、そしてブロックされた要求をタイムスタンプに基づいて処理する。
【００１４】
本発明は、別の態様では、複数のメディアベースカンファレンス・セッションのセッション状態を管理するためのシステムを特徴とする。システムは、一次インメモリデータ構造体内のデータ要素を更新するための第１の要求を受け取るように構成されたサーバコンピュータ装置を備え、このとき、該要求は、１つ以上の進行中のメディアベースカンファレンス・セッションのセッション状態に関連付けられたデータ要素に対する更新を含んでいる。サーバコンピュータ装置は、そのデータ要素を更新するための、第１の要求の後に受け取る後続の要求をブロックし、そしてブロックされた各要求に関連付けられたタイムスタンプに基づいて、それらのブロックされた要求を順に一時キューに格納するように、さらに構成されている。サーバコンピュータ装置は、そのデータ要素に対する更新を二次インメモリデータ構造体に複製するように、さらに構成されている。サーバコンピュータ装置は、複製ステップが完了すると、第１の要求のデータ要素の更新に基づいて、一次インメモリデータ構造体においてそのデータ要素を更新し、そしてブロックされた要求をタイムスタンプに基づいて処理するように、さらに構成されている。
【００１５】
本発明は、別の態様では、複数のメディアベースカンファレンス・セッションのセッション状態を管理するためのコンピュータプログラムプロダクトであって、非一時的なコンピュータ可読記憶媒体内に有形に具現化されたコンピュータプログラムプロダクトを特徴とする。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、一次インメモリデータ構造体内のデータ要素を更新するための第１の要求を受け取らせる、ように機能する命令を含み、このとき、該要求は、１つ以上の進行中のメディアベースカンファレンス・セッションのセッション状態に関連付けられたデータ要素に対する更新を含んでいる。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、そのデータ要素を更新するための、第１の要求の後に受け取る後続の要求をブロックさせ、そしてブロックされた各要求に関連付けられたタイムスタンプに基づいて、それらのブロックされた要求を順に一時キューに格納させる、ように機能する命令をさらに含む。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、そのデータ要素に対する更新を二次インメモリデータ構造体に複製させる、ように機能する命令をさらに含む。コンピュータプログラムプロダクトは、複製ステップが完了すると、サーバコンピュータ装置に、第１の要求のデータ要素の更新に基づいて、一次インメモリデータ構造体においてそのデータ要素を更新させ、そしてブロックされた要求をタイムスタンプに基づいて処理させる、ように機能する命令をさらに含む。
【００１６】
上記の態様はいずれも、以下の特徴のうちの１つ以上を含むことができる。一部の実施形態では、サーバコンピュータ装置は、ブロックされた要求を処理する前に、そのデータ要素に対する更新を、インメモリデータ構造体に結び付けられた１つ以上のデータストアに複製する。一部の実施形態では、サーバコンピュータ装置は、インメモリデータ構造体をインデキシングする。一部の実施形態では、インデキシングすることは、それらのインメモリデータ構造体内の各データ要素にタイムスタンプを割り当てることを含む。一部の実施形態では、サーバコンピュータ装置は、（ｉ）一次インメモリデータ構造体と（ｉｉ）二次インメモリデータ構造体のそれぞれにおける対応するデータ要素に割り当てられたタイムスタンプを比較することで、それらのインメモリデータ構造体が同期しているかどうか判定する。
【００１７】
一部の実施形態では、サーバコンピュータ装置は、比較ステップに基づいて、それらの対応するデータ要素におけるコンフリクトを判定し、そして、より古いタイムスタンプを有するデータ要素を、より新しいタイムスタンプを有するデータ要素に一致するように更新する。一部の実施形態では、サーバコンピュータ装置は、比較ステップに基づいて、それらの対応するデータ要素におけるコンフリクトを判定し、そして、それらの対応するデータ要素を両方とも削除する。
【００１８】
一部の実施形態では、サーバコンピュータ装置は、１つ以上のデータストアから一次インメモリデータ構造体に持続的データ要素をロードすることにより、一次インメモリデータ構造体を初期化する。一部の実施形態では、持続的データ要素には、カンファレンス・セッションのルームデータ、および多地点制御ユニットのリソース可用性、のうちの１つ以上が含まれる。一部の実施形態では、１つ以上の進行中のメディアベースカンファレンス・セッションのセッション状態には、そのカンファレンス・セッションが割り当てられている多地点制御ユニットの識別情報が含まれる。一部の実施形態では、サーバコンピュータ装置は、一次インメモリデータ構造体がオフラインであることを判定し、そして第１の要求に基づいて、二次インメモリデータ構造体内のデータ要素を更新する。
【００１９】
本発明は、別の態様では、メディアベースのカンファレンス・セッションを再ルーティングするためのコンピュータ化された方法を特徴とする。サーバコンピュータ装置は、外部メディアストリームによって該サーバコンピュータ装置にそれぞれ接続されるとともに第１の内部メディアストリームによって該サーバコンピュータ装置から第１の多地点制御ユニットにそれぞれ接続されている複数のエンドポイントデバイス間の、第１のカンファレンス・セッションに関連したコンディションを判定し、このとき、該コンディションは、新たな多地点制御ユニットが必要であることを示すものである。サーバコンピュータ装置は、それらの複数のエンドポイントデバイス間の第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定する。サーバコンピュータ装置は、外部メディアストリームが接続されたままで、第１の内部メディアストリームを第１の多地点制御ユニットから切断する。サーバコンピュータ装置は、それらの複数のエンドポイントデバイスの各々を、第２の内部メディアストリームによって該サーバコンピュータ装置から第２の多地点制御ユニットに接続する。サーバコンピュータ装置は、第２の多地点制御ユニット上で、それらの複数のエンドポイントデバイス間の第２のカンファレンス・セッションを確立する。
【００２０】
本発明は、別の態様では、メディアベースのカンファレンス・セッションを再ルーティングするためのシステムを特徴とする。システムは、外部メディアストリームによってサーバコンピュータ装置にそれぞれ接続されるとともに第１の内部メディアストリームによってサーバコンピュータ装置から第１の多地点制御ユニットにそれぞれ接続されている複数のエンドポイントデバイス間の、第１のカンファレンス・セッションに関連したコンディションを判定するように構成されたサーバコンピュータ装置を備え、このとき、該コンディションは、新たな多地点制御ユニットが必要であることを示すものである。サーバコンピュータ装置は、それらの複数のエンドポイントデバイス間の第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するように、さらに構成されている。サーバコンピュータ装置は、外部メディアストリームが接続されたままで、第１の内部メディアストリームを第１の多地点制御ユニットから切断するように、さらに構成されている。サーバコンピュータ装置は、それらの複数のエンドポイントデバイスの各々を、第２の内部メディアストリームによって該サーバコンピュータ装置から第２の多地点制御ユニットに接続し、そして第２の多地点制御ユニット上で、それらの複数のエンドポイントデバイス間の第２のカンファレンス・セッションを確立するように、さらに構成されている。
【００２１】
本発明は、別の態様では、メディアベースのカンファレンス・セッションを再ルーティングするためのコンピュータプログラムプロダクトであって、非一時的なコンピュータ可読記憶媒体内に有形に具現化されたコンピュータプログラムプロダクトを特徴とする。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、外部メディアストリームによって該サーバコンピュータ装置にそれぞれ接続されるとともに第１の内部メディアストリームによって該サーバコンピュータ装置から第１の多地点制御ユニットにそれぞれ接続されている複数のエンドポイントデバイス間の、第１のカンファレンス・セッションに関連したコンディションを判定させる、ように機能する命令を含み、このとき、該コンディションは、新たな多地点制御ユニットが必要であることを示すものである。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、それらの複数のエンドポイントデバイス間の第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定させる、ように機能する命令をさらに含む。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、外部メディアストリームが接続されたままで、第１の内部メディアストリームを第１の多地点制御ユニットから切断させる、ように機能する命令をさらに含む。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、それらの複数のエンドポイントデバイスの各々を、第２の内部メディアストリームによって該サーバコンピュータ装置から第２の多地点制御ユニットに接続させ、そして第２の多地点制御ユニット上で、それらの複数のエンドポイントデバイス間の第２のカンファレンス・セッションを確立させる、ように機能する命令をさらに含む。
【００２２】
上記の態様はいずれも、以下の特徴のうちの１つ以上を含むことができる。一部の実施形態では、コンディションには、第１の多地点制御ユニットの障害、所定の限度を超える第１のカンファレンス・セッションのエンドポイントデバイスのカウント数、所定の限度を超える第１のカンファレンス・セッションから生じるリソース負荷、のうちの１つ以上が含まれる。一部の実施形態では、サーバコンピュータ装置は、第１の内部メディアストリームを第１の多地点制御ユニットから切断する前に、それらの複数のエンドポイントデバイスに通知する。
【００２３】
一部の実施形態では、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定することは、第２の多地点制御ユニットのロケーションを特定することを含む。一部の実施形態では、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定することは、セッション要件を特定するために第１のカンファレンス・セッションを分析することと、第２の多地点制御ユニットがそれらのセッション要件を満たすことが可能かどうか判断することとを含む。一部の実施形態では、セッション要件には、第１のカンファレンス・セッションに参加しているエンドポイントデバイスのカウント数、第１のカンファレンス・セッションに参加しているエンドポイントデバイスによって消費されるメディア帯域幅、第１の多地点制御ユニットの地理的ロケーション、第１のカンファレンス・セッションに参加している複数のエンドポイントデバイスの少なくとも１つによって使用されるメディアプロトコル、のうちの１つ以上が含まれる。
【００２４】
一部の実施形態では、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定することは、多地点制御ユニットのリストを特定することと、それらの多地点制御ユニットの各々に関連した現在のリソース利用状況に基づいて、そのリストから多地点制御ユニットを選択することとを含む。一部の実施形態では、第１の内部メディアストリームを第１の多地点制御ユニットから切断することは、外部メディアストリームがアクティブに維持されるように、外部メディアストリームによって、それらの複数のエンドポイントデバイスにメディアを伝送することを含む。
【００２５】
一部の実施形態では、これらのステップは、リアルタイムで実行される。一部の実施形態では、サーバコンピュータ装置は、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定する前に、第１のカンファレンス・セッションに関連したコンディションが解消するのを待つ。一部の実施形態では、サーバコンピュータ装置は、所定の期間、待機する。
【００２６】
本発明は、別の態様では、メディアベースのカンファレンス・セッションにおいて複数のエンドポイントデバイス間でメディア能力をネゴシエートする方法を特徴とする。サーバコンピュータ装置は、複数のエンドポイントデバイス間のカンファレンス・セッションに参加するための要求を受信し、このとき、該要求は、第１のエンドポイントデバイスから受信するものであって、第１のエンドポイントデバイスからのメディアフローを含んでいる。サーバコンピュータ装置は、第１のエンドポイントデバイスと、第１のエンドポイントデバイスがその要求を送信した送信元ネットワーク、のうちの少なくとも１つを特定する。サーバコンピュータ装置は、特定された第１のエンドポイントデバイスに関連付けられた第１のメディアネゴシエーション・プロファイルが存在するかどうか判定する。サーバコンピュータ装置は、特定されたネットワークに関連付けられた第２のメディアネゴシエーション・プロファイルが存在するかどうか判定する。サーバコンピュータ装置は、第１のメディアネゴシエーション・プロファイルおよび第２のメディアネゴシエーション・プロファイルに基づいて、メディアフローのビットレート、メディアフローのセッション記述、メディアフローの宛先多地点制御ユニット、のうちの１つ以上を調整する。サーバコンピュータ装置は、第１のエンドポイントデバイスからの調整されたメディアフローを、カンファレンス・セッションに接続する。
【００２７】
本発明は、別の態様では、メディアベースのカンファレンス・セッションにおいて複数のエンドポイントデバイス間でメディア能力をネゴシエートするためのシステムを特徴とする。システムは、複数のエンドポイントデバイス間のカンファレンス・セッションに参加するための要求を受信するように構成されたサーバコンピュータ装置を備え、このとき、該要求は、第１のエンドポイントデバイスから受信するものであって、第１のエンドポイントデバイスからのメディアフローを含んでいる。サーバコンピュータ装置は、第１のエンドポイントデバイスと、第１のエンドポイントデバイスがその要求を送信した送信元ネットワーク、のうちの少なくとも１つを特定するように、さらに構成されている。サーバコンピュータ装置は、特定された第１のエンドポイントデバイスに関連付けられた第１のメディアネゴシエーション・プロファイルが存在するかどうか判定するように、さらに構成されている。サーバコンピュータ装置は、特定されたネットワークに関連付けられた第２のメディアネゴシエーション・プロファイルが存在するかどうか判定するように、さらに構成されている。サーバコンピュータ装置は、第１のメディアネゴシエーション・プロファイルおよび第２のメディアネゴシエーション・プロファイルに基づいて、メディアフローのビットレート、メディアフローのセッション記述、メディアフローの宛先多地点制御ユニット、のうちの１つ以上を調整するように、さらに構成されている。サーバコンピュータ装置は、第１のエンドポイントデバイスからの調整されたメディアフローを、カンファレンス・セッションに接続するように、さらに構成されている。
【００２８】
本発明は、別の態様では、メディアベースのカンファレンス・セッションにおいて複数のエンドポイントデバイス間でメディア能力をネゴシエートするためのコンピュータプログラムプロダクトであって、非一時的なコンピュータ可読記憶媒体内に有形に具現化されたコンピュータプログラムプロダクトを特徴とする。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、複数のエンドポイントデバイス間のカンファレンス・セッションに参加するための要求を受信させる、ように機能する命令を含み、このとき、該要求は、第１のエンドポイントデバイスから受信するものであって、第１のエンドポイントデバイスからのメディアフローを含んでいる。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、第１のエンドポイントデバイスと、第１のエンドポイントデバイスがその要求を送信した送信元ネットワーク、のうちの少なくとも１つを特定させる、ように機能する命令をさらに含む。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、特定された第１のエンドポイントデバイスに関連付けられた第１のメディアネゴシエーション・プロファイルが存在するかどうか判定させる、ように機能する命令をさらに含む。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、特定されたネットワークに関連付けられた第２のメディアネゴシエーション・プロファイルが存在するかどうか判定させる、ように機能する命令をさらに含む。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、第１のメディアネゴシエーション・プロファイルおよび第２のメディアネゴシエーション・プロファイルに基づいて、メディアフローのビットレート、メディアフローのセッション記述、メディアフローの宛先多地点制御ユニット、のうちの１つ以上を調整させる、ように機能する命令をさらに含む。コンピュータプログラムプロダクトは、サーバコンピュータ装置に、第１のエンドポイントデバイスからの調整されたメディアフローを、カンファレンス・セッションに接続させる、ように機能する命令をさらに含む。
【００２９】
上記の態様はいずれも、以下の特徴のうちの１つ以上を含むことができる。一部の実施形態では、特定された第１のエンドポイントデバイスに関連付けられた第１のメディアネゴシエーション・プロファイルが存在するかどうか判定することは、サーバコンピュータ装置によって、第１のエンドポイントデバイスに関連付けられた識別子に基づいて、第１のメディアネゴシエーション・プロファイルをデータベースから取得することを含む。一部の実施形態では、特定されたネットワークに関連付けられた第２のメディアネゴシエーション・プロファイルが存在するかどうか判定することは、サーバコンピュータ装置によって、そのネットワークに関連付けられた識別子に基づいて、第２のメディアネゴシエーション・プロファイルをデータベースから取得することを含む。
【００３０】
一部の実施形態では、セッション記述を調整することは、セッション記述に列挙されている１つ以上の特性がそのカンファレンス・セッションでサポートされているかどうか判定することと、そのカンファレンス・セッションでサポートされていない特性を削除するようにセッション記述を修正することとを含む。一部の実施形態では、１つ以上の特性には、第１のエンドポイントデバイスによってサポートされるコーデックが含まれる。一部の実施形態では、１つ以上の特性には、第１のエンドポイントデバイスによってサポートされるシグナリング能力が含まれる。一部の実施形態では、第１のメディアネゴシエーション・プロファイルおよび第２のメディアネゴシエーション・プロファイルが存在しない場合には、メディアフローは調整されない。
【００３１】
一部の実施形態では、サーバコンピュータ装置は、カンファレンス・セッション中に、第１のエンドポイントデバイスからのメディアフローに関連した品質メトリクスを定期的に分析する。一部の実施形態では、サーバコンピュータ装置は、品質メトリクスの分析に基づいて、メディアフローのビットレート、メディアフローのセッション記述、メディアフローの宛先多地点制御ユニット、のうちの１つ以上を調整する。一部の実施形態では、品質メトリクスには、分解能、ジッタ、レイテンシ、のうちの１つ以上が含まれる。一部の実施形態では、サーバコンピュータ装置は、品質メトリクスの分析に基づいて、第１のメディアネゴシエーション・プロファイルと、第２のメディアネゴシエーション・プロファイル、のうちの少なくとも１つを更新する。一部の実施形態では、サーバコンピュータ装置は、品質メトリクスの分析に基づいて、第１のエンドポイントデバイスからのメディアフローを他の多地点制御ユニットに転送する。
【００３２】
本発明の他の態様および利点は、単なる例として本発明の原理を示す添付の図面を併用して、以下の詳細な説明から明らかになるであろう。
【００３３】
添付の図面を併用して、以下の説明を参照することにより、上記発明の利点を、さらなる利点と共に、より良く理解することができる。それらの図面は、必ずしも縮尺通りではなく、全体的に本発明の原理を強調して示している。
【図面の簡単な説明】
【００３４】
【図１】図１は、メディアベースのカンファレンス・セッションにおいてリソースを割り当てるため、複数のメディアベースカンファレンス・セッションのセッション状態を管理するため、メディアベースのカンファレンス・セッションを再ルーティングするため、メディアベースのカンファレンス・セッションにおいて複数のエンドポイントデバイス間でメディア能力をネゴシエートするための、システムのブロック図である。
【００３５】
【図２】図２は、メディアベースのカンファレンス・セッションにおいてリソースを割り当てる方法のフロー図である。
【００３６】
【図３Ａ】図３Ａは、メディアベースのカンファレンス・セッションにおいてリソースを割り当てる方法のワークフロー図である。
【図３Ｂ】図３Ｂは、メディアベースのカンファレンス・セッションにおいてリソースを割り当てる方法のワークフロー図である。
【００３７】
【図４】図４は、複数のメディアベースカンファレンス・セッションのセッション状態を管理するためのモジュールの詳細ブロック図である。
【００３８】
【図５】図５は、複数のメディアベースカンファレンス・セッションのセッション状態を管理する方法のフロー図である。
【００３９】
【図６】図６は、メディアベースのカンファレンス・セッションを再ルーティングする方法のフロー図である。
【００４０】
【図７】図７は、メディアベースのカンファレンス・セッションを再ルーティングする方法のワークフロー図である。
【００４１】
【図８】図８は、メディアベースのカンファレンス・セッションにおいて複数のエンドポイントデバイス間でメディア能力をネゴシエートする方法のフロー図である。
【００４２】
【図９】図９は、メディアベースのカンファレンス・セッションにおいて複数のエンドポイントデバイス間でメディア能力をネゴシエートする方法のワークフロー図である。
【発明を実施するための形態】
【００４３】
図１は、メディアベースのカンファレンス・セッションにおいてリソースを割り当てるため、複数のメディアベースカンファレンス・セッションのセッション状態を管理するため、メディアベースのカンファレンス・セッションを再ルーティングするため、メディアベースのカンファレンス・セッションにおいて複数のエンドポイントデバイス間でメディア能力をネゴシエートするための、システム１００のブロック図である。システム１００は、複数のエンドポイントデバイス１０２ａ〜１０２ｂと、通信ネットワーク１０４と、カンファレンシング・プラットフォーム１０６と、を含み、カンファレンシング・プラットフォームは、エッジモジュール１０７と、ネットワークＡＰＩ（ＮＡＰＩ）モジュール１０８ａおよびメディアロケーションサービスモジュール１０８ｂを備えたルーティングモジュール１０８と、メディアプレーヤ／対話型音声応答（ＩＶＲ）モジュール１０９と、メディアエンジン／多地点制御ユニット（ＭＣＵ）１１０と、ネットワーク監視モジュール１１１と、データベース１１２とを有する。
【００４４】
複数のエンドポイントデバイス１０２ａ〜１０２ｂは、他のエンドポイントデバイスとのカンファレンス・コールおよびその他のメディア通信セッションを開始するため、およびそれに参加するために、通信ネットワーク１０４を介してカンファレンシング・プラットフォーム１０６に接続する。例示的なエンドポイントデバイスとして、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、モバイル装置、スマートフォン、インターネット・アプライアンス、が含まれる。なお、本発明の範囲から逸脱することなく、カンファレンシング・プラットフォーム１０６に接続可能な他のタイプのコンピュータ装置を使用できることは、理解されるべきである。いくつかの実施形態において、エンドポイントデバイス１０２ａ〜１０２ｂは、カンファレンシング・プラットフォーム１０６に接続するために、コールカンファレンシング・クライアントソフトウェアをローカルで実行すること、および／または他のタイプのユーザインタフェース（例えば、ウェブブラウザ）を使用すること、が可能である。コールカンファレンシング・クライアントソフトウェアは、ワシントン州レドモンドのマイクロソフト社から入手できるＳｋｙｐｅ（登録商標）もしくはカリフォルニア州マウンテンビューのグーグル社から入手できるＧｏｏｇｌｅ（登録商標）ハングアウトのような使用料無料／フリーミアムのオープンネットワーク型ソフトウェア、またはカリフォルニア州サンノゼのポリコム社から入手できるＲｅａｌＰｒｅｓｅｎｃｅ（登録商標）プラットフォームのような購入可能なクローズドネットワーク型ソフトウェア、とすることができる。一部の実施形態では、コールカンファレンシング・クライアントソフトウェアは、例えば、企業で内部使用のために開発されたプロプライエタリ・プラットフォームとすることができる。図１は、２つのエンドポイントデバイス１０２ａ〜１０２ｂを示しているが、システム１００は、任意の数のエンドポイントデバイスを含み得ることは、理解されるべきである。
【００４５】
エンドポイントデバイス１０２ａ〜１０２ｂは、メディアベースのカンファレンス・コールおよびミーティングを開始するため、およびそれに参加するために、カンファレンシング・プラットフォーム１０６と通信することが、通信ネットワーク１０４によって可能となる。ネットワーク１０４は、ＬＡＮのようなローカルネットワーク、またはインターネットおよび／もしくはセルラネットワークのような広域ネットワークとすることができる。一部の実施形態では、ネットワーク１０４は、エンドポイントデバイス１０２ａ〜１０２ｂがカンファレンシング・プラットフォーム１０６と通信することを可能とする、いくつかの別々のネットワークおよび／またはサブネットワーク（例えば、セルラ→インターネット）で構成される。
【００４６】
カンファレンシング・プラットフォーム１０６は、ハードウェアモジュールとソフトウェアモジュールの組み合わせであり、これにより、複数のエンドポイントデバイス１０２ａ〜１０２ｂ間のメディアベースのカンファレンス・コールおよびミーティングを、確立し、認可し、そのためのリソースを割り当て、監視し、円滑化し、管理する。カンファレンシング・プラットフォーム１０６は、エッジモジュール１０７と、ネットワークＡＰＩ（ＮＡＰＩ）モジュール１０８ａおよびメディアロケーションサービスモジュール１０８ｂを備えたルーティングモジュール１０８と、メディアプレーヤ／対話型音声応答（ＩＶＲ）モジュール１０９と、メディアエンジン／多地点制御ユニット（ＭＣＵ）１１０と、ネットワーク監視モジュール１１１と、データベース１１２と、を有する。モジュール１０７、１０８、１０９、１１０、１１１は、メディアベースのカンファレンス・コールおよびミーティングを確立すること、認可すること、そのためのリソースを割り当てること、監視すること、円滑化すること、管理すること、に関連した機能を実行するために、カンファレンシング・プラットフォーム１０６に配置されるハードウェアモジュールおよび／またはソフトウェアモジュールである。一部の実施形態では、モジュール１０７、１０８、１０９、１１０、１１１の機能は、複数のコンピュータ装置に分散される。なお、本発明の範囲から逸脱することなく、様々なアーキテクチャ、リソース、および構成（例えば、クラスタコンピューティング、仮想コンピューティング、クラウドコンピューティング）で配置された任意の数のコンピュータ装置を使用できることは、理解されるべきである。例えば、カンファレンシング・プラットフォーム１０６は、各モジュール１０７、１０８、１０９、１１０、１１１の１つ以上のインスタンスを維持する複数の異なるサイトを含むことができる。それらのサイトは、いくつかの異なる地理的ロケーションに分散させることができ、このプラットフォーム１０６の地理的分散を利用して、カンファレンス・セッションの可用性、品質、および耐障害性を向上させることができる（例えば、すべての参加者または大部分の参加者に近い特定のサイトで、セッションをホストすることができる）。
【００４７】
また、一部の実施形態では、本発明の範囲から逸脱することなく、モジュール１０７、１０８、１０９、１１０、１１１のいずれかが、本明細書に記載の機能のいずれかを実行できるように、モジュール１０７、１０８、１０９、１１０、１１１の機能を分散させることができることも、理解されるべきである。また、図１は、各モジュール１０７、１０８、１０９、１１０、１１１の単一のインスタンスを示しているが、本発明の範囲から逸脱することなく、互いに連携して、または独立に動作する、各モジュール１０７、１０８、１０９、１１０、１１１の任意の数のインスタンスが配置され得ることは、理解されるべきである。
【００４８】
エッジモジュール１０７は、ネットワーク１０４とルーティングモジュール１０８との間に接続される。エッジモジュール１０７は、カンファレンシング・プラットフォーム１０６へのカンファレンス・セッション要求およびコールのエントリポイントである。エッジモジュール１０７は、エンドポイントデバイス１０２ａ〜１０２ｂから、ネットワーク１０４を介して、メディアベースのカンファレンス・セッションの確立および維持に関連したシグナリング通信を、様々なプロトコル（例えば、セッション開始プロトコル（ＳＩＰ）、ｈ．３２３）で受け取る。なお、本発明の範囲から逸脱することなく、他のシグナリングプロトコルを使用できることは、理解されるべきである。エッジモジュール１０７は、エンドポイントデバイス１０２ａ〜１０２ｂからのシグナリング通信を受け取って、そのシグナリングを、さらなる処理のために、カンファレンシング・プラットフォーム１０６の他のコンポーネントに伝送する。図１に示すように、エッジモジュール１０７の一部は外側（すなわち、カンファレンシング・プラットフォーム１０６の外側）に向いており、エッジモジュールの一部は、内側（すなわち、カンファレンシングシステムの内側）に向いている。エッジモジュール１０７の外向き部分は、エンドポイントデバイス１０２ａ〜１０２ｂからの通信を受け取って、エンドポイントデバイス１０２ａ〜１０２ｂによるシグナリング／メディア接続の認証、認可、パーミッション付与、ユーザプロファイリング、マルウェア検出、および維持に関連したオペレーションを実行する。
【００４９】
いくつかの実施形態において、エッジモジュール１０７は、そのシグナリングを、カンファレンシング・プラットフォーム１０６の他のコンポーネントによる処理が可能な別の形式に変換する。例えば、エッジモジュール１０７は、シグナリングを、コール詳細（例えば、発信先、発信元、ドメイン）、エンドポイントデバイス固有の詳細、ユーザ固有の詳細、他のタイプの情報などの項目を含むＸＭＬ形式に変換することができ、これにより、シグナリングのさらなるカスタマイズが得られることで、カンファレンシング・プラットフォーム１０６の他のコンポーネントが、カンファレンス・セッションを各エンドポイントデバイス１０２ａ〜１０２ｂに応じて動的に処理することが可能となる。
【００５０】
エンドポイントデバイス１０２ａ、１０２ｂからカンファレンス・セッション要求のためのシグナリングおよびメディアを受信すると、エッジモジュール１０７は、ルーティングモジュール１０８とやりとりすることで、カンファレンス・セッションを確立するためにその要求をどのように処理およびルーティングするべきか（例えば、エンドポイントデバイス１０２ａ、１０２ｂにより要求されたカンファレンス・セッションの特性、そのカンファレンス・セッションをホストするためにどのＭＣＵ １１０を割り当てるべきか、など）を決定する。具体的には、ルーティングモジュール１０８は、２つのサブモジュール、すなわち、ネットワークＡＰＩ（ＮＡＰＩ）モジュール１０８ａとメディアロケーションサービス（ＭＬＳ）モジュール１０８ｂを含んでいる。
【００５１】
ＮＡＰＩモジュール１０８ａは、カンファレンシング・プラットフォーム１０６のコンポーネントの各々を接続するための統合インタフェースフレームワークとして機能する。ＮＡＰＩモジュール１０８ａは、アプリケーションプログラミングインタフェース（ＡＰＩ）ベースのルーティングサービスであり、カンファレンシング・プラットフォーム１０６内の他のコンポーネント／サービスからのデータ要求を処理し、ＭＬＳモジュール１０８ｂなどの他のモジュールから供給される情報に基づくとともに、ＮＡＰＩモジュール１０８ａで維持している内部ロジックに基づいて、カンファレンス・セッションの初期ルーティングおよびパーミッションを管理する。これは、アクセス制御、ミーティングプロファイル、およびカンファレンス・セッションルーティング情報、を含む。例えば、ＮＡＰＩモジュール１０８ａは、特定のカンファレンス・セッションに対して何が許可され、何が許可されないのかに関して、エッジモジュール１０７に指示することができる。別の例では、ＮＡＰＩモジュール１０８ａは、ルームプロファイル情報を（例えば、データベース１１２および／またはＭＬＳモジュール１０８ｂから）取得し、それを用いることで、コールをどのメディアエンジン１１０にルーティングすべきか決定することができる。ＮＡＰＩモジュール１０８ａをカンファレンシング・プラットフォーム１０６の他のコンポーネントへの統合インタフェースとして維持することの利点は、プラットフォーム１０６のコンポーネント間の通信方法またはワークフローの変更が必要なときに、更新する必要があるのはＮＡＰＩモジュール１０８ａのみであることであり、これにより、変更およびアップグレードは集中的かつ効率的となる。
【００５２】
ＭＬＳモジュール１０８ｂは、特定のカンファレンス・セッションで使用するために選択されるカンファレンス・セッションリソース（例えば、セッションをどのメディアエンジン１１０でホストするべきか）を管理し、さらに、別のメディアエンジンへの移動の要求または必要が生じるイベントもしくはコンディションが発生したときに、セッションをどこに移動すべきかを管理するように機能する。ＭＬＳモジュール１０８ｂは、カンファレンシング・プラットフォーム１０６の現在のリソース使用状況を把握するため、さらに、受信するセッション要求をどのように割り当てまたはルーティングすべきかを把握するために、ネットワーク監視モジュール１１１から受け取るカンファレンス・セッション状態情報を利用する。また、ＭＬＳモジュール１０８ｂは、さらに、例えば、各セッション要求またはコールがどのエッジモジュール１０７で処理されているのか、どのメディアエンジン１１０でミーティングおよび参加者を現在ホストしているのか、を追跡する。
【００５３】
一部の実施形態では、ルーティングモジュール１０８は、以下のいくつかの利点を実現するように、ビデオおよび／または音声シグナリングをルーティングする、カンファレンシング・プラットフォーム１０６内の動的信号ルーティング（ＤＳＲ）能力のセットとみなすことができる。
・  カンファレンス・セッション／コールのより高い接続率（例えば、利用できないリソースにコールがルーティングされない）；
・  セッション／コールのより少ない中断；
・  プラットフォームリソースのより効率的な利用；
・  セッション／コールの向上された品質。
【００５４】
一部の実施形態では、ルーティングモジュール１０８は、カンファレンシング・プラットフォーム１０６内でのルーティング決定およびサービス構成のためのブローカである。例えば、エッジモジュール１０７は、ルーティングモジュール１０８を利用して、カンファレンス・セッションが存在するか否かを確認する。メディアプレーヤ／ＩＶＲモジュール１０９は、ルーティングモジュール１０８を利用して、カンファレンス・セッションプロファイルデータにアクセスする。メディアエンジン１１０は、カンファレンス・セッション／ミーティングルームが（例えば、主催者の出席によって）開始したため、待機している参加者がルームに参加できることを、ルーティングモジュール１０８とやりとりすることで、カンファレンシング・プラットフォーム１０６の他のコンポーネントに通知する。
【００５５】
一部の実施形態では、ルーティングモジュール１０８は、以下のことを実現する、動的バックエンドシステムへの統合インタフェースを提供する。
・  バックエンドコンポーネントへの共通インタフェース： その結果、バックエンドコンポーネントは、（カンファレンシング・プラットフォーム１０６の各種コンポーネントのすべてとではなく）ルーティングモジュール１０８との通信をサポートするだけでよいので、その複雑さが軽減される；
・  高可用性サービスモデル： ルーティングモジュール１０８のＤＳＲ能力によって、ステートレス・メッセージング／データ・ブローカ方法が提供され、それは、高可用性であり得るとともに、限定するものではないが、ラウンドロビンおよびアクティブ／パッシブなどの様々な負荷分散技術をサポートしているモデルにデプロイでき、さらに、フェイルオーバ技術もサポートできる；
・  グローバルなプラットフォームレベルのコールを、プラットフォーム内の特定のサイトまたは環境にルーティング可能であること；
・  選択されたサイト内で、ルーティングモジュール１０８は、様々なサービスを利用することで、中断のない高品質のカンファレンス・オペレーションの可能性を確保または増大するカンファレンス・セッション経路を特定／設定するために、デバイスおよびミーティングルームの（ＩＶＲ、認証、ルーム固有コーデックのサポート、などを含む）セットアップ要件を特定することができる；
・  ルーティングモジュール１０８は、ＭＬＳモジュール１０８ｂを利用することで、カンファレンス・セッションステータス（例えば、進行中であるか否か）を特定するとともに、どのメディアエンジン／ＭＣＵ（複数の場合もある）１１０でセッションをホストするべきか、または、カンファレンス・セッションを初期化するために特定のエンドポイントデバイス１０２ａをどのメディアエンジン／ＭＣＵ（複数の場合もある）にルーティングすべきか、を特定することができる。
【００５６】
ルーティングモジュール１０８によって提供される例示的な能力には、以下のものが含まれる。
・  カンファレンシング・プラットフォーム１０６上で進行中のすべてのカンファレンス・セッションのリストを取得する；
・  特定のカンファレンス・セッションの参加者のリストを取得する；
・  ある参加者がカンファレンス・セッションの主催者であるかどうかを調べる；
・  カンファレンス・セッションにおいて特定の参加者（または何人かの参加者）をミュートまたは切断する；
・  カンファレンス・セッションから特定の参加者にダイヤルアウトする；
・  外部ネットワークからの匿名ユーザを、カンファレンシング・プラットフォーム１０６で既知のユーザにマッピングする。例えば、匿名ユーザから受信するセッション要求を、クライアント名、ロケーション、認証されたセッションなど、エンドポイントデバイス１０２ａの特性に基づいて、カンファレンシング・プラットフォーム１０６で既知のユーザに変換する。
【００５７】
メディアプレーヤ／ＩＶＲモジュール１０９は、どこで、どのようにカンファレンス・セッションをルーティング／ホストすべきかを、カンファレンシング・プラットフォーム１０６の他のコンポーネントで決定する際の、エンドポイントデバイス１０２ａ〜１０２ｂからのストリームのための一時的ロケーションとして機能する。例えば、ＮＡＰＩモジュール１０８ａは、メディアエンジンにおいてカンファレンス・セッションが確立されつつある間に、エンドポイントデバイス１０２ａを、ウェイティングルームとしてのメディアプレーヤ／ＩＶＲモジュール１０９にルーティングする（そして、例えば保留音楽を再生する）ように、エッジモジュール１０７に指示することができる。カンファレンス・セッションの準備ができたら、ＮＡＰＩモジュール１０８ａは、エンドポイントデバイス１０２ａを、ホストするメディアエンジン１１０にルーティングするように、エッジモジュール１０７および／またはメディアプレーヤ／ＩＶＲモジュール１０９に指示することができる。別の例では、エンドポイントデバイス１０２ａをカンファレンス・セッションに接続する前に、メディアプレーヤ／ＩＶＲモジュール１０９を用いて、カンファレンス・セッションの参加者から追加情報（例えば、ＰＩＮ、ユーザ識別情報など）を収集することができる。
【００５８】
メディアエンジン１１０は、メディアベースのカンファレンス・セッションまたはミーティングに参加する複数のエンドポイントデバイス１０２ａ〜１０２ｂのブリッジとして機能する。メディアエンジン１１０は、カンファレンシング・プラットフォーム１０６におけるカンファレンス・セッションおよびコールの最終目的地としての役割を果たす。メディアエンジン１１０は、カンファレンス・セッションに参加しているエンドポイントデバイス１０２ａ〜１０２ｂからの音声および／またはビデオストリームを受け取って、それらのストリームをミキシングおよびトランスコードし、そしてエンドポイントデバイス１０２ａ〜１０２ｂに送り返される新たなメディア（例えば、参加者の関連する音声および／またはビデオストリームをすべて含む複合ストリーム）をストリームアウトする。なお、メディアエンジン１１０は、ビデオおよび音声のミキシング、メディアの再生、記録など、いくつかの異なる能力をサポートし得ることは、理解されるべきである。一部の実施形態では、メディアエンジン１１０は、多地点制御ユニット（ＭＣＵ）である。メディアエンジン１１０に組み込むことができるＭＣＵの一例は、カリフォルニア州サンノゼのシスコシステムズ社から入手可能なＣｏｄｉａｎである。このＭＣＵは、追加の特性を提供するために、カリフォルニア州サニーベールのヴィッテル社から入手可能なＶｉｄｔｅｌ  ＧＡＴＥＷＡＹと統合することができる。
【００５９】
ネットワーク監視モジュール１１１は、カンファレンシング・プラットフォーム１０６上のメディアサービス（例えば、ミーティング、参加者）のライブデータ・ピクチャを提供する目的で、カンファレンス・セッションに関連した各種データポイントを監視するためのフレームワークとして機能する。例えば、ネットワーク監視モジュールによって収集されるデータポイントとして、以下のものを含むことができる。
・  システムレベル情報： 特定のカンファレンス・セッションに対してメディアミキシングまたは他のサービスを提供できる利用可能なコンピュータ装置のプールを作成するための、ＣＰＵ使用率、メモリ使用率、ネットワーク使用率、およびサーバ／サービス可用性など；
・  アプリケーションレベル情報： アクティブなカンファレンス・セッション／ミーティングおよび参加者など。また、コールのビットレート、分解能などのような、各参加者に関するさらなる詳細を含むこともできる；
・  ミーティングサイズ： ネットワーク最適化およびサービス品質に関連する。例えば、多くのより小規模の（すなわち、参加者がより少ない）ミーティングは、第１のプールのサーバ上で進行することができるが、一方、より多くのリソース（例えば、帯域幅、処理能力、高分解能）を必要とし得る、より大規模のミーティングを処理するためには、カンファレンシング・プラットフォーム１０６は、別個のプールのサーバを割り当てることができ、その別個のプールのサーバは、同時に複数のコールを処理すべきではない。この例では、ミーティングがある閾値に達すると、そのミーティングは専用のサーバに移動させられることになる。
【００６０】
カンファレンシング・プラットフォーム１０６は、さらにデータベース１１２を有する。データベース１１２は、メディアベースのカンファレンシング機能を実行するためにカンファレンシング・プラットフォーム１０６によって使用されるデータを格納している。データベース１１２は、コンピュータ装置上でカンファレンシング・プラットフォーム１０６の他のコンポーネントと統合されるか、またはカンファレンシング・プラットフォーム１０６の他のコンポーネントとは別のコンピュータ装置上に配置することができる。カンファレンシング・プラットフォーム１０６で使用できるデータベースの一例は、カリフォルニア州レッドウッドシティのオラクル社から入手可能なＭｙＳＱＬ（登録商標）である。また、図１は、単一のデータベース１１２を示しているが、本発明の範囲から逸脱することなく、互いに連携して、または独立に動作する、任意の数のデータベースまたはデータベースのインスタンス（例えば、データベース・シャーディング技術を用いる）が配置され得ることは、理解されるべきである。
【００６１】
［動的なリソース割り当て／信号ルーティング］
図２は、図１のシステム１００を用いて、メディアベースのカンファレンス・セッションにおいてリソースを割り当てる方法２００のフロー図である。エッジモジュール１０７は、カンファレンス・セッションに参加するための第１の要求を、非主催者参加者に関連付けられた第１のエンドポイントデバイス１０２ａから受信（２０２）する。非主催者参加者は、そのカンファレンス・セッションに加入および参加する資格があるが、そのセッションのリーダまたは主催者（例えば、そのセッションを「ホストする」人）ではない個人である。エッジモジュール１０７は、そのカンファレンス・セッションのロケーション（例えば、ホスティングサイト）を探すための要求をＮＡＰＩモジュール１０８ａに送り、ＮＡＰＩモジュール１０８ａは、そのカンファレンス・セッションのホスティングサイトを決定（２０４）する。例えば、ＮＡＰＩモジュールは、自身で所有する内部ロジックならびにＭＬＳモジュール１０８ｂによって供給される情報を用いることで、そのカンファレンス・セッションに好適もしくは最適なホスティングサイトを決定することができる。ＮＡＰＩモジュール１０８ａは、選択されたホスティングサイトを、エッジモジュール１０７に返し、そしてエッジモジュール１０７は、第１のエンドポイントデバイス１０２ａからの要求を、そのホスティングサイトに（例えば、カンファレンシング・プラットフォーム１０６内の別のサイトのルーティングモジュール１０８ａに）ルーティングする。
【００６２】
ホスティングサイトのルーティングモジュール１０８ａは、要求を受け取ると、そのカンファレンス・セッションの構成属性を決定（２０６）する。構成属性として、限定するものではないが、セキュリティ特性（例えば、ＰＩＮ）、主催者／参加者情報（例えば、セッションを開始する権限が誰にあるか）、技術属性（例えば、どのような具体的な能力がメディアエンジン１１０におけるミーティングルームに所望または要求されるか）、などを含むことができる。構成属性が決定されたら、ミーティング主催者によるセッションの確立をプラットフォーム１０６が待つ間、ルーティングモジュール１０８ａは、第１のエンドポイントデバイス１０２ａからのメディアストリームを、一時的ロケーションとしてのメディアプレーヤ／ＩＶＲモジュール１０９のウェイティングルームに接続（２０８）する。
【００６３】
エッジモジュール１０７は、そのカンファレンス・セッションに参加するための第２の要求を、セッションの主催者に関連付けられた第２のエンドポイントデバイス１０２ｂから受信（２１０）する。一部の実施形態では、エッジモジュール１０７は、（上述のように）ルーティングモジュール１０８ａとやりとりすることで、そのセッションのホスティングサイトを決定し、そしてルーティングモジュール１０８ａは、第２のエンドポイントデバイス１０２ｂをホスティングサイトのルーティングモジュール１０８ａに誘導する。一部の実施形態では、メディアエンジン１１０においてミーティングルームの開始および確立をプラットフォーム１０６が完了させる間、ホスティングサイトのルーティングモジュール１０８ａは、第２のエンドポイントデバイス１０２ｂのメディアストリームをメディアプレーヤ／ＩＶＲモジュール１０９に誘導することができる。
【００６４】
ホスティングサイトのＮＡＰＩモジュール１０８ａは、そのホスティングサイトにおけるカンファレンス・セッションのためのミーティングルームを決定（２１２）する（例えば、ＭＬＳモジュール１０８ｂに問い合わせすることにより、そのセッションをホストする容量および能力を有する利用可能なメディアエンジン（複数の場合もある）１１０のリストを取得する）。ＮＡＰＩモジュール１０８ａは、次に、選択されたメディアエンジン１１０においてカンファレンス・セッションを確立（２１４）して、カンファレンス・セッションが開始されたことをＭＬＳモジュール１０８ｂに通知し、そして第１のエンドポイントデバイス１０２ａおよび第２のエンドポイントデバイス１０２ｂのメディアストリームを確立済みミーティングルームに転送するように、メディアプレーヤ／ＩＶＲモジュール１０９に通知する。
【００６５】
図３Ａ〜３Ｂは、図１のシステム１００を用いて、メディアベースのカンファレンス・セッションにおいてリソースを割り当てる方法のワークフロー図である。図３Ａ〜３Ｂに示すワークフローは、図２に示す方法２００の詳細な実施形態である。
【００６６】
図３Ａに示すように、エッジモジュール１０７は、カンファレンス・セッションに参加するための第１の要求を、第１のエンドポイントデバイス１０２ａから受信して、その第１の要求を、ＮＡＰＩモジュール１０８ａに伝送（３０２）する。ＮＡＰＩモジュール１０８ａは、そのカンファレンス・セッションをホストすべき、カンファレンシング・プラットフォーム１０６内の特定のホスティングサイトを、ＭＬＳモジュール１０８ｂに問い合わせ（３０４）する。ＭＬＳモジュール１０８ｂは、そのホスティングサイトをＮＡＰＩモジュール１０８ａに返し（３０６）、そしてこれが次に、そのホスティングサイトをエッジモジュール１０７に返す（３０８）。
【００６７】
エッジモジュール１０７は、その後、第１のエンドポイントデバイス１０２ａに関連したメディアストリームを、そのホスティングサイトのＮＡＰＩモジュール１０８ａにルーティング（３１０）する。ＮＡＰＩモジュール１０８ａは、そのカンファレンス・セッションに関連付けられた構成属性を、ホスティングサイトのＭＬＳモジュール１０８ｂに問い合わせ（３１２）する。ＭＬＳモジュール１０８ｂは、それらの構成属性をＮＡＰＩモジュール１０８ａに返す（３１４）。
【００６８】
ＮＡＰＩモジュール１０８ａは、次に、第１のエンドポイントデバイス１０２ａのメディアストリームを、そのホスティングサイトのメディアプレーヤ／ＩＶＲモジュール１０９のウェイティングルームにルーティング（３１６）する。そしてメディアプレーヤ／ＩＶＲモジュール１０９は、第１のエンドポイントデバイス１０２ａがモジュール１０９に接続されて、カンファレンス・セッションの確立を待っていることを、ＭＬＳモジュール１０８ｂに通知する。
【００６９】
次に図３Ｂを参照して、エッジモジュール１０７は、そのカンファレンス・セッションに参加するための第２の要求を、第２のエンドポイントデバイス１０２ｂから受信して、その第２の要求を、ＮＡＰＩモジュール１０８ａに伝送（３２０）する。ＮＡＰＩモジュール１０８ａは、そのカンファレンス・セッションをホストすべき、カンファレンシング・プラットフォーム１０６内の特定のホスティングサイトを、ＭＬＳモジュール１０８ｂに問い合わせ（３２２）する。ＭＬＳモジュール１０８ｂは、そのホスティングサイトをＮＡＰＩモジュール１０８ａに返し（３２４）、そしてこれが次に、そのホスティングサイトをエッジモジュール１０７に返す（３２６）。
【００７０】
エッジモジュール１０７は、その後、第２のエンドポイントデバイス１０２ｂに関連したメディアストリームを、そのホスティングサイトのＮＡＰＩモジュール１０８ａにルーティング（３２８）する。ＮＡＰＩモジュール１０８ａは、そのカンファレンス・セッションのホストとして使用するミーティングルームを、ホスティングサイトのＭＬＳモジュール１０８ｂに問い合わせ（３３０）する。ＭＬＳモジュール１０８ｂは、そのミーティングルームのロケーション（例えば、どのメディアエンジンで、そのセッションをホストするか）を、ＮＡＰＩモジュール１０８ａに返す（３３２）。
【００７１】
ＮＡＰＩモジュール１０８ａは、次に、第２のエンドポイントデバイス１０２ｂのメディアストリームを、そのホスティングサイトのメディアエンジン／ＭＣＵ １１０上にあるミーティングルームにルーティング（３３４）する。次に、ＮＡＰＩモジュール１０８ａは、ミーティングルームが確立されたことを、ＭＬＳモジュール１０８ｂに通知（３３６）し、そしてＭＬＳモジュール１０８ｂが次に、メディアプレーヤ／ＩＶＲモジュール１０９に通知（３３８）する。そしてモジュール１０９は、第１のエンドポイントデバイス１０２ａのメディアストリームを、そのカンファレンス・セッションのために確立されたＭＣＵ１１０上のミーティングルームにルーティング（３４０）する。
【００７２】
［カンファレンス・セッション状態の管理］
カンファレンス・セッション要求が、カンファレンシングシステム１０６に入力されて、複数のエンドポイントデバイス１０２ａ〜１０２ｂ間でセッションが確立されると、カンファレンシングシステム１０６は、そのプラットフォーム上で実施されているカンファレンス・セッションの現在のセッション状態のピクチャを入れるデータ構造体を維持する。このセッション状態情報は、その後のルーティングおよびリソース割り当て決定、負荷分散が必要かどうかの判断、プラットフォーム１０６上のカンファレンス・セッションのコンディションまたはエラーの判定など、様々に異なる機能のために有用である。システム１００によって提供される別の利点は、アトミックなリソース割り当て決定のためにプラットフォーム１０６によって使用される情報を格納するインメモリデータ構造体の迅速かつ効率的な生成にある。
【００７３】
図４は、図１のシステムを用いて、複数のメディアベースカンファレンス・セッションのセッション状態を管理するためのモジュールの詳細ブロック図である。図４に示すように、図１のデータベース１１２は、一次インメモリデータ構造体４０２ａと、二次インメモリデータ構造体４０２ｂと、持続的データストア４０４ａ〜４０４ｂと、を含むいくつかのサブコンポーネントを有する。図４は、データベース１１２上にあるサブコンポーネント４０２ａ、４０２ｂ、４０４ａ、４０４ｂを示しているが、本発明の範囲から逸脱することなく、サブコンポーネントは、図１のコンポーネントのいずれにも分散することができることは、理解されるべきである。例えば、一部の実施形態では、インメモリデータ構造体４０２ａ〜４０２ｂは、ＮＡＰＩモジュール１０８ａまたはＭＬＳモジュール１０８ｂに結合されたメモリデバイス内に配置することができ、一方、持続的データストア４０４ａ〜４０４ｂは、データベース１１２の一部のままとすることができる。
【００７４】
一次インメモリデータ構造体４０２ａおよび二次インメモリデータ構造体４０２ｂは、任意の時点でカンファレンシング・プラットフォーム１０６において進行中のカンファレンス・セッションの状態を表す情報を含んでいる。これらのデータ構造体４０２ａ〜４０２ｂは、その名前が示すように、その全体がプラットフォーム１０６のコンピュータ装置のメモリ内に常駐しており、これにより、セッション状態情報の迅速かつ効率的な更新をアトミックに実施する（すなわち、到来する各々の更新要求に関連付けられたタイムスタンプに従って順にセッション状態情報を更新する）ことが可能となる。一部の実施形態では、データ構造体４０２ａ〜４０２ｂは、（従来のデータキャッシュとは異なり）有効期限はなく、これにより、プラットフォーム１０６における現在のセッション状態を特定するための、常に利用できる最新状態のリソースが提供される。
【００７５】
一次インメモリデータ構造体４０２ａは、限定するものではないが、以下のものを含むいくつかの機能を有する。
・  プラットフォーム１０６の他のコンポーネント（ＮＡＰＩモジュール１０８ａ、ＭＬＳモジュール１０８ｂ、メディアエンジン／ＭＣＵ １１０など）からの、さらにはエンドポイントデバイス１０２ａ〜１０２ｂがプラットフォーム１０６に接続するのに介するネットワーク／プラットフォーム（例えば、Ｓｋｙｐｅ（登録商標）ゲートウェイ）のリソースマネージャのような外部コンポーネントからの、リード要求およびライト要求を受ける；
・  二次インメモリデータ構造体４０２ｂ（これは異なるサイトまたは地理的場所に配置されていてもよい）および持続的データストア４０４ａ〜４０４ｂに、データを複製する；
・  例えば、持続的データストア４０４ａ〜４０４ｂによって、これらのデータストアが、それらのローカルデータセットがいかに同期していないかを把握することを可能とするために用いられる、データ構造体の現在位置へのインデックスを提供する；
・  必要に応じて、データを持続的データストア４０４ａ〜４０４ｂに同期／リストアさせる。
【００７６】
図４では、セッション状態情報を更新するための要求は、一次インメモリデータ構造体４０２ａに届く。例えば、セッション状態情報を更新するためのそのような要求は、新たなセッションの確立、現在進行中のセッションで利用されているリソース、などに関する情報を含むことができる。一次インメモリデータ構造体４０２ａは、更新された情報を二次インメモリデータ構造体４０２ｂに複製することができ、さらに、更新された情報を持続的データストア４０４ａ〜４０４ｂと同期させることができる。
【００７７】
二次インメモリデータ構造体４０２ｂは、本質的に、一次インメモリデータ構造体４０２ａのコピー／バックアップとしての役割を果たす。一次データ構造体４０２ａの障害または使用不能の場合には、プラットフォーム１０６は、二次データ構造体４０２ｂを利用することで、一次データ構造体４０２ａがリカバリする間に、プラットフォーム１０６のコンポーネントが現在のセッション状態情報を利用可能に維持されるように保証することができる。一部の実施形態では、一次データ構造体４０２ａと二次データ構造体４０２ｂは、それらの両方で異なるデータセットを管理して、それぞれのデータ構造体４０２ａ、４０２ｂは、その近隣データ構造体への何らかの要求に応答するように、構成することができる。例えば、オンラインであるカンファレンスに関する更新要求は、データ構造体４０２ａ、４０２ｂのいずれかによるサービスを受けることができ、カンファレンスがオンラインでない場合には、その要求は、（例えば、その新たなカンファレンス要求のアトミック処理を確保するために）一次データ構造体４０２ａによって処理される。
【００７８】
持続的データストア４０４ａ〜４０４ｂは、一次インメモリデータ構造体４０２ａによって維持される動的なセッション状態情報に比して、一般に、より静的な情報を保存するために用いられる。例えば、ミーティングルーム構成、メディアエンジン１１０のリソース可用性、などの情報は、（セッション状態情報とは対照的に）頻繁な更新を必要としないため、持続的データストア４０４ａ、４０４ｂに保存することができる。一次インメモリデータ構造体４０２ａは、セッション状態情報の一部として使用される何らかのタイプの情報を取得するために、データストア４０４ａ〜４０４ｂにアクセスすることができ、また、一次データ構造体４０２ａは、例えば、必要に応じて定期的に、持続的データストア４０４ａ〜４０４ｂに対する更新を発行することができる。一部の実施形態では、持続的データストアのうちの一方４０４ａを、マスタデータストアとして指定することができ、他方４０４ｂを、スレーブデータストアとして指定することができる。このように指定することによって、データストア４０４ａ〜４０４ｂ間に優先順位を設定するとともに、マスタデータストアの障害またはアクセス不能の場合に備えて冗長性を実現する、という利点が得られる。
【００７９】
一部の実施形態では、一次インメモリデータ構造体４０２ａは、その構造体内で特定のセッション状態データオブジェクトの作成、読み取り、更新、削除をサポートするデータインタラクション機能の簡易セットを提供する。一実施形態では、データ構造体４０２ａ内のデータとのインタラクションおよびデータの管理のための構文は、テーブルベースのものではなく、オブジェクトベースのものであって、複数の結合されたデータテーブルを表すことができる。例えば、ビデオカンファレンス・セッションは、次のようなデータスキーマを有し得る。
以下のデータフィールドを有するMeeting（オブジェクト）
・  ＩＤ
・  タイトル（Title）
・  開始時刻（Start  Time）        
・  終了時刻（End  Time）
・  Participants（オブジェクト）
・  ＩＤ
・  ミーティングＩＤ
【００８０】
一例では、一次インメモリデータ構造体４０２ａは、データを読み取るための次のようなインタフェースを含むことができる：Meeting getMeeting(id)。
【００８１】
上述のように、Meetingオブジェクトは、以下のようなプロパティを有する。
Meeting {
String ID;
String Title;
Date StartTime;
Date EndTime;
Participants[]  Participants;
}
【００８２】
Meetingオブジェクトのプロパティのいずれかの更新が、一次インメモリデータ構造体４０２ａで受け取られると、データ構造体４０２ａは、その元となるテーブルまたはデータストアのすべてにわたって、データがすべて更新されるまで、Meetingオブジェクト全体をロックする。
【００８３】
また、前述のように、データは、作成、更新、削除のために、一次インメモリデータ構造体４０２ａから他のデータ記憶要素４０２ｂ、４０４ａ、４０４ｂに複製される。一実施形態では、複製プロセスは、以下の通りである。
１）一次インメモリデータ構造体４０２ａで、データ変更要求（例えば、作成、更新、削除）を受け取る；
２）その変更要求に関連するデータ要素を、一次インメモリデータ構造体４０２ａによって、読み取りまたは更新されないようにロックし、同データ要素に対するその後の変更要求は、当分の間、（拒否されるというよりも）ブロックされる。一部の実施形態では、その後の変更要求は、一時キューに格納されて、ソートおよび後の処理の優先順位付けのために、受け取られたときのタイムスタンプが割り当てられる；
３）変更されたデータ要素は、二次インメモリデータ構造体４０２ｂに複製される；
４）複製に成功すると、そのデータ要素は、一次インメモリデータ構造体４０２ａにおいて更新されて、そのデータ要素のロックは解除され、そのデータ要素に対する後続の変更要求（例えば、一時キューに格納されている）が、一次インメモリデータ構造体４０２ａによるサービスを受ける。
【００８４】
その後、一次インメモリデータ構造体４０２ａは、変更されたデータ要素（複数の場合もある）を、持続的データストア４０４ａ、４０４ｂに順に複製する。一部の実施形態では、持続的データストア４０４ａ、４０４ｂの１つ以上への複製においてエラーが生じる場合に、困難が認められるデータストア（複数の場合もある）は、オフラインとされて、それらが再び使用できるようになったときに、一次インメモリデータ構造体４０２ａとの再同期を求められる。
【００８５】
また、カンファレンシング・プラットフォーム１０６における複数のサイトにわたって一次インメモリデータ構造体４０２ａを維持するために、各サイトの一次インメモリデータ構造体４０２ａ（さらに、一部の実施形態では、二次インメモリデータ構造体４０２ｂ）は、それらが管理しているオブジェクトのインデックスを維持している。上記のMeetingオブジェクトの例を用いると、以下のようになる。
【００８６】
［リレーショナルデータ記述］
Meeting
・  ＩＤ
・  タイトル（Title）
・  開始時刻（Start  Time）
・  終了時刻（End  Time）
Participants
・  ＩＤ
・  ミーティングＩＤ
【００８７】
［管理対象オブジェクト］
Meeting {
String ID;
String Title;
Date StartTime;
Date EndTime;
Participants[]  Participants;
}
【００８８】
［インデックスを含む管理対象オブジェクト］
Meeting {
String ID;
String Title;
Date StartTime;
Date EndTime;
Participants[]  Participants;
String lastUpdateUTC;
}
【００８９】
別のサイトの一次インメモリデータ構造体４０２ａがオンラインになると、そのデータ構造体４０２ａは、他のサイトの他の一次データ構造体（例えば、親構造体）に問い合わせすることで、例えば、String[][] getHashIndex()のような関数を用いて他のサイトの構造体と同期しているかどうか評価する。
【００９０】
その結果は、関連するデータ要素が更新された最新時刻を示す値のオブジェクト配列である。（インデックスの比較に基づいて）最も「最近」のデータセットを有するデータ構造体は、マスタであるとみなされる。その後、マスタ構造体のデータは、他のインメモリデータ構造体に同期させられ、さらに場合によっては、各サイトの持続的データストア４０４ａ〜４０４ｂに同期させられる。
【００９１】
複製する際に、データ要素（複数の場合もある）にコンフリクトが生じた場合は、カンファレンシング・プラットフォーム１０６は、１）（ＵＴＣ時刻に基づいて）最新のものでオーバライトするか、または２）両方を削除して、例えば、コールを失敗／破損とするか、いずれかをサポートするように構成可能である。
【００９２】
図５は、図１および４のシステムを用いて、複数のメディアベースカンファレンス・セッションのセッション状態を管理する方法のフロー図である。一次インメモリデータ構造体４０２ａは、データ要素を更新するための第１の要求を受け取る（５０２）。一次データ構造体４０２ａは、そのデータ要素を更新するための、第１の要求の後に受け取る後続の要求をブロック（５０４）し、それらのブロックされた要求を、各々の要求に割り当てられたタイムスタンプに基づいて順に一時キューに格納する。
【００９３】
一次データ構造体４０２ａは、第１の要求のデータ要素の更新を、二次インメモリデータ構造体４０２ｂに複製（５０６）し、そして第１の要求のデータ要素の更新に基づいて、一次データ構造体４０２ａにおいてデータ要素を更新（５０８）する。一次データ構造体４０２ａは、複製ステップおよび更新ステップが完了すると、ブロックされた要求をタイムスタンプに基づいて処理（５１０）する。
【００９４】
［ライブセッションの再ルーティング］
本明細書に記載の方法およびシステムの別の態様は、マルチパーティ音声およびビデオ・カンファレンシングにおいて、最適なエクスペリエンスを提供することである。ビデオ・カンファレンスのような多大なリソースを要するプロセスの文脈において、高レベルの耐障害性および品質を提供するためには、セッションを中断することなく、または参加者のエンドポイントデバイスがいずれかの特別な要件を認識もしくは備えていることに依拠することなく、メディアエンジン間でセッションを動的に移動可能であることが重要である。典型的には、セッションの移動をトリガする以下の３通りのコンディションが発生し得る：１）ハードウェア／ソフトウェア／ネットワーク障害；２）負荷閾値；３）ミーティングサイズ（すなわち、参加者数）。これらのコンディションのいずれが発生した場合も、そのセッションを処理するための方法は同じである。これらのコンディションの間の違いの１つは、障害の場合にプラットフォーム上で損失したメディアに対して、エッジモジュール１０７は、その障害にいかに対処するかについて、プラットフォームの他のコンポーネントからの指示を待つ設定可能な時間を有することで、回復力がなければならないことである。エッジモジュール１０７は、何も指示を受けなかった場合は、リカバリ不能な状況が発生したとして、通常のセッションのティアダウン処理をすることができる。一方、損失したメディアが検出された場合は、エッジモジュール１０７は、そのセッションをホストするための新たなメディアエンジンが特定および準備される間、セッションの外側でメディアフロー（すなわち、エンドポイントデバイスとエッジモジュールとの間の接続）を維持するための、例えば、内部再生機構を有し得る。
【００９５】
図６は、図１のシステム１００を用いて、メディアベースのカンファレンス・セッションを再ルーティングする方法６００のフロー図である。ネットワーク監視モジュール１１１は、（例えば、デバイスとエッジモジュール１０７との間で）外部メディアストリームによってカンファレンシング・プラットフォーム１０６にそれぞれ接続されるとともに内部メディアストリームによってエッジモジュール１０７からセッションをホストするメディアエンジン（ＭＣＵ）１１０にそれぞれ接続された複数のエンドポイントデバイス１０２ａ〜１０２ｂ間の、第１のカンファレンス・セッションに関連したコンディションを判定（６０２）する。上述のように、そのコンディションは、そのセッションをホストするために新たなメディアエンジン（ＭＣＵ）１１０を割り当てることが必要となる、ネットワーク障害、負荷閾値、および／またはミーティングサイズ閾値、であり得る。
【００９６】
ＮＡＰＩモジュール１０８ａは、それらの複数のエンドポイントデバイス１０２ａ〜１０２ｂ間の第２のカンファレンス・セッションをホストするために利用できる第２のメディアエンジン（ＭＣＵ）１１０を特定（６０４）する。ＮＡＰＩモジュール１０８ａは、第２のメディアエンジン１１０のロケーションを、エッジモジュールに通知する。
【００９７】
エッジモジュール１０７は、外部メディアストリームが接続されたままで、エッジモジュール１０７と第１のメディアエンジン１１０との間でエンドポイントデバイス１０２ａ〜１０２ｂの内部メディアストリームを切断（６０６）し、そしてエンドポイントデバイス１０２ａ〜１０２ｂの各々を、第２の内部メディアストリームによってエッジモジュール１０７から第２のメディアエンジン１１０に接続（６０８）する。第２のメディアエンジン（ＭＣＵ）１１０は、エンドポイントデバイス１０２ａ〜１０２ｂ間の第２のカンファレンス・セッションを確立（６１０）する。エンドポイントデバイス１０２は、そのセッションがメディアエンジン間で移行される間に、カンファレンシング・プラットフォーム１０６との接続を失うことはなく、このように、エンドポイントデバイスまたは関連付けられたユーザが介入することなく、セッションは維持され、その結果、プラットフォーム１０６のユーザは、より良好なエクスペリエンスが得られる。
【００９８】
図７は、図１のシステム１００を用いて、メディアベースのカンファレンス・セッションを再ルーティングする方法のワークフロー図である。図７に示すワークフローは、図６に示す方法６００の詳細な実施形態である。ネットワーク監視モジュール１１１は、複数のエンドポイントデバイス１０２ａ〜１０２ｂ間のカンファレンス・セッションを現在ホストしているＭＣＵ １１０を監視（７０２）する。その監視中に、モジュール１１１は、そのカンファレンス・セッションをホストするために新たなＭＣＵを割り当てる必要がある、カンファレンス・セッションおよび／またはＭＣＵのコンディションを確認（７０４）する。
【００９９】
ネットワーク監視モジュール１１１は、そのコンディションが存在することと、そして、新たなＭＣＵが必要であることとを、ＮＡＰＩモジュール１０８ａに通知（７０６）する。ＮＡＰＩモジュール１０８ａは、ＭＬＳモジュール１０８ｂに問い合わせすることにより、新たなＭＣＵを要求（７０８）する。一部の実施形態では、ＭＬＳモジュール１０８ｂは、さらに、ネットワーク監視モジュール１１１に問い合わせすることにより、新たなＭＣＵを選択する目的で、プラットフォーム１０６における現在の状態およびリソース割り当てに関する追加情報を受け取る。ＭＬＳモジュール１０８ｂは、選択された新たなＭＣＵを、ＮＡＰＩモジュール１０８ａに返す（７１０）。
【０１００】
ＮＡＰＩモジュール１０８ａは、その新たなＭＣＵを、エッジモジュール１０７に提示（７１２）する。エッジモジュール１０７は、該エッジモジュール１０７と、そのセッションを元々ホストしていた第１のＭＣＵとの間で、エンドポイントデバイス１０２ａ〜１０２ｂの各々のための内部メディアストリームを切断（７１４）する。エッジモジュール１０７は、次に、該エッジモジュール１０７と、元のセッションを引き継ぐ新規のカンファレンス・セッションを確立する新たなＭＣＵ １１０との間で、エンドポイントデバイス１０２ａ〜１０２ｂの各々のための新たなメディアストリームを接続（７１８）する。
【０１０１】
［メディアネゴシエーションおよびトランスコーディング］
本明細書に記載の方法およびシステムの別の重要な態様は、個々のユーザに合わせて調整されない最小公倍数アプローチを用いるのではなく、個々のエンドポイントデバイスの能力および／またはユーザプリファレンスに応じて、メディアネゴシエーションおよびトランスコーディングの実施が可能であることである。本明細書に記載のメディアネゴシエーションおよびトランスコーディング技術によって、カンファレンシング・プラットフォーム１０６は、カンファレンス・セッションのためのメディアストリームがセットアップされる前に、メディアネゴシエーションに関する問題を解決することが可能となり、さらに、セッションの成功を保証するために互換性の問題の解決が必要な場合は、トランスコーディングプロセスを取り込むことが、必要に応じて可能となる。エンドポイントデバイスのタイプ、セッション記述情報、発信元ネットワークなどを含む、シグナリングから収集されたデータを用いて、カンファレンシング・プラットフォーム１０６は、メディア互換性の問題を事前に解決することができる。
【０１０２】
本明細書に記載のメディアネゴシエーションおよびトランスコーディング技術の一態様は、エンドポイントデバイスに関連したプロファイル情報、および／またはエンドポイントデバイスがカンファレンシング・プラットフォーム１０６に接続する接続元ネットワーク（例えば、Ｓｋｙｐｅ（登録商標））に関連したプロファイル情報、を収集および維持することである。プロファイル情報は、カンファレンス・セッションの確立に先立って、さらに／またはエンドポイントデバイスがプラットフォーム１０６に接続して利用する時間の経過に伴って動的に、収集することができる。
【０１０３】
一例では、プロファイル情報は、以下のものを含むことができる。
・  エンドポイントデバイスがプラットフォームに接続するのに使用しているネットワーク： これによって、エンドポイントデバイスの発信元に基づいた具体的な処理が可能となる；
・  シグナリングデータ：要素として、ユーザエージェント（すなわち、報告されたクライアントタイプ）およびセッション記述（例えば、分解能、コーデックなど）が含まれる。これらに加えて、例えば、セッション開始プロトコル（ＳＩＰ）でサポートされたヘッダおよび必須ヘッダのような、他のヘッダを用いることができる；
・  クライアント品質メトリクス（一般的な、分解能、ジッタ、レイテンシなど）。
【０１０４】
図８は、図１のシステム１００を用いて、メディアベースのカンファレンス・セッションにおいて複数のエンドポイントデバイス間でメディア能力をネゴシエートする方法８００のフロー図である。エッジモジュール１０７は、複数のエンドポイントデバイス１０２ａ〜１０２ｂ間のカンファレンス・セッションに参加するための要求を受信（８０２）する。その要求は、第１のエンドポイントデバイス１０２ａから受信するものであり、その要求は、第１のエンドポイントデバイス１０２ａからのメディアフローを含んでいる。エッジモジュール１０７は、第１のエンドポイントデバイス１０２ａと、第１のエンドポイントデバイス１０２ａがその要求を送信した送信元ネットワーク、のうちの少なくとも１つを特定（８０４）する。例えば、エッジモジュール１０７は、シグナリングデータ、エンドポイントデバイス／ネットワークの技術属性、などに基づいて、そのエンドポイントデバイスおよび／またはネットワークに関する情報を、例えばデータベース１１２から、取得することができる。
【０１０５】
エッジモジュール１０７は、特定された第１のエンドポイントデバイス１０２ａに関連付けられた第１のメディアネゴシエーション・プロファイルが存在するかどうか判定（８０６）する。例えば、エッジモジュール１０７は、エンドポイントデバイスの識別情報に基づいてデータベース１１２に問い合わせすることで、そのエンドポイントデバイスのメディアネゴシエーション・プロファイルを取得することができる。
【０１０６】
メディアネゴシエーション・プロファイルは、そのエンドポイントデバイス１０２ａによって、その技術的能力および／またはユーザ要求に基づいてサポートされている、いくつかのメディアタイプ、コーデック、などを含むことができる。例えば、ほんの一部のコーデックのみをサポートするように制限されたエンドポイントデバイス１０２ａは、それらのコーデックを反映するメディアネゴシエーション・プロファイルを有し得る。別の例では、エンドポイントデバイス１０２ａは、カンファレンス・セッション中に従業員によって消費される帯域幅を制限することを望むエンティティ（例えば、企業）に関連付けられたものであり得る。そのエンティティに関連付けられたエンドポイントデバイスのメディアネゴシエーション・プロファイルでは、それらのエンドポイントデバイスで受信可能なデータ量およびカンファレンス・セッションの品質（例えば、分解能）の制限を明示することができる。
【０１０７】
エッジモジュール１０７は、さらに、特定されたネットワークに関連付けられた第２のメディアネゴシエーション・プロファイルが存在するかどうか判定（８０８）する。エッジモジュール１０７は、特定されたネットワークのメディアネゴシエーション・プロファイルに関して、上記と同様の考え方を用いる。例えば、容量または品質の制限があることをプラットフォーム１０６が把握している既知のネットワーク内のエンドポイントデバイスから届くカンファレンス・セッション要求は、それらの制限を反映したメディアネゴシエーション・プロファイルを有し得る。別の例では、特定の要件（例えば、ＷｅｂＲＴＣ／ＶＰ８）を有するネットワークから届くカンファレンス・セッション要求は、そのネットワークのメディアネゴシエーション・プロファイルに反映された、その要件を有し得る。
【０１０８】
エッジモジュール１０７は、第１のメディアネゴシエーション・プロファイルおよび第２のメディアネゴシエーション・プロファイルに基づいて、メディアフローのビットレート、メディアフローのセッション記述、メディアフローの宛先ＭＣＵ １１０、のうちの１つ以上を調整（８１０）する。例えば、エンドポイントデバイス１０２ａからのカンファレンス・セッション要求は、そのシグナリングにおいて、有効でないことが知られている能力を通達する可能性があり（例えば、Ｅ２０は、プロファイルレベルＩＤを正しく表示しておらず、１．２を提示しているが、３．１をサポートしている）、あるいは、エンドポイントデバイスは、既知の問題（例えば、Ｇ．７２２．１ＣによるＬｉｆｅＳｉｚｅの処理）があるコーデックのサポートを表示している。この情報を用いて、エッジモジュール１０７は、エンドポイントデバイス１０２ａのメディアフローをＭＣＵ １１０に伝送する前にセッション記述を調整することができる。別の例では、エッジモジュール１０７は、サポートされていないコーデックまたは特性をセッション記述から削除することができる。
【０１０９】
別の例では、エッジモジュール１０７は、第１のメディアネゴシエーション・プロファイルおよび第２のメディアネゴシエーション・プロファイルに基づいて、（必要なシグナリング修正をいずれも含む）トランスコーディングエンジンを取り込むことができる。例えば、特定のコーデックを提供するカンファレンス・セッション要求が、そのコーデックをサポートしていないＭＣＵロケーションに送られることになっている。エッジモジュール１０７は、サポートされたコーデックを提供するように、シグナリングを修正することができ、その接続情報は、エンドポイントデバイスとＭＣＵ １１０との間の経路に、メディアを変換するためのトランスコーディングエンジンを含むことができる（すなわち、インライン・トランスコーディング）。
【０１１０】
別の例では、エッジモジュール１０７は、第１のメディアネゴシエーション・プロファイルおよび第２のメディアネゴシエーション・プロファイルに基づいて、経路変更を実施することができる。例えば、上述のように、エッジモジュール１０７は、エンドポイントデバイスとＭＣＵの間でメディアフローのインライン・トランスコードが必要となることを回避するため、カンファレンス・セッション要求を、特定の要件（ＷｅｂＲＴＣ／ＶＰ８）を有するエンドポイントデバイスから、必要な機能をサポートしているか、またはその機能が組み込まれたメディアエンジン／ＭＣＵ １１０に、ルーティングすることができる。
【０１１１】
図９は、図１のシステム１００を用いて、メディアベースのカンファレンス・セッションにおいて複数のエンドポイントデバイス間でメディア能力をネゴシエートする方法のワークフロー図である。図９に示すワークフローは、図８に示す方法８００の詳細な実施形態である。
【０１１２】
エッジモジュール１０７は、カンファレンス・セッションに参加するための第１の要求を、第１のエンドポイントデバイス１０２ａから受信（９０２）する。エッジモジュール１０７は、データベース１１２とやりとりすることで、そのエンドポイントデバイス１０２ａおよび／またはエンドポイントデバイス１０２ａが要求を送信した送信元ネットワークの識別情報を特定（９０４）する。
【０１１３】
特定された識別情報に基づいて、エッジモジュール１０７は、データベース１１２とやりとりすることで、そのエンドポイントデバイス１０２ａに関連付けられた第１のメディアネゴシエーション・プロファイルを取得（９０６）する。エッジモジュール１０７は、さらに、データベース１１２とやりとりすることで、エンドポイントデバイス１０２ａが要求を送信した送信元ネットワークに関連付けられた第２のメディアネゴシエーション・プロファイルを取得（９０８）する。
【０１１４】
エッジモジュール１０７は、取得されたメディアネゴシエーション・プロファイルに基づいて、第１のエンドポイントデバイス１０２ａに関連したメディアフローを調整（９１０）する。場合によっては、それらのメディアネゴシエーション・プロファイルのいずれか一方または両方が存在しない。エッジモジュール１０７は、そのエンドポイントデバイス１０２ａおよび／またはネットワークのための新規のメディアネゴシエーション・プロファイルを、そのデバイス／ネットワークに関してモジュール１０７が把握している情報に基づいて、作成することができる。別の例では、エッジモジュール１０７は、フローの処理または修正をいずれも実施することなく、そのメディアフローを適切なＭＣＵ １１０に単に転送することができる。エッジモジュール１０７は、フローを調整した後に、第１のエンドポイントデバイスからのメディアフローを、適用可能なメディアエンジン／ＭＣＵ １１０上のカンファレンス・セッションに接続（９１２）する。
【０１１５】
なお、上記の方法、システム、および技術は、いずれも、本発明の範囲から逸脱することなく、ビデオ・カンファレンシング（すなわち、ビデオおよび音声メディアで構成されるカンファレンス・コール）、および音声のみのカンファレンシングの文脈において実現できることは、理解されるべきである。
【０１１６】
上記の技術は、デジタルおよび／もしくはアナログ電子回路で、またはコンピュータハードウェア、ファームウェア、ソフトウェア、もしくはそれらの組み合わせで実装することができる。その実装は、コンピュータプログラムプロダクトとして可能であり、すなわち、例えば、プログラマブルプロセッサ、コンピュータ、および／または複数のコンピュータであるデータ処理装置によって実行するために、またはその動作を制御するために、機械可読記憶装置内に有形に具現化されたコンピュータプログラムとして、可能である。コンピュータプログラムは、ソースコード、コンパイル式のコード、インタプリタ式のコード、および／またはマシンコード、などの任意の形式のコンピュータ言語またはプログラミング言語で記述することができ、そしてコンピュータプログラムは、スタンドアロン・プログラムとして、またはサブルーチン、エレメント、もしくはコンピューティング環境で用いるのに適した他のユニットとしてなど、任意の形式でデプロイすることができる。コンピュータプログラムは、１つのコンピュータ上、または１つ以上のサイトの複数のコンピュータ上で実行されるように、デプロイすることができる。
【０１１７】
方法ステップは、入力データの操作および／または出力データの生成によって本発明の機能を実行するためのコンピュータプログラムを実行する１つ以上のプロセッサによって実施することができる。また、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）、ＦＰＡＡ（フィールドプログラマブルアナログアレイ）、ＣＰＬＤ（結合プログラム可能論理回路）、ＰＳｏＣ（プログラマブルシステムオンチップ）、ＡＳＩＰ（特定用途向け命令セットプロセッサ）、またはＡＳＩＣ（特定用途向け集積回路）、などの専用論理回路によって、方法ステップを実施することもできるとともに、その専用論理回路として、装置を実現することができる。サブルーチンとは、１つ以上の機能を実現する、記憶されたコンピュータプログラムおよび／またはプロセッサおよび／または専用回路からの部分を意味し得る。
【０１１８】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用および専用マイクロプロセッサの両方、ならびに、あらゆる種類のデジタルまたはアナログコンピュータのいずれか１つ以上のプロセッサ、が含まれる。一般に、プロセッサは、読み取り専用メモリまたはランダムアクセスメモリまたはその両方から、命令およびデータを受け取る。コンピュータの主要な要素は、命令を実行するためのプロセッサと、命令および／またはデータを保存するための１つ以上のメモリデバイスである。キャッシュのようなメモリデバイスを用いて、データを一時的に保存することができる。また、メモリデバイスは、長期データ保存のために使用することもできる。一般に、コンピュータは、さらに、例えば、磁気ディスク、光磁気ディスク、もしくは光ディスクなど、データを保存するための１つ以上の大容量記憶装置を有し、あるいは、大容量記憶装置からデータを受信するか、またはそれにデータを転送するか、またはその両方のために、動作可能に接続されている。また、コンピュータは、ネットワークから命令および／もしくはデータを受信するため、ならびに／またはネットワークに命令および／もしくはデータを転送するために、通信ネットワークに動作可能に接続され得る。コンピュータプログラム命令およびデータを具現化するのに適したコンピュータ可読記憶媒体には、あらゆる形式の揮発性および不揮発性メモリが含まれ、例として、例えばＤＲＡＭ、ＳＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリデバイスなどの半導体メモリデバイス；例えば内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク；光磁気ディスク；例えばＣＤ、ＤＶＤ、ＨＤ−ＤＶＤ、ブルーレイ（登録商標）ディスクなどの光ディスク、が含まれる。プロセッサおよびメモリは、専用論理回路を補足されること、および／または専用論理回路に組み込まれることが可能である。
【０１１９】
ユーザとの対話を提供するために、上記技術は、例えばＣＲＴ（ブラウン管）、プラズマまたはＬＣＤ（液晶表示）モニタ、モバイル装置のディスプレイまたは画面、ホログラム装置および／またはプロジェクタなど、ユーザに情報を表示するための表示装置と、さらに、ユーザがコンピュータへの入力を供給する（例えば、ユーザインタフェース要素と対話する）ことが可能な、キーボード、例えばマウス、トラックボール、タッチパッド、またはモーションセンサなどのポインティングデバイスと、やりとりするコンピュータ装置上に実装することができる。また、ユーザとの対話を提供するために、他の種類の装置を用いることも可能であり、例えばユーザに提供されるフィードバックは、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形態の感覚フィードバックとすることができ、そしてユーザからの入力は、音響入力、音声入力、および／または触覚入力など、任意の形態で受け取ることができる。
【０１２０】
上記技術は、バックエンドコンポーネントを含む分散コンピューティングシステムで実現することができる。バックエンドコンポーネントは、例えば、データサーバ、ミドルウェアコンポーネント、および／またはアプリケーションサーバ、とすることができる。上記技術は、フロントエンドコンポーネントを含む分散コンピューティングシステムで実現することができる。フロントエンドコンポーネントは、例えば、グラフィカルユーザインタフェース、ユーザが例示的実装とやりとりすることが可能なウェブブラウザ、および／または送信装置用の他のグラフィカルユーザインタフェース、を有するクライアントコンピュータとすることができる。上記技術は、そのようなバックエンドコンポーネント、ミドルウェアコンポーネント、またはフロントエンドコンポーネントの任意の組み合わせを含む分散コンピューティングシステムで実現することができる。
【０１２１】
コンピューティングシステムのコンポーネントは、デジタルまたはアナログデータ通信の任意の形態または媒体（例えば、通信ネットワーク）を含み得る伝送媒体によって、相互接続することができる。伝送媒体は、任意の構成で、１つ以上のパケットベースのネットワーク、および／または１つ以上の回路ベースのネットワーク、を含むことができる。パケットベースのネットワークとして、例えば、インターネット、キャリアインターネットプロトコル（ＩＰ）ネットワーク（例えば、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、キャンパスエリアネットワーク（ＣＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ホームエリアネットワーク（ＨＡＮ））、プライベートＩＰネットワーク、ＩＰ構内交換（ＩＰＢＸ）、無線ネットワーク（例えば、無線アクセスネットワーク（ＲＡＮ）、ブルートゥース（登録商標）、Ｗｉ−Ｆｉ（登録商標）、ＷｉＭＡＸ（登録商標）、汎用パケット無線サービス（ＧＰＲＳ）ネットワーク、ＨｉｐｅｒＬＡＮ）、および／または他のパケットベースのネットワーク、を含むことができる。回路ベースのネットワークとして、例えば、公衆交換電話網（ＰＳＴＮ）、レガシー構内交換（ＰＢＸ）、無線ネットワーク（例えば、ＲＡＮ、符号分割多重アクセス（ＣＤＭＡ）ネットワーク、時分割多重アクセス（ＴＤＭＡ）ネットワーク、グローバルシステムフォーモバイルコミュニケーションズ（ＧＳＭ（登録商標））ネットワーク）、および／または他の回路ベースのネットワーク、を含むことができる。
【０１２２】
伝送媒体を介した情報転送は、１つ以上の通信プロトコルに基づくことができる。通信プロトコルとして、例えば、イーサネット（登録商標）プロトコル、インターネットプロトコル（ＩＰ）、ボイスオーバＩＰ（ＶＯＩＰ）、ピアツーピア（Ｐ２Ｐ）プロトコル、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、セッション開始プロトコル（ＳＩＰ）、Ｈ．３２３、メディアゲートウェイ制御プロトコル（ＭＧＣＰ）、シグナリングシステム＃７（ＳＳ７）、グローバルシステムフォーモバイルコミュニケーションズ（ＧＳＭ（登録商標））プロトコル、プッシュツートーク（ＰＴＴ）プロトコル、ＰＴＴオーバセルラ（ＰＯＣ）プロトコル、ユニバーサルモバイルテレコミュニケーションシステム（ＵＭＴＳ）、３ＧＰＰロングタームエボリューション（ＬＴＥ）、および／または他の通信プロトコル、を含むことができる。
【０１２３】
コンピューティングシステムの装置として、例えば、コンピュータ、ブラウザ装置を備えたコンピュータ、電話機、ＩＰ電話機、モバイル装置（例えば、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）装置、スマートフォン、タブレット、ラップトップコンピュータ、電子メール装置）、および／または他の通信装置、を含むことができる。ブラウザ装置には、例えば、ワールドワイドウェブブラウザ（例えば、グーグル社からのＣｈｒｏｍｅ（登録商標）、マイクロソフト社から入手可能なＭｉｃｒｏｓｏｆｔ（登録商標）Ｉｎｔｅｒｎｅｔ Ｅｘｐｌｏｒｅｒ（登録商標）、および／またはモジラ社から入手可能なＭｏｚｉｌｌａ（登録商標）Ｆｉｒｅｆｏｘ）を備えたコンピュータ（例えば、デスクトップコンピュータおよび／またはラップトップコンピュータ）、が含まれる。モバイルコンピュータ装置には、例えば、リサーチ・イン・モーション社からのＢｌａｃｋｂｅｒｒｙ（登録商標）、アップル社からのｉＰｈｏｎｅ（登録商標）、および／またはＡｎｄｒｏｉｄ（登録商標）ベースのデバイス、が含まれる。ＩＰ電話機として、例えば、シスコシステムズ社から入手可能なＣｉｓｃｏ（登録商標）Ｕｎｉｆｉｅｄ ＩＰ Ｐｈｏｎｅ ７９８５Ｇ、および／またはＣｉｓｃｏ（登録商標）Ｕｎｉｆｉｅｄ Ｗｉｒｅｌｅｓｓ Ｐｈｏｎｅ ７９２０、が含まれる。
【０１２４】
「備える」、「含む」、および／または複数形は、それぞれ制限のない表現であって、列挙された要素を含むとともに、列挙されていない追加の要素を含むことができる。「および／または」は、制限のない表現であって、列挙された要素の１つ以上、および列挙された要素の組み合わせを含む（「および」を「ならびに」に変えた場合や、「または」を「もしくは」に変えた場合も同様）。
【０１２５】
本発明は、その趣旨または本質的特徴から逸脱することなく、他の具体的な形態で実施できることは、当業者であれば理解できるであろう。よって、上記の実施形態は、本明細書に記載の発明を限定するものではなく、あらゆる点において、例示的なものとみなされるべきである。
本発明は一側面において以下の発明を包含する。
（発明１）
メディアベースのカンファレンス・セッションを再ルーティングするためのコンピュータ化された方法であって、以下のステップを含む方法：
外部メディアストリームによってサーバコンピュータ装置にそれぞれ接続されるとともに第１の内部メディアストリームによって前記サーバコンピュータ装置から第１の多地点制御ユニットにそれぞれ接続されている複数のエンドポイントデバイス間の、第１のカンファレンス・セッションに関連したコンディションを前記サーバコンピュータ装置が判定するステップであって、ここで、前記コンディションは、新たな多地点制御ユニットが必要であることを示すものである、該ステップ；
前記サーバコンピュータ装置が、前記複数のエンドポイントデバイス間の第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップ；
前記サーバコンピュータ装置が、前記外部メディアストリームが接続されたままで、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断するステップ；
前記サーバコンピュータ装置が、前記複数のエンドポイントデバイスの各々を、第２の内部メディアストリームによって前記サーバコンピュータ装置から前記第２の多地点制御ユニットに接続するステップ；及び
前記サーバコンピュータ装置が、前記第２の多地点制御ユニット上で、前記複数のエンドポイントデバイス間の前記第２のカンファレンス・セッションを確立するステップ。
（発明２）
発明１に記載の方法であって、前記コンディションが、前記第１の多地点制御ユニットの障害、所定の限度を超える前記第１のカンファレンス・セッションのエンドポイントデバイスのカウント数、及び、所定の限度を超える前記第１のカンファレンス・セッションから生じるリソース負荷のうちの１つ以上を含む、該方法。
（発明３）
発明１に記載の方法であって、前記サーバコンピュータ装置が、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断する前に、前記複数のエンドポイントデバイスに通知するステップを更に含む、該方法。
（発明４）
発明１に記載の方法であって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップが、前記第２の多地点制御ユニットのロケーションを特定することを含む、該方法。
（発明５）
発明１に記載の方法であって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップが、セッション要件を特定するために前記第１のカンファレンス・セッションを分析することと、前記第２の多地点制御ユニットが前記セッション要件を満たすことが可能かどうか判断することとを含む、該方法。
（発明６）
発明５に記載の方法であって、前記セッション要件が、以下のうちの１つ以上を含む、該方法：前記第１のカンファレンス・セッションに参加している前記エンドポイントデバイスのカウント数、前記第１のカンファレンス・セッションに参加している前記エンドポイントデバイスによって消費されるメディア帯域幅、前記第１の多地点制御ユニットの地理的ロケーション、及び前記第１のカンファレンス・セッションに参加している前記複数のエンドポイントデバイスの少なくとも１つによって使用されるメディアプロトコル。
（発明７）
発明１に記載の方法であって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップが、多地点制御ユニットのリストを特定することと、前記多地点制御ユニットの各々に関連した現在のリソース利用状況に基づいて、前記リストから多地点制御ユニットを選択することとを含む、該方法。
（発明８）
発明１に記載の方法であって、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断するステップは、前記外部メディアストリームがアクティブに維持されるように、前記外部メディアストリームによって、前記複数のエンドポイントデバイスにメディアを伝送することを含む、該方法。
（発明９）
発明１に記載の方法であって、前記ステップが、リアルタイムで実行される、該方法。
（発明１０）
発明１に記載の方法であって、前記サーバコンピュータ装置が、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定する前に、前記第１のカンファレンス・セッションに関連した前記コンディションが解消するのを待つステップを更に含む、該方法。
（発明１１）
発明１０に記載の方法であって、前記サーバコンピュータ装置は、所定の期間待機する、該方法。
（発明１２）
メディアベースのカンファレンス・セッションを再ルーティングするためのシステムであって、前記システムはサーバコンピュータ装置を備え、前記サーバコンピュータ装置は、以下のステップを行うように構成される、該システム：
外部メディアストリームによって前記サーバコンピュータ装置にそれぞれ接続されるとともに第１の内部メディアストリームによって前記サーバコンピュータ装置から第１の多地点制御ユニットにそれぞれ接続されている複数のエンドポイントデバイス間の、第１のカンファレンス・セッションに関連したコンディションを判定するステップであって、前記コンディションは、新たな多地点制御ユニットが必要であることを示す、該ステップ；
前記複数のエンドポイントデバイス間の第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップ；
前記外部メディアストリームが接続されたままで、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断するステップ；
前記複数のエンドポイントデバイスの各々を、第２の内部メディアストリームによって前記サーバコンピュータ装置から前記第２の多地点制御ユニットに接続するステップ；及び
前記第２の多地点制御ユニット上で、前記複数のエンドポイントデバイス間の前記第２のカンファレンス・セッションを確立するステップ。
（発明１３）
発明１２に記載のシステムであって、前記コンディションが、前記第１の多地点制御ユニットの障害、所定の限度を超える前記第１のカンファレンス・セッションのエンドポイントデバイスのカウント数、及び、所定の限度を超える前記第１のカンファレンス・セッションから生じるリソース負荷のうちの１つ以上を含む、該システム。
（発明１４）
発明１２に記載のシステムであって、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断する前に、前記複数のエンドポイントデバイスに通知するように前記サーバコンピュータ装置が更に構成される、該システム。
（発明１５）
発明１２に記載のシステムであって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップが、前記第２の多地点制御ユニットのロケーションを特定することを含む、該システム。
（発明１６）
発明１２に記載のシステムであって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップが、セッション要件を特定するために前記第１のカンファレンス・セッションを分析することと、前記第２の多地点制御ユニットが前記セッション要件を満たすことが可能かどうか判断することとを含む、該システム。
（発明１７）
発明１６に記載のシステムであって、前記セッション要件が、以下のうちの１つ以上を含む、該システム：前記第１のカンファレンス・セッションに参加している前記エンドポイントデバイスのカウント数、前記第１のカンファレンス・セッションに参加している前記エンドポイントデバイスによって消費されるメディア帯域幅、前記第１の多地点制御ユニットの地理的ロケーション、及び前記第１のカンファレンス・セッションに参加している前記複数のエンドポイントデバイスの少なくとも１つによって使用されるメディアプロトコル。
（発明１８）
発明１２に記載のシステムであって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定するステップが、多地点制御ユニットのリストを特定することと、前記多地点制御ユニットの各々に関連した現在のリソース利用状況に基づいて、前記リストから多地点制御ユニットを選択することとを含む、該システム。
（発明１９）
発明１２に記載のシステムであって、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断するステップは、前記外部メディアストリームがアクティブに維持されるように、前記外部メディアストリームによって、前記複数のエンドポイントデバイスにメディアを伝送することを含む、該システム。
（発明２０）
発明１２に記載のシステムであって、前記ステップが、リアルタイムで実行される、該システム。
（発明２１）
発明１２に記載のシステムであって、第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定する前に、前記第１のカンファレンス・セッションに関連した前記コンディションが解消するのを待つように前記サーバコンピュータ装置が更に構成される、該システム。
（発明２２）
発明２１に記載のシステムであって、前記サーバコンピュータ装置は、所定の期間待機する、該システム。
（発明２３）
メディアベースのカンファレンス・セッションを再ルーティングするためのコンピュータプログラムプロダクトであって、
非一時的なコンピュータ可読記憶媒体内に有形に具現化されたコンピュータプログラムプロダクトであり、
前記コンピュータプログラムプロダクトは、サーバコンピュータ装置に、以下の動作を行わせるように機能する命令を含む、該コンピュータプログラムプロダクト：
外部メディアストリームによって前記サーバコンピュータ装置にそれぞれ接続されるとともに第１の内部メディアストリームによって前記サーバコンピュータ装置から第１の多地点制御ユニットにそれぞれ接続されている複数のエンドポイントデバイス間の、第１のカンファレンス・セッションに関連したコンディションを判定すること、ここで、前記コンディションは、新たな多地点制御ユニットが必要であることを示す；
前記複数のエンドポイントデバイス間の第２のカンファレンス・セッションをホストするために利用できる第２の多地点制御ユニットを特定すること；
前記外部メディアストリームが接続されたままで、前記第１の内部メディアストリームを前記第１の多地点制御ユニットから切断すること；
前記複数のエンドポイントデバイスの各々を、第２の内部メディアストリームによって前記サーバコンピュータ装置から前記第２の多地点制御ユニットに接続すること；及び
前記第２の多地点制御ユニット上で、前記複数のエンドポイントデバイス間の前記第２のカンファレンス・セッションを確立すること。
【図１】
0005969675.tif 000002
【図２】
0005969675.tif 000003
【図３Ａ】
0005969675.tif 000004
【図３Ｂ】
0005969675.tif 000005
【図４】
0005969675.tif 000006
【図５】
0005969675.tif 000007
【図６】
0005969675.tif 000008
【図７】
0005969675.tif 000009
【図８】
0005969675.tif 000010
【図９】
0005969675.tif 000011