Saisonales Call Routing

Comments

5 comments

  • Avatar
    Tom Wellige

    Hallo Hennning,

    eine komplett fertige Lösung habe ich nicht. aber einen Ansatz.

    Im Regel Assistenten als auch im Grafischen Skript Editor ist wie Du richtig beschreibst die Zeitraum Überprüfung starr implementiert. Im Regel Assistenten ist da auch nichts dran zu ändern, im Grafischen Skript Editor kann man aber die Zeitraum Überprüfung selber in die Hand nehmen mit ein ganz klein wenig VBSkript. Das was dazu notwendig ist, wird hier erklärt:

    Um jetzt Deine Anforderung ins Spiel zu bringen, müsstest Du bei dem Start- und Enddatum einfach nur das aktuelle Jahr setzen bevor Du die Zeitraum ÜBerprüfung machst.

    Basierend auf dem Beispiel aus dem obigen Blockartikel könnte das z.B. so aussehen:

    In einen "Skript Code einfügen" Block den Du vor die Überprüfung setzt, packst Du folgenden Code:

    sStartDate = Left(sStartDate, 6) & Year(Now)
    sEndDate =  Left(sEndDate, 6) & Year(Now)
    UseExit = 0

    Du ersetzt einfach das Jahr in den angebenen Daten durch das aktuelle Jahr. 

    Sag Bescheid, ob Dir das so schon weiter hilft, oder Du noch Unterstützung brauchst.

    Viele Grüße, Tom.

     

    1
    Comment actions Permalink
  • Avatar
    Henning

    Hallo Tom

    Sorry es hat etwas gedauert und ich bin auch mit dem Routing noch nicht final fertig aber der Script-Code dafür funktioniert so in meiner Entwicklungsumgebung.

     

    Er sieht so aus:

    Public Function IstSaisonZeit(ByVal AktuellesDatum As Date) As Boolean
    Dim PruefDatum As Long
    Dim AktuellesJahr As Integer
    Dim Saisonbeginn As Long
    Dim SaisonEnde As Long

    PruefDatum = 0
    AktuellesJahr = 0
    Saisonbeginn = 0
    SaisonEnde = 0

    PruefDatum = CLng(AktuellesDatum)
    AktuellesJahr = Year(AktuellesDatum)
    Saisonbeginn = CLng(CDate("25.09." & AktuellesJahr))
    SaisonEnde = CLng(CDate("27.09." & AktuellesJahr))

    If PruefDatum > Saisonbeginn And PruefDatum < SaisonEnde Then
        IstSaisonZeit= True
        UseExit = 1
    Else
        IstSaisonZeit= False
        UseExit = 0
    End If

    End Function

     

    Zum Inhalt:

    Die gewünschten Datumsangaben, bzw. werden der Funktion übergeben. In der Funktion werden sie in fortlaufende Zahlen umgewandelt und in einer If Auswertung abgefragt. Je nach Wahrheitswert wird dann ein unterschiedlicher Ausgang (0 / 1) angesteuert und das dahinter liegende CallRouting ausgelöst.

    Das ist zumindest die Idee.

     

    Aber wie gesagt ich muss es im tast. Routing (Wirkbetrieb) noch testen

     

    Henning

    0
    Comment actions Permalink
  • Avatar
    Henning

    Hallo Tom


    Ich habe den Code getestet und er funktioniert leider nicht.
    Zur Vorgehensweise:
    Ich habe die Function im Start-Block unter Parameter definiert. Dieser Funktion erwartet als Startparameter das aktuelle Datum und gibt als Ergebnis 0 oder 1 zurück. Diese Werte können dann als UseExit in einem Script-Code-Einfügen-Block ausgewertet werden. So zumindest meine Idee.
    Im folgenden Script-Code-Einfügen Block wird die Funktion wie folgt aufgerufen:
    UseExit = IstSaisonZeit(curedate(now))
    Über die Registerkarte Verbindungen wird dann der Rückgabewert 0, bzw. 1 ausgewertet und dann das jeweilige Callrouting dahinter aktiviert.
    Wenn man das Callrouting aktiviert funktioniert es leider nicht. Der testzeitraum liegt dabei ausßerhalb der Saisonzeit.
    Wo liegt mein Fehler??
    Dankeschön vorab für deine Unterstützung.
     
    Henning

    Als Anlage Screenshots:

     

     

    0
    Comment actions Permalink
  • Avatar
    Tom Wellige

    Hallo Henning,

    ich würde Datumsvergleiche immer mit DateDiff machen. Deine Variante habe ich ehrlich gesagt noch niemals probiert.

    Ebenso würde ich Dir empfehlen, Deine Funktion mit ein wenig Tracing zu versehen, so dass Du ihren Verlauf und die Ergenisse zu denen sie kommt im Server Trace nachvervolgen kannst. Mehr dazu findest Du hier:

    https://www.swyxforum.com/blogs/entry/37-9-dont-be-shy-be-chatty/

    Und dann würde ich Dir in Fall Deiner Funktion auch empfehlen, statt des "Script Code einfügen" Blocks, einen "Variable auswerten" Block zu nehmen. Dazu müsstest Du Deine Funktion allerdings einen boolschen Werte (true oder false) zurück geben lassen. Im "Variable Auswerten" Block musst Du Deine Funktion nur einfach aufrufen, und nicht extra erst noch einen weiteren Ausgang sichtbar schalten. Ist etwas schneller und einfacher gemacht. Mehr dazu findest Du hier:

    https://www.swyxforum.com/vbscript-function-collection/introduction/introduction-r1/

     

    0
    Comment actions Permalink
  • Avatar
    Henning

    Hallo Zusammen, hallo Tom
    Ich habe einen Weg gefunden wie man ein Saisonales Callrouting einbauen kann.
    Der Scriptcode war in dieser Situation nicht mein Problem, was mir fehlte war eine Idee wie ich den Code sinnhaft in das Callrouting einbaue. In der finalen Lösung habe ich dann einen "Variable auswerten" Block zwischen dem Startblock und dem eigentlichen Callrouting gesetzt. Als Parameter wird dann folgender Code übergeben:
    CLng(Date) >= CLng(CDate("25.06." & Year(Date))) And CLng(Date) <= CLng(CDate("05.09." & Year(Date)))
    In der Funktion wird ein Beginndatum (im Beispiel der 25. Juni) festgelegt und zwar unabhängig vom jeweiligen Jahr. Im weiteren Script wird dann das Endedatum fixiert (in diesem Fall der 5. September). Über das logische UND wird das aktuelle Datum dahingehend abgefragt, ob es sich innerhalb des Zeitfensters (25.06. bis 05.09.) befindet oder eben nicht. Liegt das aktuelle Datum innerhalb des genannten Zeitfensters, ist das Ergebnis True (Wahr), außerhalb der Saison dann False (Falsch). Über die Ausgänge des "Variable auswerten" Blocks lassen sich dann die verschiedenen Callroutings bedienen.
    Die Funktion CLng wandelt dabei einen Datumswert in eine fortlaufende Zahl um. Aus meiner Sicht ist das von Vorteil, wenn man mit dem Datum rechnen möchte / muss oder man die Werte, z. B. im Tracefile vergleichen möchte. Eine fortlaufende Zahl ist dann m. E. im Bezug auf > oder < als leichter zu bewerten als ein Datum. In der Datenbankprogrammierung hat sich das für mich in der Vergangenheit immer als vorteilhaft erwiesen.

    Mein Dankeschön an Tom für die Tips und Ideen wie man es im Callrouting-Manger aktivieren / einbauen kann.
    Falls jemand ähnliche Gedanken für ein saisonales Callrouting hat gern den Code testen.

    Henning

    0
    Comment actions Permalink

Please sign in to leave a comment.