Welcher Status? Interne Anrufe annehmen / Externe umleiten

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:
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";
}
Austritt:
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";
}
Abfrage der Signalisierungsgruppenmitglieder für die Ansage (Rest sind normale CFD Blöcke):
C#:
return String.Join(" ",(PhoneSystem.Root.GetDNByNumber(strRingGroup) as RingGroup).Members.Select(x => x.Number).OrderBy(s => s));
Bereinigung:
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";
 

Anhänge

Frage 1 an @EulePS :
Wird das insgesamt noch gebraucht? Soll das 'mal eben (die nächsten Tage) jemand bauen'?
^ @EulePS ?

Den Haken im Status 'Benutzerdefiniert 2' bei 'Anrufe von Signalisierungsgruppen annehmen' zu setzen habe ich inzwischen gefunden, lässt sich also auch automatisieren. Aber man büßt halt den Status Custom 2 ein und wenn die NSt. in anderen Signalisierungsgruppen drin sind dann klingelt es auch da bei eingehenden Anrufen.
 

Statistik des Forums

Themen
44.414
Beiträge
232.721
Mitglieder
78.331
Neuestes Mitglied
b2daniel