Office Communications Server

音声会議機能が OCS 2007 R2 にもたらす力

Rajesh Ramanathan

 

概要:

  • 臨時の会議
  • 集中会議制御プロトコル
  • マルチモーダルな会議

目次

会議の種類
会議の基本的なアーキテクチャ
C3P プロトコル
会議がどのように作成されるか
他のユーザーを会議に招待する
2 名での通話を会議に拡大する

このシリーズの以前の記事「音声が OCS 2007 にもたらす力」では、Office Communications Server (OCS) システムにおける音声通話機能のしくみについて説明しました。また、基本的な SIP INVITE をシステム内でどのようにルーティングして、ピアツーピアの音声セッションを構成するか、およびクライアントが通話を確立するために、NAT とファイアウォールをどのように通過するかについても説明しました。

今回の記事では、OCS の会議機能について説明します。OCS を使用すると、企業のファイアウォールの内側および外側にいるユーザーとの間でリアルタイム会議を構成できます。その場で通話を会議に拡大したり、事前にスケジュールされた会議を行ったりすることが可能です。

OCS 2007 の会議機能は、同製品で提供されるセッション開始プロトコル (SIP) のサポートを基に構築されていて、ピアツーピア通話用に導入された NAT トラバーサルおよびファイアウォール トラバーサル機能を活用します。ピアツーピア通話と同様、企業のファイアウォールの外側にいても、場所を問わず会議に参加できます。OCS の会議機能は、OCS 2007 の会議サーバーの役割に依存します。会議機能を提供する専用サーバーを使用すると、会議の参加人数を、2、3 名から 100 名を超える人数にまで拡大できます。

fig01.gif

図 1 Office Communicator 2007 R2 の招待オプション

Office Communicator クライアントでは、音声通話や音声ビデオ通話、インスタント メッセージ セッション、またはマルチモーダル通話およびインスタント メッセージ セッションを会議に拡大できます。この場合、すべてのモードが同時かつシームレスに拡大されます。ユーザーは、2 名での音声通話に参加者を追加できます。これを行うには、Office Communicator の連絡先リストから他のユーザーをドラッグ アンド ドロップするか、会話ウィンドウの [Invite] (招待) メニュー (図 1 参照) を使用します。ユーザーは、このメニューで連絡先を選択して、電話番号を招待状に入力できます。

[Invite] (招待) メニューの [Invite by E-mail] (電子メールによる招待) オプションを使用すると、Microsoft Office Outlook を使用して電子メール メッセージを作成し、会議 URI をリモート ユーザーに送信できます (会議 URI については、この後すぐに説明します)。また、Conferencing Add-In for Microsoft Office Outlook を使用して会議がスケジュールされている場合は、ダイヤルイン番号を送信メッセージに含めることができます。[Invite by E-mail] (電子メールによる招待) が使用される場合、リモートの参加者は Communicator Web Access を使用して会議に参加し、認証を行い (または匿名で参加し)、電話番号にダイヤルアウトすることを選択できます。これにより、柔軟な対応が可能になります。

Office Communicator 2007 R2 では、[Meet Now] (会議の開始) オプション (図 2 参照) も提供され、これを使用して、臨時の会議を簡単にすばやく行うことができます。

fig02.gif

図 2 Office Communicator 2007 R2 の [Meet Now] (会議の開始) オプション

会議の種類

会議機能のしくみについて詳しく説明する前に、OCS でサポートされる会議の種類について説明します。Office Communications Server 2007 R2 で作成できる会議の種類は、次のとおりです。

公開認証ユーザー限定 OCS 2007 に対して認証されたユーザーが会議に参加し、他の認証されたユーザーを招待できます。"Open" (公開) とは、メンバシップが公開されることを意味します。Office Communicator 2007 R2 によって既定で作成される臨時の会議は、公開認証ユーザー限定ミーティングです。

非公開認証ユーザー限定 認証されたユーザーが会議に参加できますが、会議のメンバシップは開催者によって制限および制御されます。

Anonymous (匿名) 参加資格の制限が最も少ない会議です。ユーザーは OCS に対して認証を行う必要なく、Communicator Web Access から参加したり、ダイヤルイン番号を使用して電話から会議に参加したりできます。

この記事では、主に公開認証ユーザー限定ミーティングについて扱います。

会議の基本的なアーキテクチャ

OCS アーキテクチャの会議機能は、すべてのクライアントが 1 つの会議サーバーのプールに接続されるスター型トポロジに基づいています。通常、OCS の会議ソリューションでは、2 種類の主要なサーバーが会議に参加します。

1 つ目は、会議を管理する役割を果たすフォーカス ファクトリです。フォーカス ファクトリは、会議の参加者リストと、各参加者が現在使用しているモダリティを管理します。また、会議の主催者とのシグナリング制御接続を終了し、コマンド (ミュートや退出など) が適切なメディア サーバーに正しく送信されるようにします。さらに、フォーカス ファクトリは、スケジュールされた会議とダイヤルイン番号の検索に使用される会議データベースへの接続を維持します。

2 つ目は、1 つ以上の Multipoint Control Unit (MCU) です。MCU では、会議用のメディア多重化機能が提供されます。OCS システムで提供される MCU の役割は、次のとおりです。

  • IM MCU では、複数パーティ間でのインスタント メッセージングが提供されます。
  • Audio/Video MCU では、複数パーティ間での音声のミキシングおよびビデオの切り替え機能が提供されます。
  • Data MCU では、デスクトップ共有やホワイトボードといった、Live Meeting の機能が提供されます。

会議はフォーカス ファクトリによって管理されるので、どのクライアントにも、準備されるときにフォーカス ファクトリのアドレスが提供されます。このアドレスは、「プレゼンスが OCS 2007 にもたらす力」という記事で説明したインバンド プロビジョニング メカニズムを通じて送信されます。

図 3 は、3 人のユーザーが 3 つの Office Communicator クライアントを使用する会議の論理アーキテクチャを示しています。点線は、クライアントとフォーカスとの間で確立される SIP ベースのシグナリング チャネルを示しています。また、フォーカスと各 MCU との間でもチャネルが確立されます。実線は、Audio/Video MCU 上で終了する音声ビデオ ストリームを示しています。説明をわかりやすくする目的で、IM やデータなど、その他のメディア ストリームは、意図的にこの図に記載していません。

fig03.gif

図 3 3 名での会議の論理アーキテクチャ

C3P プロトコル

OCS の会議ソリューションは、集中会議制御プロトコル (通常は CCCP または C3P という短縮形で呼ばれます) に基づいています。これは、SIP を使用して次のようなメカニズムを提供する、XML ベースのクライアント サーバー プロトコルです。

  • 会議の参加者と、各参加者の現在のモードを示す会議ドキュメント (名簿)。
  • クライアントが会議サーバー (フォーカス ファクトリ) にコマンドを発行して、会議を作成したり、会議のその他の側面を制御したりできる、コマンド/応答メカニズム。

たとえば、AddConference は、フォーカス ファクトリに会議を追加するために使用される C3P コマンドです。フォーカス ファクトリは、応答として、ユーザー自身の SIP URI に基づく一意の会議 SIP URI を返します。たとえば、私の SIP URI が sip:rajesh@contoso.com だとします。クライアントが AddConference コマンドを発行すると、フォーカス ファクトリは、会議への一意のキーとして、sip:rajesh@contoso.com;gruu;opaque=app:conf:focus:id:A0DB798E3EDA984FACAD30D1A8DCD35A のような URI を返します。この SIP URI キーによって、OCS の会議が一意に識別されます。この URI を他の参加者と共有して、それらの参加者に会議へのアクセスを提供できます。[Invite by E-mail] (電子メールによる招待) オプションを使用して生成する送信メッセージにも、これと同じ URI が含まれます。

会議 SIP URI は、会議を作成したユーザー自身の SIP URI を使用して作成されるので、会議に適用するポリシーを作成者のポリシーから派生させることができます。また、これは PSTN へのダイヤルアウトなどに関連するポリシーを、特定の会議の主催者に許可されたポリシーに基づいて適用できることを意味します。

2 つ目の C3P コマンドである AddUser は、会議に参加者を追加するコマンドです。このコマンドには、出席者や発表者など、参加者の役割も指定します。主催者と発表者は、AddConference コマンドを発行した直後に、AddUser を使用して自分自身を会議に追加する必要があります。また、主催者と発表者は、AddUser を使用して、SIP URI を持つエンドポイントやクライアントを会議に招待できます。PSTN 電話番号を招待することも可能です。MCU から電話番号へのダイヤルアウトを開始するには、<dialout> XML ノードを AddUser コマンド内に設定する必要があります。ここでは、この 2 つの動作を組み合わせたコマンドを AddUserDialOut と呼びます。

3 つ目の C3P コマンドである GetConference は、すべての会議機能を取得するために使用されます。クライアントは、フォーカスに接続した後、システム内の各 MCU と直接通信するために、それらの SIP URI 情報を取得する必要があります。この MCU に関する情報は、GetConference を使用して取得します。Audio/Video MCU に対して GetConference を使用すると、sip:rajeshra@microsoft.com;gruu;opaque=app:conf:audio-video:id:A0DB798E3EDA984FACAD30D1A8DCD35A のような SIP URI を取得できます。会議フォーカス ファクトリや特定の会議サーバーなど、それぞれの SIP URI は、Globally Routable User URI (GRUU) であることに注意してください。GRUU については、「プレゼンスが OCS 2007 にもたらす力」で簡単に説明しました。

既に話したように、C3P は SIP に依存していて、SIP を使用することによって、2 つのユーザー エージェント間 (正確に言えば、ユーザー エージェント クライアントとユーザー エージェント サーバーとの間) で確立されるセッションの作成を可能にしています。SIP セッションのペイロードは、常に音声またはビデオ SDP (Session Description Protocol) でなくてもかまいません。このセッションは、純粋なシグナリング チャネルを確立するための 1 つの方法です。クライアントは、この概念に基づいて、フォーカス ファクトリとの間に、特定の会議セッションに対する SIP ベースのシグナリング チャネルを確立します。

fig04.gif

図 4 会議の作成と会議への参加

会議がどのように作成されるか

まず、会議を作成し、フォーカス ファクトリとの間に SIP シグナリング セッションを確立します。クライアントが最初に使用するコマンドは、クライアントが会議フォーカスとの通信を開始できるように、フォーカス ファクトリ内に会議セッションを作成するコマンドです。これを行うには、SERVICE という特殊な SIP 要求を使用します。SERVICE 要求と 200 OK のペアによって、AddConference コマンドとそのコマンドへの応答がそれぞれ送信されます。SERVICE と 200 OK の手順が完了した時点で、クライアントは一意の会議 ID を取得します。この ID を使用してフォーカスと通信し、MCU に関する情報を取得したり、他のユーザーを追加したり、会議のメンバシップを管理したりできます。

その後クライアントは、自分自身を会議に追加します。これは、クライアント自身のセッションが指定された C3P AddUser コマンドを含む会議 URI に INVITE を送信することによって行います。これで、会議を作成し、フォーカスに参加する最初の手順は完了です。

次に、クライアントは、各 MCU 上のメディアに参加します。たとえば、会議が音声通話の場合、Office Communicator クライアントは、SDP の本文に音声または音声ビデオを指定して、通常の SIP INVITE を発行します。

最後に、クライアントは、会議に参加する他のクライアントを招待します。図 4 は、フォーカス ファクトリ内の会議を初期化するために使用される、この一連のイベントを示しています。

SERVICE 要求が発行されたら、最初の <addUser> コマンドが、SDP の代わりに INVITE のペイロードとして送信されることに注意してください。このダイアログが作成されたら、新しいユーザーの追加など、その他のコマンドが、SIP INFO メッセージとして、フォーカスと同じ INVITE ダイアログを経由して送信されます。フォーカス ファクトリに送信される最初の C3P コマンドは、先ほど説明した、MCU の SIP URI を返す GetConference コマンドです。その後、クライアントは、2 つ目のメディア セッションを (今度は音声 SDP を使用して) 構成します。これは、getConference への応答に含まれる、A/V MCU の SIP URI へのセッションです。

このシリーズの前回までのコラム

bluebullet.gif プレゼンスが OCS 2007 にもたらす力
technet.microsoft.com/en-us/magazine/2008.02.ocsim.aspx
bluebullet.gif 音声が OCS 2007 にもたらす力
technet.microsoft.com/en-us/magazine/2008.07.ocs.aspx
bluebullet.gif リモート通話コントロールが OCS 2007 R2 にもたらす力
technet.microsoft.com/en-us/magazine/dd440963.aspx

他のユーザーを会議に招待する

クライアントがどのようにフォーカス ファクトリから会議を作成し、A/V MCU に参加するかがわかったところで、次は、クライアントがどのように他のクライアントを会議に招待するかについて説明します。ここでは、3 つの基本的な方法を使用できます。その方法は、SIP を使用してリモート クライアントに送信される臨時のアプリケーション招待、VoIP INVITE を作成するために A/V MCU からフォーカス ファクトリに送信されるダイヤルアウト要求、および会議 URI からの参加 (これはスケジュールされている会議の一部です) です。

連絡先が選択されると、Office Communicator は、直接 A/V MCU からのダイヤルアウト要求を開始せず、リモート クライアントに Application-INVITE (または App-INVITE) を送信して、そのクライアントを会議に招待しようとします。App-INVITE は、会議の SIP URI が記述された XML データ ペイロードを含む特殊な SIP INVITE です。App-INVITE を受信したクライアントは、その App-INVITE に含まれるフォーカスの URI に基づいて、会議に参加できます。他のクライアントを招待する場合は、常に App-INVITE を使用することが推奨されます。これは、App-INVITE には、インスタント メッセージングなど、会議で他に使用される可能性のあるモダリティに関する情報が含まれるからです。

ユーザーが連絡先の特定の電話番号を選択するか、[Invite by Phone] (電話による招待) を選択すると、Office Communicator は AddUserDialout コマンドを A/V MCU に発行します。ダイヤルアウト INVITE は、A/V MCU から発行される単純な VoIP INVITE です。この要求により、ダウンレベル クライアントと PSTN エンドポイントは、音声ビデオ会議に参加できるようになります。

3 名での会議を作成する

ここまでの説明に基づいて、Alice が Bob と Carol との会議を直接作成する方法について説明します。Alice は、Office Communicator の連絡先リストに含まれる Bob と Carol を右クリックし、Communicator から会議を開始します。図 5 は、Alice の Office Communicator クライアントが、まず会議を作成し、先ほど説明した構成要素を使用してその会議に参加することを示しています。

fig05.gif

図 5 会議がどのように作成されるか

これで、メディアが Alice の Office Communicator インスタンスから AV MCU に転送されます。次に、Alice の Office Communicator は、Bob の SIP URI と Carol の SIP URI に個別の App-INVITE を送信します。Bob は仕事中に、Office Communicator への着信を受けます。Bob が会議への参加を承諾すると、Bob の Office Communicator クライアントは、App-INVITE に対して 200 OK を送信し、その直後に BYE をセッションに送信します。これは、App-INVITE の本文からすべての情報を取得したことにより、Alice の Office Communicator クライアントとの仮想セッションを維持する必要がなくなったからです。次に、Bob の Office Communicator は、フォーカス ファクトリと A/V MCU に参加します。これは、Alice の Office Communicator が最初に会議に参加したときと同じ方法で行います。

Carol も App-INVITE を受信し、Office Communicator への着信を受けます。Carol は、着信した通話を開始する時点から、その会議通話を携帯電話に転送することにします。Carol がこのオプションを選択すると、Office Communicator クライアントは、フォーカスの URI に基づいてフォーカスに参加し、会議には直接参加せず、AddUserDialout C3P コマンドを発行して Carol の携帯電話に通話をダイヤルアウトします。

2 名での通話を会議に拡大する

2 名での通話を拡大する作業は、単純に会議を開始する作業に比べてやや複雑です。これは、両者が会議に切り替わるまで、2 名での通話を維持する必要があるからです。Office Communicator クライアントは、同期を取って拡大処理を実行します。この処理では、各クライアントが会議に参加した後、ピアツーピア通話を終了します。

たとえば、Alice が Bob と通話しているときに、Carol をその会議にドラッグ アンド ドロップするとします。2 名での通話を会議に拡大する場合、次のような手順が必要になります。

  1. Alice の Office Communicator クライアントが、フォーカス ファクトリに基づいて会議セッションを作成します。
  2. Alice の Office Communicator が、通話を保留にした (RTP ストリームがアクティブになっていない) 状態で A/V MCU に参加します。
  3. 会議への参加に成功したら、Alice の Office Communicator が、会議 URI を含む App-INVITE を Bob のクライアントに送信します。
  4. Bob の Office Communicator が拡大処理を開始し、RTP ストリームを保留にした状態でフォーカスと A/V MCU に参加します。
  5. A/V MCU への参加に成功したら、Bob の Office Communicator が、ピア セッションに BYE を送信します。
  6. Alice のクライアントと Bob のクライアントの両方が、A/V MCU への RTP ストリームを同時にアクティブにして、通話の継続性を維持します。
  7. Alice のクライアントが、Carol の Office Communicator クライアントに App-INVITE を送信して、3 つ目のパーティを会議に招待します。

この一連の手順は、十分に注意して実行する必要があります。Bob の Office Communicator クライアントが会議サーバーに参加できなかった場合、会議への拡大は失敗し、ピアツーピア通話が続行されます。

PSTN 通話を会議に拡大することもできますが、Office Communicator は、手順 3. で App-INVITE を送信する代わりに、AddUserDialOut を A/V MCU に発行し、Replaces ヘッダーを追加して、2 つの Office Communicator エンドポイント間のピアツーピア通話が、A/V MCU からの通話によって置き換えられるようにします。この動作については、図 6図 7 を参照してください。

fig06.gif

図 6 PSTN 通話の会議への拡大 - 実行中

fig07.gif

図 7 PSTN 通話の会議への拡大 - 最終状態

Office Communicator では、App-INVITE メカニズムがサポートされない他のクライアントとの相互運用がサポートされます。これは、A/V MCU からの AddUserDialout を使用する動作にフォールバックすることによって実現されます。上記のシナリオで言えば、App-INVITE がサポートされないクライアントを Carol が使用している場合、App-INVITE に対して 415 応答コードが返され、それを受信した Office Communicator が、A/V MCU のダイヤルアウトにフォールバックします。

ここでは、2 名での音声通話を会議に拡大する手順について説明しましたが、セッション内でインスタント メッセージングが使用される場合はどうなるでしょうか。会議内で複数のモダリティが使用される場合、Office Communicator クライアントは、両方のモダリティが正常に拡大されてから、会議をコミットし、3 つ目のパーティを会議に招待します。これにより、2 名の参加者間で、マルチモーダルな操作性が維持されます。

Rajesh Ramanathan は通信業界に 15 年間携わっており、Office Communicator 2007 および R2 の音声プロトコル、ユーザー エクスペリエンス、最近では Communicator の音声および会議機能を設計しました。現在は Office Communicator チームのリード プログラム マネージャを務めています。連絡先は rajeshra@microsoft.com (英語のみ) です。