Routing nach Wochentag

Manny

Silver Partner
Mitglied seit
30. August 2022
Beiträge
25
Hi

Wir versuchen ein Wochentagbasiertes Routing einzurichten. Sprich Montags Soll es auf Rufgruppe A umleiten und Dienstag auf Rufgruppe B usw.

Dazu habe ich mir im CallFlow Designer was zusammengeklickt das auch ohne Fehler "buildet".

cfd-1.png

Will ich es dann einfügen gibt es Fehler beim kompilieren.
Code:
:[7871..7877)E: (159,111)-(159,117): Error CS1061: 'ConditionalComponent' does not contain a definition for 'Monday' and no accessible extension method 'Monday' accepting a first argument of type 'ConditionalComponent' could be found (are you missing a using directive or an assembly reference?)

            DayOfWeek.ConditionList.Add(() => { return Convert.ToBoolean(((DateTime.Now.DayOfWeek == DayOfWeek.Monday) && (DateTime.Now.Hour > 0 || DateTime.Now.Hour == 0 && DateTime.Now.Minute >= 0) && (DateTime.Now.Hour < 12 || DateTime.Now.Hour == 12 && DateTime.Now.Minute <= 0))); });

                                                                                                               ^^^^^^

:[8587..8593)E: (165,111)-(165,117): Error CS1061: 'ConditionalComponent' does not contain a definition for 'Monday' and no accessible extension method 'Monday' accepting a first argument of type 'ConditionalComponent' could be found (are you missing a using directive or an assembly reference?)

            DayOfWeek.ConditionList.Add(() => { return Convert.ToBoolean(((DateTime.Now.DayOfWeek == DayOfWeek.Monday) && (DateTime.Now.Hour > 12 || DateTime.Now.Hour == 12 && DateTime.Now.Minute >= 1) && (DateTime.Now.Hour < 23 || DateTime.Now.Hour == 23 && DateTime.Now.Minute <= 59))); });

                                                                                                               ^^^^^^

Ich vermute ich habe was grundlegendes falsch gemacht, sehe aber nicht was. Kann mir jemand auf die Sprünge helfen?
 
Ich vermute ich habe was grundlegendes falsch gemacht, sehe aber nicht was. Kann mir jemand auf die Sprünge helfen?
wie sieht dein Main.cs aus?
Click to open C# script file.
 
Also als Code Einfügen kann ich es leider nicht, das Forum macht dann immer einen Fehler. Habs mal als Anhang angehängt.
Als TXT gings auch nicht, musste als Zip.
 

Anhänge

Kann mir jemand auf die Sprünge helfen?
Ich habe mir den Code angeschaut und kurz in eine Anlage geladen. Ja, das ergibt Fehler.
Benenne den CFD Block mit dem Date&Time Condition um in etwas anders. Benutze eben nicht gerade DayOfWeek oder eine sonstige in C# in DateTime vordefinierte Methode oder Eigenschaft. :D :D

Wenn du wissen willst wieso, dann vergleichst du anschließend die Zeile 159 u.a. des nicht funktionierenden Output mit dem funktionierendem Output.

Also als Code Einfügen kann ich es leider nicht, das Forum macht dann immer einen Fehler. Habs mal als Anhang angehängt.
Wenn man so etwas tut, dann bitte das gesamte CFD Projekt als gepackte Datei hier abladen. Darin sind dann mind. die Dateien Main.flow und WeekdaybasedRouting.cfdproj. Damit kann man etwas anfangen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Manny
Hallo fxbastler

Danke für die Hilfe. Nach dem umbenennen von DayOfWeek hats geklappt.
Ich weiss halt nicht was in C# vordefiniert ist, leuchtet aber ein das es daher kommt.
 
  • Like
Reaktionen: fxbastler
Das Script funktioniert soweit.
Was mich etwas irritiert ist das direkt die Warteschleifenmusik gespielt wird wenn das Script den Anruf annimmt.
Kann ich im Script die Musik definieren (da würde ich gerne das Standard "tuut -tuut" hinterlegen :)) oder muss ich dazu die Standard Wartemusik anpassen?
 
Was mich etwas irritiert ist das direkt die Warteschleifenmusik gespielt wird wenn das Script den Anruf annimmt.
Merke 1: Ein CFD Programm startet nur wenn es angerufen wird.
Merke 2: Ein CFD Programm nimmt jeden Anruf sofort an.

Es wird MOH von der 3CX abgespielt und nicht von der CFD App und auch nicht 'die WS Musik'. Wenn bei euch die WS Musik MOH ist, dann ja: dann ist das gleich. In der 3CX kann man die Musik für WS u.v.a.m ändern.

Es wird wohl so sein (meine Annahme), dass dein Transfer zu den diversen Nummern 81xx an normale Nebenstellen oder RG geht. Diese nehmen grds. den Anruf erst einmal nicht an bis dort jemand abhebt oder der Anruf irgendwann irgendwie weiter umgeleitet wird (MB usw.)..

Also: da die CFD App den eingehenden Anruf sofort annimmt startet Audio für den Anruf. Die CFD App leitet quasi sofort weiter (NSt. RG ...), der Anruf wird am Transfer Ziel nicht angenommen aber hat dennoch Audio. Wenn der Anruf vom Transfer Ziel nicht angenommen wird, dann spielt die 3CX so lange ihr MOH ab. Der Anruf hat die CFD App da schon lange verlassen.

Das ist die Erklärung. Wegen einer anderen Musik: dazu müsste ich mind. noch wissen was für eine Art Ziele diese 81xx Nummern sind und woher der Anruf an die CFD App kommt (ausschließlich extern über SIP Trunk, über eine Bridge, auch intern).
 
Zuletzt bearbeitet:
Also, ich formuliere die Frage um ;)

Kann im CFD die MOH für einen CallFlow spezifisch, respektive für die Ziele danach angepasst werden?

- Wir transferieren dabei auf Ring Groups, machen wir das im "normalen" Flow, also mit den 3CX integrierten mitteln, hört man ja jeweils das "tuten" und nicht MOH.
- Die Telefone kommen ausschliesslich extern über einen SIP Trunk.
 
Kann im CFD die MOH für einen CallFlow spezifisch, respektive für die Ziele danach angepasst werden?
Ich hatte es geschrieben: Wenn Audio abgespielt wird, dann passiert das durch die 3CX selber, nachdem der Anruf die CFD App verlassen hat. Ja, man kann mit einer CFD App in einer 3CX das MOH ändern. Ich bin mir nicht sicher ob das als Lösung gewünscht ist.
Ein individuelles Audio nach Verlassen der CFD App abzuspielen ist logisch unmöglich.

- Wir transferieren dabei auf Ring Groups, machen wir das im "normalen" Flow, also mit den 3CX integrierten mitteln, hört man ja jeweils das "tuten" und nicht MOH.
- Die Telefone kommen ausschliesslich extern über einen SIP Trunk.
Das ermöglicht eine völlig andere Lösung: ein C# Anrufskript auf dem SIP Trunk. Das - und nur das - nimmt Anrufe nicht an. Dort kann man das gewünschte Verhalten bzgl. Zeit und Weiterleitung auch programmieren, ist halt kein CFD klickibunti sondern eine ausgewachsene Programmiersprache. Ein Teil eines Beispiels könnte das originale 3CX Anrufskript timebasecallscript.cs aus dem 3CX Store sein. Vermutlich in Verbindung mit so etwas wie dem holiday.cs und 'noch etwas Beiwerk'.
Der Anruf kommt auf dem SIP Trunk an, das Anrufskript läuft an, ermittelt auf Grund der angerufenen Nummer das Ziel, vergleicht es mit mit dem gewünschten Ziel (da wo jetzt der Anruf an die CFD App kommt), holt sich die Zeit, führt den Zeitvergleich durch und routet entsprechend der Zeit anders weiter - alles ohne den Anruf anzunehmen und damit ohne Audio und ohne MOH.
 
Zuletzt bearbeitet:
Hallo fxbastler

Danke für deine Antwort.
Wenn das MOH nur für diesen Anruf angepasst werden kann, dann wäre das sicher eine passable Lösung. Aber ich vermute das MOH nur generell für die Anlage gesetzt werden kann?

Selber in C# was schreiben ist für mich keine Variante. Würde ich das wollen, hätte ich wahrscheinlich bereits eine andere PBX eingesetzt ;)

Somit setze ich das Wochentagsbasierte Routing aktuell mittels individuellen Öffnungszeiten auf Nebenstellen und Weiterleitungen um. Ist zwar nicht die schönste Lösung, funktioniert aber ohne zusätzliche Programmierungen und MOH kommt auch nicht ;)
 
  • Like
Reaktionen: fxbastler
Aber ich vermute das MOH nur generell für die Anlage gesetzt werden kann?
Ich denke ja, das wirkt dann generell.
Es gibt noch so einige andere Tricks (direkt vor dem Transfer MOH durch die CFD App ändern und nach dem Transfer im Exit Handler der CFD App zurückändern), aber das müsste man probieren, ist vmtl. nicht gut, läuft schlecht parallel und erwischt vielleicht auch andere Gespräche die just da starten.

Selber in C# was schreiben ist für mich keine Variante. Würde ich das wollen, hätte ich wahrscheinlich bereits eine andere PBX eingesetzt ;)
Naja, in so einem einfachen Szenario geht das schon noch. 'Wenn ich mal Zeit habe' kann ich das ansetzen, aber wann ...

Somit setze ich das Wochentagsbasierte Routing aktuell mittels individuellen Öffnungszeiten auf Nebenstellen und Weiterleitungen um. Ist zwar nicht die schönste Lösung, funktioniert aber ohne zusätzliche Programmierungen und MOH kommt auch nicht ;)
Nimm z.B. Dummy Abteilungen dafür. Die verbrauchen keine 3CX Nutzerlizenz.
 
  • Like
Reaktionen: avraammich_3CX

Statistik des Forums

Themen
44.414
Beiträge
232.721
Mitglieder
78.331
Neuestes Mitglied
b2daniel