Jump to content

GSE Operanden verwenden


Toni1985
 Share


Go to solution Solved by Toni1985,

Recommended Posts

 

Hallo zusammen,

ich wollte in die Runde Fragen, ob es in dem GSE-Block "Variable auswerten" möglich ist auch einen Operanden verwenden kann wie =< oder =< oder Platzhalter wie & oder %?

Anlass ist folgender Anwendungsfall:

wir möchten anhand der Eingabe PLZ die Rufe bestimmten Zielen VG-Warteschlangen zuordnen.

 

Wir haben ähnliches schon bei einem andern Kunden im Einsatz mit Konferenzraum PINs: 

 

image.thumb.png.39ba7ff15cfcfb14d6124b18445abaf0.png

 

 

Allerdings will ich es schlanker gestalten und natürlich haben wir keine Lust jede mögliche PLZ als "riesiges CR" bauen sondern hier möchten wir nur eine Vorfilterung machen mit 16 Zielen

80*, 81*,  82*,  830*,  831*,  832*,  833*,  834*,  835*,  836*,  837*,  85*,  86*,  88*,  89*,  91*;

 

Ist es möglich hier im Variable speichern die 5-Stellige PLZ eingeben zu lassen und in Variable auswerten einen Platzhalter wie 80*** oder 80%%% oder ein 80*<81* einzustellen um die Bereiche abzudecken?

Also sowas zu machen:

image.png.156215f4018f055c28e2641d7ca438fe.png

 

oder ähnlich?

 

Ich bedanke mich schon einmal für jegliche Idee.

 

Viele Grüße 

 

Antonio Boada Sainz-Maza

 

Link to comment
Share on other sites


Hallo Antonio,

 

ja, Du kannst in "Variable auswerten" Blöcken auch Vergleiche in der Art > oder >= oder < oder <= oder = verwerden. Das ist kein Problem, Du musst nur darauf achten, dass Du nicht Äpfel mit Birnen vergleichst. Alles was als DTMF eingegeben wird, ist eine Zeichenkette (String). Du musst also darauf achten, dass Du diese Eingabe auch nur mit Zeichenketten vergleichst, also z.B. 

 

sDTMF >= "12345"

 

Du kannst auch mehrere Vergleiche gleichzeitig anstellen, und diese mittels "and" miteinander verknüpfen. In diesem Fall würde ich aber die einzelnen Vergleiche in Klammern setzen. Das erhöht die Lesbarkeit enorm:

 

(sDTMF >= "12345") and (sDTMF <= "54321")

 

Aber...

 

Statt der vielen "Variable auswerten" und "Durchstellen" Blöcke die Du dann benutzt um auf Deine 16 verschiedenen VG Warteschlagen durchzustellen, würde ich das (zumindest aus meiner Sicht) noch etwas eleganter lösen: mittels einer kleinen VBScript Funktion. Damit sieht Dein Call Routing dann so aus:

 

image.png

 

Im "Durchstellen" Block wird eine VBSkript Funktion "GetDestination" aufgerufen (die sich im "Start" Block befindet). Die verschiedenen PLZ Bereiche werden in einem Array zusammen mit dem dazugehörigen Durchstell Ziel definiert. Die Funktion geht einfach durch dieses Array durch, sucht den passenden Bereich und gibt dessen Durchwahl zurück. Wird kein Bereich gefunden wird eine Standard Durchwahl zurück gegeben.

 

Const DEFAULT_DESTNATION = "100"

Dim PLZ_Array
'         Min,     Max,     Destination
PLZ_Array = Array( _
    Array(80000,   80999,   "101"), _
    Array(81000,   81999,   "102"), _
    Array(82000,   82999,   "103"), _
    Array(83000,   83099,   "104"), _
    Array(83100,   83199,   "105"), _
    Array(83200,   83299,   "106"), _
    Array(83300,   83399,   "107"), _
    Array(83400,   83499,   "108"), _
    Array(83500,   83599,   "109"), _
    Array(83600,   83699,   "110"), _
    Array(83700,   83799,   "111"), _
    Array(85000,   85999,   "112"), _
    Array(86000,   86999,   "113"), _
    Array(88000,   88999,   "114"), _
    Array(89000,   89999,   "115"), _
    Array(91000,   91999,   "116") _
 )


Function GetDestination ( sPLZ )
    PBXScript.OutputTrace "-----> GetDestination ( " & sPLZ & " )"

    Dim sReturn
    sReturn = DEFAULT_DESTNATION

    If IsNumeric(sPLZ) Then 
    
        Dim nPLZ
        nPLZ = CLng(sPLZ)

        Dim i
        For i = LBound(PLZ_Array, 1) to UBound(PLZ_Array, 1)

            If (nPLZ >= PLZ_Array(i)(0)) And (nPLZ <= PLZ_Array(i)(1)) Then
                PBXScript.OutputTrace "Found PLZ range " & i+1 & "(" & PLZ_Array(i)(0) & "-" & PLZ_Array(i)(1) & ")"
                sReturn = PLZ_Array(i)(2)
            End If

        Next

        If sReturn = DEFAULT_DESTNATION Then
            PBXScript.OutputTrace "No PLZ range found, using default destination."
        End If

    Else
        PBXScript.OutputTrace "Invalid PLZ, using default destination."
    End If

    GetDestination = sReturn

    PBXScript.OutputTrace "sReturn = " & sReturn
    PBXScript.OutputTrace "<----- GetDestination"
End Function

 

Dieser Ansatz ist maximal flexibel. Du kannst mit fast keinem Aufwand die PLZ Bereiche beliebig erweitern.

 

Die Funktion hat wie Du siehst auch einige Trace Ausgaben, d.h. man kann über das Server Trace auch alles genau nachvollziehen, was dort passiert. Hinweise zum lesen des Server Traces (aus Call Routing Sicht) findest Du hier.

 

 

Ich hänge Dir auch noch meine GSE Regel mit an, in der ich das gerade ausprobiert habe:

 

PLZ.rse

 

Einfach eine neue leere GSE Regel öffnen und dort über das Menü "Datei | Importieren..." diese Datei auswählen.

 

 

Link to comment
Share on other sites


Hallo Tom,

ich bin ersteinmal sehr dankbar für die coole Lösung mit AND und für deine Erklärung zu den Operanden. Das Skript ist echt klasse und ich werde es morgen Vormittag gleich testen. 🙂

Ich bin erst frisch dabei im Forum und in der Swyx allgemein '22 und bin positiv geflasht  von diesem Forum hier und den Möglichkeiten in der Swyx.

Vielen Dank für die Unterstützung und ich berichte natürlich wie es für uns funktioniert hat.

 

LG

 

Antonio 

Link to comment
Share on other sites


Hallo Antonio,

 

noch eine kleine Anmerkung zu dem "Variable auswerten" Block: Du kannst dort alles rein tun, was Du möchtest. Die einzige Bedingung ist, dass es nach VBScript Syntax insgesamt entweder Wahr (True) oder Falsch (False) ergeben muss.

 

Und für den Fall, dass Du darüber noch nicht selbst hier im Forum gestolpert bist, es gibt eine umfgangreiche Sammlung von Links zu allem was irgendwo online zum Thema Call Routing verfügbar ist. Da lohnt es sich ggf. auch mal in Ruhe durch zu stöbern.

 

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and have taken note of our Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.