• 2 Der Grafische Skript Editor • Variablen und Systemfunktionen
2.5 Variablen und Systemfunktionen
Als grundlegend neue Eigenschaft gegenüber dem Regel-Assistenten des Call Routing Managers besitzt der Grafische Skript Editor die Möglichkeit, Variablen und Systemfunktionen zu verwenden. Ihr Inhalt wird erst während des Skriptablaufes festgelegt und gilt auch nur während dieses Ablaufes (z.B. Zeitpunkt des Anrufes). Mit Hilfe dieser Funktionen kann man Entscheidungen auf Grund aktueller Informationen treffen oder aktuelle Informationen weiterleiten.
Es wird zwischen benutzerdefinierten Variablen und Systemfunktionen unterschieden.
Benutzerdefinierte Variablen
Mit dem Block „Variable setzen“ können Sie benutzerdefinierte Variablen festlegen.
* 
Der Name einer Variable darf die Zeichen A-Z, a-z, 0-9 und _ (Unterstrich) enthalten. Der Variablenname darf nur mit einem Buchstaben beginnen.
 
Eine Variable kann eine Zeichenfolge (String) enthalten oder einen numerischen Wert. Der Inhalt einer Variable wird von Ihnen festgelegt, wobei Sie Systemfunktionen verwenden können. Außerdem kann eine Variable ein Ausdruck aus bereits bestehenden Variablen oder Systemfunktionen sein.
Alternativ kann der Anrufer während eines Skriptablaufes eine Eingabe machen, die in einer Variable abgelegt wird (z.B. in den Blöcken „DTMF-Zeichen empfangen“ oder „DTMF-Zeichenfolge empfangen“).
Bereits definierte Variablen können Sie immer mit dem Symbol auflisten und verwenden. Die Variablen können zur Auswertung herangezogen werden, wie z.B. bei den Blöcken „Variable auswerten“ oder „Ansagenauswahl“, oder bei den Blöcken „Voice Box“, „Zeichenfolge ansagen“, „Durchstellen“, „Schleife“, „FollowMe“ und „E-Mail versenden“ usw. verwandt werden.
* 
Es darf kein Variablenname verwendet werden, der identisch mit dem Namen einer Systemfunktion ist.
 
Verwendung von Variablen
Möchten Sie in einem Skript eine Variable oder Systemfunktion verwenden, so beginnen Sie die Eingabe in diesem Fenster mit einem Gleichheitszeichen (=). Damit wird für den Grafischen Skript Editor festgelegt, dass der folgende Text ein Ausdruck ist, der aus einzelnen Zeichenketten und Variablen zusammengesetzt wird. Dieser Ausdruck wird dann zur Laufzeit von dem Grafischen Skript Editor ausgewertet. Steht zu Beginn des Eingabefensters kein Gleichheitszeichen (=), so wird der Inhalt des Eingabefeldes von dem Grafischen Skript Editor lediglich als Zeichenkette interpretiert.
Beispiel:
Sie möchten einen Anruf an eine Nummer weiterleiten, die sich rechnerisch aus der angerufenen Nummer (CalledNumber()) ergibt.
Öffnen Sie hierzu die Seite „Eigenschaften von Durchstellen“ des Blocks „Durchstellen“. Geben Sie nun in das Feld „Anruf durchstellen für xx Sekunden zu“ den Ausdruck
=CalledNumber() + 100
ein, so wird der Anrufer bei Anwahl der Nummer ’234’ weitergeleitet an die Nummer ’334’.
* 
Geben Sie hier fälschlicherweise lediglich „CalledNumber() + 100“ ein (ohne Gleichheitszeichen =), so führt dies zu einer Fehlverbindung.
 
Variable in Ausdrücken auswerten
Möchten Sie eine Variable oder Systemfunktion auswerten (z.B. in den Blöcken „Variable auswerten“ oder „Ansagenauswahl“) können Sie eine Variable mit einem Ausdruck vergleichen.
Dieser Ausdruck kann seinerseits sowohl alle benutzerdefinierten Variablen dieses Skripts als auch alle Systemfunktionen beinhalten. Die hier verwendeten Ausdrücke erstellen Sie in der Syntax von Visual Basic Script:
*Eine Variable kann sowohl eine Zeichenfolge (“3“) als auch einen numerischen Wert (3) darstellen.
*Die Verkettung von Variablen ist möglich.
Der Ausdruck
="Anruf von der Nummer" & CallerNumber()
ergibt während der Rufbehandlung eines Rufes von der Rufnummer 0123456789
Anruf von der Nummer 0123456789
*Rechenoperationen mit Variablen
Der Ausdruck
a=3*b
wird numerisch ausgewertet, sodass a das Ergebnis der Rechenoperation zugewiesen wird. Voraussetzung hierfür ist, dass b einen numerischen Wert enthält bzw. eine Zeichenfolge, die als numerischer Wert interpretierbar ist.
*Addition
Diese Operation wird in Abhängigkeit des Variablentyps ausgeführt. Der Ausdruck
="3" + CalledNumber()
ergibt bei einer Rufbehandlung mit CalledNumber()=234 eine Zeichenfolge in der Form
"3234".
Der Ausdruck
= 3 + CalledNumber()
ergibt bei einer Rufbehandlung mit CalledNumber()=234 den numerischen Wert
237
* 
Enthält die Variable oder eine Systemfunktion (hier CalledNumber()) eine Zeichenfolge, die nicht als numerischer Wert interpretierbar ist, so erzeugt dieser Ausdruck einen Fehler (type mismatch) und der Anruf wird beendet.
 
*Vergleich
Diese Operation verläuft analog zur Addition. So erzeugt der Ausdruck
"333" > CalledNumber()
einen Vergleich der Zeichenfolgen.
Sind die zu vergleichenden Variablen Zeichenketten, so werden Sie als ASCII-Zeichenfolge verglichen (standard string comparison) und zwar beginnend mit dem ersten Zeichen. Der erste Unterschied (> oder <) bestimmt dann das Ergebnis.
Beispiel:
Es gibt folgende Zeichenketten: "A"=65; "a"=97; "b"=98; "c"=99.
Dann gilt:
"aab" < "aac", da 1.Zeichen a=a; 2.Zeichen a=a; 3.Zeichen b<c
"aab" > "aAc", da 1.Zeichen a=a; 2.Zeichen a>A
Der Ausdruck
333 > CalledNumber()
vergleicht den numerischen Wert. In diesem Fall ist es wieder zwingend, dass die Systemfunktion einen numerischen Wert enthält.
Verwendung von Variablen in E-Mail Texten
Möchten Sie im Text einer versandten E-Mail eine Variable verwenden, so müssen Sie den gesamten Text der E-Mail als Ausdruck definieren.
Beispiel:
Im Text der E-Mail soll später erscheinen:
Sie erhielten um <CurTime> Uhr einen Anruf von der Rufnummer <IpPbx.CallingNumber>.
Es wurde versucht den Anruf an <Vertretung> durchzustellen.
Viele Gruesse Ihr SwyxServer.
Hierbei ist „Vertretung“ eine benutzerdefinierte Variable, die während des Skriptablaufes festgelegt wird (z.B. eine von dem Anrufer über DTMF eingegebene Nummer oder je nach Uhrzeit des Anrufs wird ein anderer Vertreter festgelegt).
Im Block „E-Mail versenden“ muss in diesem Falle im Feld „Text“ folgender Inhalt stehen:
= "Sie erhielten um " & CurTime() & " Uhr einen Anruf von der Rufnummer "_
& IpPbx.CallingNumber & "." & vbLF _
& "Es wurde versucht den Anruf an " & Vertretung & " durchzustellen." & vbLF _
& "Viele Gruesse Ihr SwyxServer."
* 
Achten Sie darauf, dass zwischen „vbLF“ und dem Unterstrich ein Leerzeichen gesetzt sein muss.
 
Verwenden Sie hierbei den Unterstrich ( _ ) als letztes Zeichen der Zeile in der Bearbeitung des Ausdrucks für alle Zeilen bis auf die letzte und vbLF (Visual Basic Line Feed) als Zeichen für den Zeilenumbruch im E-Mailtext.
Systemfunktionen
SwyxWare stellt aktuelle Informationen über den gerade eingegangenen Anruf für die Bearbeitung durch ein Skript zur Verfügung. Diese aktuellen Informationen können z.B.
*einer Variable zugewiesen werden, siehe 2.6.6.1 Variable setzen,
*mit einer Variable verglichen werden, siehe Variable in Ausdrücken auswerten oder siehe auch 2.6.6.2 Variable auswerten oder 2.6.6.4 Ansagenauswahl,
*in den Text einer E-Mail eingefügt werden, siehe Verwendung von Variablen in E-Mail Texten oder 2.6.5.10 E-Mail versenden, oder
* 
Beachten Sie bei der Verwendung von Systemfunktionen, dass diese nur in Ausdrücken auftreten, die der oben angeführten Syntax unterliegen.
 
Als Systemfunktionen stehen zur Verfügung:
Name
Erläuterung
IpPbx.Away
Status „Abwesend“ einfügen oder festlegen
IpPbx.CallingName
Name des Anrufers einfügen oder festlegen
IpPbx.CallingNumber
Nummer des Anrufers einfügen oder festlegen
IpPbx.DoNotDisturb
Status „Ruhe vor dem Telefon“ einfügen oder festlegen
IpPbx.OneWayConference
Modus für einseitige Konferenz einfügen
IpPbx.SecondaryCallingNumber
Zweitrufnummer einfügen
IpPbx.UserFreeStatusText
Statustext des Benutzers einfügen oder festlegen
CallDuration()
Länge des Anrufs in Sekunden
CalledNumber()
Angerufene Nummer einfügen
CallID()
Nummer für die eindeutige Identifizierung dieses Anrufes. Diese Identifikationsnummer wird auch in den Einzelverbindungsinformationen (CDRs) genutzt.
CallStart()
Startzeitpunkt des Anrufs im Format hh:mm:ss
CurDate()
aktuelles Datum im Format tt.mm.jjjj
CurDateTime()
Uhrzeit und Datum des Anrufbeginns im Format hh:mm:ss tt.mm.jjjj
CurDay()
aktueller Tag (mit führender Null) im Format tt
CurDayOfWeek()
Wochentag des Anrufbeginns im Format z.B. „Montag“
CurHour()
aktuelle Stunde (mit führender Null) im Format hh
CurMinute()
aktuelle Minuten (mit führender Null) im Format mm
CurMonth()
aktueller Monat (mit führender Null) im Format mm
CurSecond()
aktuelle Sekunden (mit führender Null) im Format ss
CurTime()
aktuelle Uhrzeit im Format hh:mm:ss
CurYear()
aktuelles Jahr (jjjj)
ExternalCall()
Externer Anruf
InternalCall()
Interner Anruf
IsAway()
Status des Benutzers ist „Abwesend“
IsBusy()
Benutzer spricht gerade
IsDoNotDisturb()
Status des Benutzers ist „Ruhe vor dem Telefon“
IsLoggedIn()
Benutzer ist an einem Endgerät angemeldet
IsOutlookBusy()
Kalenderstatus des Benutzers ist „Gebucht“
IsOutOfOffice()
Kalenderstatus des Benutzers ist „Abwesend“
LastCause()
Enthält Information über die letzte Weiterleitungsaktion (Durchstellen, Schleife, FollowMe) innerhalb der aktuellen Rufbehandlung. Folgende Werte sind möglich:
*PBXSuccess (0)
*PBXFailure (1)
*PBXTimeout (2)
*PBXCallTermNormalCallClearing (3)
*PBXCallTermDestinationBusy (4)
*PBXCallTermReject (5)
*PBXCallTermWrongNumber (12)
*PBXCallTermConnectToCallerImpossible (13)
*PBXCallTermDestinationUnreachable (14)
*PBXNoChannelAvailable (18)
*PBXNetworkCongestion (19)
*PBXIncompatibleDestination (20)
*PBXOriginatorDisconnected (22)
NotLoggedIn()
Benutzer ist abgemeldet
OneWayConferenceSuffix()
Liefert den Anhang zurück, der für einseitige Konferenzen an die Zielnummer angehängt wird
PIN()
Persönliche Identifikationsnummer des Angerufenen.
PostDialingDigits()
Nachwahlziffer einfügen
RecordLen()
Länge der aufgenommenen Sprachnachricht in Sekunden
VoicemailOriginatorEMailAdress()
Auf dem Server konfigurierte E-Mail-Adresse des Absenders der Sprachnachricht einfügen.