提供: Bright Pattern Documentation
• English
会議
以下のコードスニペットは、通話を会議に統合する方法を示しています。
- コンサルテーションによる会議の場合、保留中のプライマリ通話とアクティブなコンサルテーション通話が存在することを前提としています。このコードスニペットの実行は、ユーザーによる明示的な操作(例:Mergeボタンの押下)によってトリガーされます。
- ワンステップ会議の場合、アクティブなプライマリ通話と、ログイン中のユーザーによって開始された別の通話試行が存在することを前提としています。このコードスニペットの実行は、2番目の通話が接続されたことによってトリガーされます。
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;
}
会議から参加者を削除するには、CallクラスのremovePartyメソッドを次のように使用します:
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);
}
}
}
会議から退出する(自分自身を会議から削除する)には、Callクラスのdropメソッドを使用します:
public void drop();
会議を終了するには、CallクラスのendConferenceメソッドを使用します:
public void endConference();