2.4.2.11 Call Conference
Conference calls are calls that include more than two parties simultaneously. Conference calls can be set up using either a switch-based conference bridge or an external server-based bridge. Typically, only switch-based conferencing will allow the level of conference control provided by the SPI. In server-based conference calls all participating parties dial into the server which mixes all the media streams together and sends each participant the mix; there may be no notion of individual parties in the conference call, only that of a single call between the application and the bridge server.
A conference call can be established in a number of ways, depending on device capabilities.
- A conference call may be able to start out as a regular two-party call, e.g., a call established via TSPI_lineMakeCall. Once the two-party call exists, additional parties can be added, one at a time. Preparing to add the third party establishes the conference call via TSPI_lineSetupConference, this takes the original two-party call as input, allocates a conference call, connects the original call to the conference, and allocates a consultation call whose handle is returned to the TAPI DLL.
The TAPI DLL can then use TSPI_lineDial on the consultation call to establish a connection to the next party to be added. TSPI_lineDrop can be used to abandon this call attempt. The third party is added via TSPI_lineAddToConference, which specifies both the conference call and the consultation call.
To add additional parties once a conference call (handle) exists the TAPI DLL uses TSPI_linePrepareAddToConference, which specifies the conference call handle and returns a consultation call handle. Once the consultation call exists, it can be added via TSPI_lineAddToConference (as above).
- A conference call may have to be established via TSPI_lineSetupConference, without an existing two-party call. This returns a handle for the conference call, and allocates a consultation call. After a period of consultation, the consultation call can be added via TSPI_lineAddToConference. Additional parties are added via TSPI_linePrepareAddToConference followed by TSPI_lineAddToConference.
- A final mechanism for establishing a three-way conference call is by resolving a transfer request for three-way conference. In this scenario, a two-party call is established as either an inbound or outbound call. Next the call is placed on transfer hold via TSPI_lineSetupTransfer which returns a consultation call handle. After a period of consultation, the TAPI DLL may have the option to resolve the transfer setup by selecting the three-way conference option which conferences all three parties together in a conference call via TSPI_lineCompleteTransfer with the conference option (instead of the transfer option). Under this option, a conference call handle representing the conference call is allocated and returned to the application.
Once a call becomes a member of a conference call, the member's call state reverts to conferenced. The state of the conference call typically becomes connected. The call handle to the conference call and all the added parties remain valid as individual calls. LINE_CALLSTATE events can be received about all calls, for example, if one of the members disconnects by hanging up, an appropriate call state message may inform the application of this fact; such a call is no longer a member of the conference.
As is the case with call transfer, the application may toggle between the consultation call and the conference call using TSPI_lineSwapHold.
Use the call handle for the member calls to later remove the call from the conference. Do this by invoking TSPI_lineRemoveFromConference on the call handle. Note that this operation is not commonly available in its fully general form. Some switches may not allow it at all, or only allow the most recently added party to be removed. The line's device capabilities describe which flavor of TSPI_lineRemoveFromConference is possible.
TSPI_lineSetupConference
Prepares a given call for the addition of another party. The capabilities of the addressed line device may limit the number of parties conferenced in a single call and whether or not a conference starts out with a normal two-party call.
TSPI_linePrepareAddToConference
Prepares for adding a party to an existing conference call by allocating a consultation call that can later be added to the conference call which is placed on conference hold.
TSPI_lineAddToConference
Adds a consultation call to an existing conference call.
TSPI_lineRemoveFromConference
Removes a party from a conference call.