Anbei für Interressierte die Schnipsel von vorgestern abend. Hintergrund: der Kunde möchte an dieser Stelle keine Warteschleife, also muss das mit einer dynamischen Signalisierungsgruppe gelöst werden.
Es gibt eine Signalisierungsgruppe 390 und eine Dummy NSt. 395 welche immer in der Signalisierungsgruppe ist.
Dazu kommt: eine CFA 391 welche den Anrufer zu der Signalisierungsgruppe 390 hinzufügt, eine CFA 392 welche den Anrufer aus der Signalisierungsgruppe 390 entfernt, eine CFA 393 welche die Mitglieder der Signalisierungsgruppe 390 ansagt (die ist lustig) und eine CFA 394 welche die Signalisierungsgruppe 390 leert (nur noch 395 ist Mitglied).
Vorsicht wie immer: es gibt Optimierungspotential in Bezug auf Fehlerabfragen.
Beitritt:
Austritt:
Abfrage der Signalisierungsgruppenmitglieder für die Ansage (Rest sind normale CFD Blöcke):
Bereinigung:
Es gibt eine Signalisierungsgruppe 390 und eine Dummy NSt. 395 welche immer in der Signalisierungsgruppe ist.
Dazu kommt: eine CFA 391 welche den Anrufer zu der Signalisierungsgruppe 390 hinzufügt, eine CFA 392 welche den Anrufer aus der Signalisierungsgruppe 390 entfernt, eine CFA 393 welche die Mitglieder der Signalisierungsgruppe 390 ansagt (die ist lustig) und eine CFA 394 welche die Signalisierungsgruppe 390 leert (nur noch 395 ist Mitglied).
Vorsicht wie immer: es gibt Optimierungspotential in Bezug auf Fehlerabfragen.
Beitritt:
C#:
var grp = PhoneSystem.Root.GetDNByNumber(strRingGroup) as RingGroup;
if( grp.Members.Where(x => x.Number.Equals(strExtension)).Count() == 0 ){
var newext = PhoneSystem.Root.GetDNByNumber(strExtension) as Extension;
DN[] newMembers = grp.Members;
Array.Resize(ref newMembers, newMembers.Length +1);
newMembers[newMembers.Length-1]=newext;
grp.Members=newMembers;
grp.Save();
return "Beitritt";
} else {
return "KeinBeitritt";
}
C#:
var grp = PhoneSystem.Root.GetDNByNumber(strRingGroup) as RingGroup;
DN[] newMembers=grp.Members.Where(x => x.Number != strExtension).ToArray();
if( grp.Members.Count() != newMembers.Length ) {
grp.Members=newMembers;
grp.Save();
return "Austritt";
} else {
return "KeinAustritt";
}
C#:
return String.Join(" ",(PhoneSystem.Root.GetDNByNumber(strRingGroup) as RingGroup).Members.Select(x => x.Number).OrderBy(s => s));
C#:
var grp = PhoneSystem.Root.GetDNByNumber(strRingGroup) as RingGroup;
var newext = PhoneSystem.Root.GetDNByNumber(strExtension) as Extension;
DN[] newMembers = grp.Members;
Array.Resize(ref newMembers, 1);
newMembers[0]=newext;
grp.Members=newMembers;
grp.Save();
return "OK";