Call Conference

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 will allow the level of conference control provided by the API. 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 can begin as a regular two-party call, such as a call established with lineMakeCall. Once the two-party call exists, additional parties can be added, one at a time. Calling lineSetupConference prepares a given call for the addition of another party, and this action establishes the conference call. This operation 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 application.

Note The capabilities of the addressed line device can limit the number of parties conferenced in a single call and whether or not a conference starts out with a normal two-party call.

The application can then use lineDial on the consultation call to establish a connection to the next party to be added. The lineDrop function can be used to abandon this call attempt. The third party is added with the lineAddToConference function, which specifies both the conference call and the consultation call.

  • A three-way conference call can be established 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 with the lineSetupTransfer function, which returns a consultation call handle. After a period of consultation, the application 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 with 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.

  • A conference call may need to be established with 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 with lineAddToConference. Additional parties are added with linePrepareAddToConference followed by lineAddToConference.

To add parties to an existing conference call, the application uses linePrepareAddToConference. When calling this function, the application supplies the handle of an existing conference call. The function allocates a consultation call that can later be added to the conference call and returns a consultation call handle to the application. This conference call is then placed on conference hold. Once the consultation call exists, it can be added to the existing conference call with lineAddToConference.

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 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 can toggle between the consultation call and the conference call using lineSwapHold.

Use the call handle for the member calls to later remove the call from the conference. Do this by calling 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 lineRemoveFromConference is possible.

In version 0x00020000 and greater, applications can use the "no hold conference" feature of PBXs by using the LINECALLPARAMFLAGS_NOHOLDCONFERENCE option with lineSetupConference; this feature allows another device, such as a supervisor or recording device, to be silently attached to the line.

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
Unix Manual Pages
Delphi Examples