Dieses Tutorial zeigt, wie mit dem Modulsystem verarbeitete Rufe an Nutzer oder externe Rufnummern verteilt werden können. In einem Beispielmodul soll ein Ruf zu einer konfigurierten Zielrufnummer vermittelt werden. Falls diese Vermittlung nicht erfolgreich ist, soll zu einem zweiten Ziel vermittelt werden. Das Beispielmodul wird als Typ Standard erstellt, dadurch kann es bei der Konfiguration eine eigene Rufnummer erhalten auf welche es reagiert.

Zur Umsetzung dieses Beispieles werden die Komponenten CallPhoneNumber und GetCaller verwendet. 

Hinweis: In diesem ersten Tutorial wird die Komponente CallPhoneNumber unter dem Aspekt betrachtet, dass Rufe verarbeitet werden, welche noch nicht von einem Modul oder Nutzer angenommen wurden. In einem späteren Tutorial wird auch noch betrachtet, wie ein vom Modulsystem angenommener Anruf mit der gleichen Komponente weiter verarbeitet werden kann.


Beschreibung der verwendeten Komponenten

CallPhoneNumber

Mit dieser Komponente kann aus dem Modulsystem ein Anruf aufgebaut werden. Die wichtigste Eigenschaft bei der Nutzung der Komponente ist die Zielrufnummer, welche unter der Variable Phonenumber to call eingetragen werden muss. Als weitere Werte müssen der Anrufername und seine Nummer vergeben werden, damit der Ruf zuverlässig über die STARFACE geroutet werden kann.

Eigenschaften der Komponente: 

  • Phonenumber to call: Anzurufende Nummer. Bei Rufen zu Teilnehmern kann einfach die interne Nummer (z.B. 20) gewählt werden. Bei Rufen an externe Rufnummern sollte hier die Rufnummer voll-qualifiziert (z.B. 00497211510430) eingetragen werden

  • Caller Name: Hier kann der Anrufername für den Ruf vergeben werden. Damit die volle Funktionalität der STARFACE sichergestellt ist, sollte dieses Feld nicht leer sein.

  • Caller Number: Hier kann die Anrufernummer für den Ruf vergeben werden. Damit die volle Funktionalität der STARFACE sichergestellt ist, sollte dieses Feld nicht leer sein und bei externen Rufen die Rufnummer voll-qualifiziert (z.B. 00497211510430) eingetragen werden

  • Ringing Duration: Dauer des Anrufversuchs. Wenn der Wert unter 1 festgelegt ist, wird als Standardzeit 30 Sekunden verwendet. Mehr als 120 Sekunden macht meist keinen Sinn, da dann der Provider oder der interne Abwurfplatz reagieren.

  • Cancel Channel: Hier kann z.B. ein geparkter Kanal als Variable übergeben werden, welcher auf seine Verfügbarkeit überwacht wird. Wenn der Kanal beendet wurde (z.B. durch Auflegen) wird auch die KomponenteCallPhoneNumber vorzeitig beendet.

Rückgabe der Komponente

  • Hier bekommt man die Rückmeldung, ob der Ruf in der vorgegebenen Zeit angenommen wurde



GetCaller

Mit dieser Komponente können im Modulsystem die Informationen des Anrufers ausgelesen werden. 

Rückgabe der Komponente

Die Komponente gibt insgesamt 6 verschiedene Werte zurück, welche für verschiedenste Einsatzszenarien verwendet werden. In diesem Tutorial konzentrieren wir uns nur auf zwei Werte.

  • Calling account: Account des Nutzers, bei internen Anrufern

  • Caller name: Der Name des Anrufers, falls dieser aufgelöst werden konnte

  • Caller external number: Die Rufnummer des Anrufers, bei internen Mitarbeitern explizit die externe Rufnummer

  • Caller internal number: Die interne Rufnummer des Anrufers; Funktioniert nur bei Anrufen von Nutzern
  • Country code: Ländercode des Anrufers (z.B. de für Deutschland)
  • Anonymous caller: Rückgabe, ob Rufnummer des Anrufers unterdrückt ist
 


Ablaufdiagramm des Beispielmodules

Anleitung zur Erstellung des Beispielmodules


Festlegen der Grundeinstellungen, wie Name und Hersteller. Konfiguration als Modul vom Typ Call-Processing. Activation bei on all incoming calls.
Anlegen eines neuen Reiters namens Einstellungen im Bereich GUI. in diesen Einstellungen können bei der späteren Konfiguration des Modules die Rufziele konfiguriert werden.
Per Drag&Drop können nun zwei Felder vom Typ TextInput erstellt werden. Das Erste bekommt den Namen Zielrufnummer 1, das Zweite den Namen Zielrufnummer 2. Diese Eingabefelder können gleich als Variablen im Module Designer verwendet werden.
Unter dem Bereich Development legen wir nun eine neue Funktion an. Der Name wird automatisch vergeben und kann für dieses Beispiel beibehalten werden.
In unserer ersten Funktion verwenden wir zuerst die KomponenteGetCaller, welche wir bei den Komponenten unter dem Bereich Callfinden.
Im nächsten Schritt fügen wir nun die Komponente CallPhoneNumberhinzu, welche den Ruf an unser erstes Ziel vermitteln soll. Damit die Vermittlung funktioniert, müssen wir die Komponente noch konfigurieren. Zuerst wählen wir bei Phonenumber to call unsereZielrufnummer 1 (GUI_ZIELRUFNUMMER_1) aus. Als Caller Name undCaller number greifen auf die Informationen aus der GetCaller-Komponente zurück. In der Variable Ringing duration können wir nun festlegenm, wie lange der Anrufversuch dauern soll (z.B. 30 Sekunden).
Die Komponente CallPhoneNumber liefert uns in der Variable _success zurück, ob der Anruf vermittelt werden konnte. Diese Variable können wir daher nun mit einer bedingten Anweisung abfragen. Der Module Designer stellt hierfür die Komponente if (unter Basic Components) zur Verfügung. Nun konfigurieren wir diese Komponente so, dass wenn _success nicht erfüllt (IsNotTrue) ist eine alternative Komponente ausgeführt wird. 
Damit Komponenten innerhalb der bedingten ANweisung ausgeführt werden, müssen diese eingerückt werden. Dies kann per Drag&Drop unterhalb der letzten if-Komponente gemacht werden. Hier fügen wir nun noch einmal CallPhoneNumber ein. Desmal wird als Phonenumber to call jedoch die Zielrufnummer 2 (GUI_ZIELRUFNUMMER_2) verwendet.
Zuletzt beenden wir das Modul richtig mit der Komponente exit aus dem Bereich Basic Components. Das Modul soll laut Ablaufdiagramm in beiden Fällen beendet werden, daher wird das exit nicht eingerückt und somit immer ausgeführt.

An diesem Punkt ist das Modul funktionsbereit und kann nun in der Modulkonfiguration, wie jedes andere Modul konfiguriert werden. 

Viel Spass beim Nachbauen.


Verbesserungsmöglichkeiten

 

Das oben gezeigte Beispiel ist minimalistisch und verzichtet komplett auf Debugging-Optionen. Des Weiteren ist nicht definiert, was passiert wenn auch der zweite Vermittlungsversuch scheitert. Im letzten Screenshot seht ihr einige Erweiterungen, welche diese Punkte lösen.