Conference Call

Conference calls are calls that include more than two parties simultaneously. They can be set up using either a switch-based conference bridge or an external server-based bridge. Typically, only switch-based conferencing allows the level of conference control provided by TSPI. In server-based conference calls, all participating parties dial into the server, which mixes 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:

To add additional parties after a conference call exists, tapi32.dll uses TSPI_linePrepareAddToConference, which specifies the conference call handle and returns a consultation call handle. After the consultation call exists, it can be added using TSPI_lineAddToConference (as described earlier).

After a call becomes a member of a conference call, the member's call state becomes 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 can 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.

The tapi32.dll can use the call handle for the member calls to later remove any or all members from the conference, and it does this by invoking TSPI_lineRemoveFromConference on the call handle. 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 type of TSPI_lineRemoveFromConference is possible.