Conference
The following code snippet shows how to merge calls into a conference.
- For an conference via consultation, it assumes existence of a held primary call and an active consult call. Execution of the code snippet would be triggered by an explicit user action (e.g., pressing of a Merge button).
- For a single-step conference, it assumes existence of an active primary call and another call attempt initiated by the logged-in user. Execution of the code snippet would be triggered by connection of the second call.
public void MergeCalls(List<Call> calls) {
- Call conferencingCall = FindConferencingCall(calls, null);
- if (conferencingCall == null)
- return;
- List<Call> callsToMerge = new List<Call>();
- foreach (Call call in calls) {
- if (call.id != conferencingCall.id && call.state != CallState.Disconnected) {
- callsToMerge.Add(call);
- }
- }
- conferencingCall.mergeConference(callsToMerge);
}
private Call FindConferencingCall(List<Call> calls) {
- Call bestCall = null;
- DateTime bestTime = DateTime.Now;
- foreach (Call call in calls) {
- if (call.state != CallState.Disconnected && call.state != CallState.Unknown) {
- foreach (CallParty cp in call.parties.Values) {
- switch (cp.phoneType) {
- case PhoneType.Trunk:
- return call;
- case PhoneType.DialOut:
- return call;
- case PhoneType.AccessNumber:
- return call;
- case PhoneType.Phone:
- case PhoneType.Softphone:
- if (bestCall == null) {
- bestCall = call;
- bestTime = call.startTime;
- }
- else if (call.startTime < bestTime) {
- bestCall = call;
- bestTime = call.startTime;
- }
- break;
- }
- }
- }
- }
- return bestCall;
}
|
To remove a participant from a conference, the removeParty method from Call should be used as follows:
void RemoveFromConference(string callId, string partyId)
{
- Call call = AgentPlace.call(callId);
- if (call != null)
- {
- CallParty party = call.parties[partyId];
- if (party != null)
- {
- call.removeParty(party);
- }
- }
}
|
To leave a conference (remove oneself from a conference), use the drop method from Call:
- public void drop();
To end a conference, use the endConference method from Call:
- public void endConference();
< Previous | Next >< Previous | Next >