After a client joins the conference and the conference is created, the client must establish a media session with a conferencing server responsible for that media type. For each conferencing server that is involved in a conference, the Focus assigns a virtual SIP URI that is routable to the Focus itself. The initial notification from the Focus to the client contains the URIs for all
conferencing servers in the conference.
A client can join itself to the conference in one of the following two ways:
• To join to an IM Conferencing Server or an A/V Conferencing Server (Conferencing Servers that communicate using SIP), a client issues a direct media INVITE to the conferencing server URI.
• To join to a Web Conferencing Server (which does not use SIP), a client issues an addUser C3P dial-in command targeted at the conferencing server URI. (All C3P commands are carried inside a SIP INFO.)
A presenter client will typically invite another participant into a conference by first sending an appINVITE directly to the other participant. (An appINVITE is an INVITE between client endpoints in which the body of the request contains the Focus URI for the conference.)
If that participant client supports C3P, it will join itself to the conference using one of the preceding methods.
If the participant is a client with aversion of Office Communications Server prior to 2007, the presenter client will receive a 415 error that will cause the presenters client to issue an addUser C3P dial-out command to the conferencing server URI, to have the conferencing server directly connect to the legacy client.
In This Section
This section includes the following topics:
• Direct Media INVITE Conference Join Method for Office Communications Server 2007 R2
• C3P addUser dial-in Conference Join Method
Direct Media INVITE Conference Join Method for Office Communications Server 2007 R2 Clients can join a conference by sending a direct media INVITE. This method can only be used with conferencing servers that use SIP to establish sessions, such as the A/V Conferencing Server and the IM Conferencing Server. A media INVITE is an INVITE where the To: line contains the conferencing server URI.
Clients can join a conference by sending a direct media INVITE. This method can only be used with conferencing servers that use SIP to establish sessions, such as the A/V Conferencing Server and the IM Conferencing Server. A media INVITE is an INVITE where the To: line contains the conferencing server URI.
A client can send the media session INVITE to the conferencing server URI directly, without any prior addUser call. The INVITE is routed to the Focus. The Focus checks if the connection information is a routable SIP address and forwards the INVITE directly to the conferencing server. The Focus also sends the addUser command to the conferencing server on the client's behalf. The conferencing server authorizes the request and responds with the connection information. The following figure shows the message flow between conferencing components when a client joins a conference by sending a direct media INVITE.
Client sending the media session INVITE to the conferencing server directly * The BENOTIFY is sent to all clients subscribed to the conference state.
The following is a description of the message flow between conferencing components when a client joins a conference by sending the media session INVITE to the conferencing server URI directly:
Step 1. The client sends an INVITE to the focus/conference URI it received in the notification document. This INVITE is routed to the focus. The client might have included a session
description for media negotiation. Since the focus recognizes that the INVITE was addressed to a particular conferencing server, it safely ignores any session description in the body of the INVITE. Step 2. The Focus then sends an HTTP request to the conferencing server assigned by the Conferencing Server Factory to this conference asking it to expect a new participant (addUser). Any bootstrapping requests that the Focus sends to initialize the conference on the conferencing server are not included in the call flow diagram.
Step 2.1. The conferencing server sends a successful response for the addUser call. The response includes the actual URL that it wants the participant to use to communicate with the
conferencing server. If the server sending the response is an A/V Conferencing Server, the URL indicates that the participant can communicate with the conferencing server using SIP.
Step 1.1. After the Focus receives the successful response for the addUser request, the Focus forwards the INVITE to the A/V Conferencing Server.
Step 1.2. The conferencing server sends a successful response to the client.
Step 1.3. The client sends an ACK to the conferencing server to complete the INVITE dialog. The same INVITE dialog is also used for media negotiation with the conferencing server.
Note:
Although the client establishes the INVITE dialog directly with the conferencing server, the SIP requests traverse the Focus.
Step 3. After the client successfully joins the conferencing server, it sends a participant joined event to the Focus.
Step 4. The Focus sends a participant joined conferencing server state change notification to all clients subscribed to the conference state.
Step 5. Direct media negotiation occurs between the client and the conferencing server. With an A/V Conferencing Server, the media are RTP/RTCP streams.
C3P addUser dial-in Conference Join Method
A client can connect to a non-SIP based conferencing server, such as a Web Conferencing Server, by issuing an addUser C3P dial-in command. When a client issues an addUser dial-in C3P command, the Focus forwards the command to the Web Conferencing Server. The Web Conferencing Server authorizes the command and returns the appropriate connection information. The client then establishes a direct media session with the conferencing server. The Following figure shows the message flow between conferencing components when a client joins a conference by issuing an addUser C3P dial-in command.
Client joining media with a Web Conferencing Server using addUser dial-in
The following is a description of the message flow between conferencing components when a client joins a conference by sending an addUser C3P command to the Web Conferencing Server: Step 1. The client sends an INFO request with an addUser dial-in command to the Focus. The client uses the focus/conference URI it received in the notification document.
Step 2. The Focus determines if a conferencing server has been assigned to support this particular media type for this conference. If a conferencing server has not been assigned, the Focus sends an HTTP request to the Conferencing Server Factory asking it to allocate a conferencing server for this conference. In the diagram, it is assumed that the conferencing server has been assigned to the conference. The Focus then sends an HTTP request to the designated conferencing server asking it to expect a new participant (addUser). Any bootstrapping requests that the Focus sends to initialize the conference on the conferencing server are not included in the call flow diagram.
Step 2.1. The conferencing server sends a successful response for the addUser request. The response contains the actual URL it wants the conference participant to use to talk to the
conferencing server. If the client is joining a Web Conferencing Server, the URL is a PSOM URL. Authorization information, if any, is also included in the response.
Step 3. The Focus sends the PSOM connection information to the client.
Step 4. The client directly establishes a PSOM channel with the Web Conferencing Server. Step 5. After the client successfully joins the Web Conferencing Server, it sends a participant joined event to the Focus.
Step 6. The Focus sends a participant joined conferencing server state change notification to all clients subscribed to the conference state.
BENOTIFY sip:[email protected] SIP/2.0 SIP headers...
<conference-state version="1" state="partial"
entity="sip:[email protected];gruu;opaque=app:conf:focus:id:1234"> <user entity="[email protected]" state="full">
<display-text>Bob Kelly</display-text> <endpoint entity="addf"> <state>connected</state> <!-- MEDIA -->
<media entity="2" state="full">
<display-text>data collab</display-text> <proto>dataCollab</proto>
</media> </endpoint> </user>
<....Other conf Info...> </conference-state>