Swyx Knowledgebase

HOWTO: Eigener VBScript Code - Auf Feiertag überprüfen (kb2285)

 

Die Information in diesem Artikel betrifft die folgenden Produkte:

  • Grafischer Skript Editor v4.00
  • SwyxIt! v4.00
  • SwyxWare v4.00

[ Zusammenfassung | Information | Referenzen ]


Zusammenfassung

Ab der SwyxWare v4.00 ist es möglich eigenen Skript Code in den Grafischen Skript Editor (GSE) einzufügen. Die Funktionalität des GSE steht Ihnen nur zur Verfügung, wenn Sie das Option Pack - Extended Call Routing lizensiert haben.

Dieser Artikel beschreibt wie man mit Hilfe einer Textdatei welche Feiertage definiert eine Feiertags Überprüfung realisiert.

Hinweis: eine aktualisierte Version dieses Skriptes, welche neben reinen Tagen auch Uhrzeiten und Zeiträume in der Feiertags Definitionsdatei zuläßt, ist auf der öffentlichen Swyx Forum Webseite www.swyx-forum.com erhältlich.

Weitere Artikel dieser Serie:


Information

Installation der Beispielregel

Laden Sie die Beispielregel über den unten angegebenen Link herunter und kopieren Sie die Dateien in das Verzeichnis c:\gse_demo Um die Datei BankHoliday.rse in den Call Routing Manager (CRM) bzw. Grafischen Skript Editor (GSE) zu laden, gehen Sie bitte wie folgt vor:

 

  • Starten Sie den Call Routing Manager.
  • Klicken Sie auf Neu...
  • Wählen Sie den Grafischen Skript Editor und klicken Sie auf Ok.
  • Öffnen Sie das Menü Datei | Impotieren... im GSE.
  • Wählen Sie die Datei BankHoliday.rse. Die Regel wird nun importiert und sieht wie folgt aus:

    Graphischer Skript Editor
    Graphischer Skript Editor

  • Speichern Sie die Regel über das Menü Datei | Speichern.
  • Schliessen Sie den GSE.
  • Kopieren Sie nun die Datei BankHoliday.txt in das globale Skript Verzeichnis C:\Programme\SwyxWare\Share\Data\PhoneClient\Scripts Das Skript erwartet die Datei an diesem Ort, damit alle Benutzer problemlos mit ihren eigenen Skripten darauf zugreifen können. Die Datei enthält die Daten aller gesetzlichen Feiertage in Deutschland die für alle Bundesländer gemeinsam gelten bis Ende 2005.
  • Aktivieren Sie die neue Regel durch Verschieben in die rechte Liste im CRM.

    Call Routing Manager
    Call Routing Manager

 

Wie das Skript funktioniert

Eigener Skriptcode kann nur in dem Regel Start Block hinzugefügt werden. Alle Konstanten, Variablen und Funktionen die Sie hier definieren stehen Ihnen in allen Blöcken dieses Skriptes zur Verfügung, z.B. im Variable auswerten Block. Bitte beachten Sie, dass der GSE dem finalen Skript das VBScript Statement option explicit hinzufügt. Dies hat zur Folge, dass Sie alle Variablen innerhalb des Skriptes vor der Benutzung definieren müssen.

Eigenschaften der Start Regel
Eigenschaften der Start Regel

Wie Sie in diesem Beispiel sehen können, wird innerhalb des Regel Start Blocks eine Funktion definiert, welche später innerhalb eines Variable auswerten aufgerufen wird.

Eigenschaften des
Eigenschaften des "Auswerten" Blocks

Diese Funktion IsBankHoliday() ermittelt, ob das übergebene Datum in einer Datei BankHoliday.txt definiert ist, und liefert entsprechend Wahr oder Falsch zurück. Und so sieht der Skriptcode aus:

 

  1. ' FileOpen iomode Values
  2. Const fsoForReading = 1
  3. Const fsoForWriting = 2
  4. Const fsoForAppending = 8
  5.  
  6. ' Bankholiday Filename
  7. Const sBHFilename = "bankholiday.txt"
  8.  
  9. Function IsBankHoliday(ByVal vDate)
  10.  
  11.     Dim wsh, fso, file
  12.     Dim sDir, sFile, sLine
  13.     Dim bReturn, nPos
  14.  
  15.     bReturn = False
  16.  
  17.     ' get share path by extracting it from user folder
  18.     sDir = PBXUser.DataFolder
  19.     nPos = InStrRev(sDir, "\")
  20.     sDir = Left(sDir, nPos - 1)
  21.     nPos = InStrRev(sDir, "\")
  22.     sDir = Left(sDir, nPos)
  23.  
  24.     ' Build file name.
  25.     sFile = sDir & "Data\PhoneClient\Scripts\" & _
  26.       sBHFilename
  27.  
  28.     ' Create FileSystemObejct
  29.     fso = CreateObject("Scripting.FileSystemObject")
  30.  
  31.     ' Open text file
  32.     file = fso.OpenTextFile(sFile, fsoForReading)
  33.  
  34.     Do While (Not (file.AtEndOfStream)) And (Not bReturn)
  35.         sLine = file.ReadLine
  36.         If IsDate(sLine) Then
  37.             If DateDiff("d", vDate, CDate(sLine)) = 0 Then
  38.                 bReturn = True
  39.             End If
  40.         End If
  41.     Loop
  42.     file.Close()
  43.  
  44.     file = Nothing
  45.     fso = Nothing
  46.  
  47.     IsBankHoliday = bReturn
  48.  
  49. End Function

Nachdem Sie diese Regel aktiviert haben wird bei Anrufen die an einem der definierten Feiertage ankommen ein kurzes "Beep" abgespielt. Dies ist natürlich nur ein Platzhalter an dessen Stelle Sie Ihre gewünschten Blöcke setzen können.

Die Definitions Datei

In der Datei BankHoliday.txt werden die Daten für die Feiertage definiert. Hierzu wird pro Zeile ein Datum geschrieben. Das Datums Format muss den gesetzen regionalen Einstellungen entsprechen. Für Deutschland ist dies in der Regel tt.mm.jjjj. 25.12.2002
26.12.2002
01.01.2003
18.04.2003
21.04.2003
01.05.2003
11.05.2003
29.05.2003
09.06.2003
03.10.2003
25.12.2003
...

Bitte beachten Sie, dass diese Datei alle gesetzlichen Feiertage in Deutschland die für alle Bundeländer gemeinsam gelten enthält.

Hinweise

 

  • Alle Callrouting Skripte, und somit auch der eigene Skript Code, werden unter dem SwyxWare Service Account ausgeführt. Achten Sie also bitte darauf, dass dieser Account die nötigen Rechte hat, die Datei/Datenbank an dem gewünschten Ort zu bearbeiten.

  • Das Skript in diesem Beispiel enthält um es übersichtlich zu halten, keine Fehlerbehandlung. Das heisst, wenn z.B. bei dem Zugriff auf die Datei/Datenbank ein Fehler auftritt, wird dieser nicht abgefangen, sondern führt statt dessen dazu, dass das Skript beendet wird, und der Ruf verloren geht. Sollten Sie das Server Tracing für SvrScript auf Info3 gesetzt haben, so wird die originale Fehlermeldung der Microsoft Script Engine dort protokolliert.

    Um eine eigene Fehlerbehandlung einzufügen müssen Sie zunächst die Standard-Fehlerbehandlung der Script Engine ausschalten:

     

    1. On Error Resume Next

     

    Diese Zeile fügen Sie am Besten als erste Zeile in Ihren Funktionen einen. Nun muss nach jedem Aufruf der Potentiell zu einem Fehler führen kann, eine Fehlerabfrage erfolgen:

     

    1. ' Open connection to Database
    2. db.Open sDsn
    3. If Err <> 0 then
    4.     'do something, e.g.:
    5.     FunctionName = False
    6.     Exit Function
    7. End If

     


Referenzen

Informationen anderer Anbieter, die in diesem Artikel zur Verfügung gestellt werden, sollen bei der Suche nach technischen Informationen helfen. Die Inhalte können ohne weitere Ankündigung geändert werden. Swyx garantiert weder für die Güte von Inhalten anderer Anbieter, noch ist Swyx für diese verantwortlich.


Änderungen

Erstellt: 03.12.2002


  • 19.09.2007: Hinweis auf aktualisierte Version des Skriptes auf www.swyx-forum.com hinzugefügt.