Im ersten Teil unserer Logfile-Analyse Artikelreihe haben wir uns auf die einzelnen samwin Komponenten, deren Aufgaben, und grob auf die Logfiles konzentriert. Im heutigen zweiten Teil wollen wir uns eine dieser Komponenten, nämlich den samwin Core Service, näher anschauen und im Anschluss, die Logfiles näher analysieren.
Zur Analyse nutzen wir gVIM – die wichtigsten Shortcut gibt es übrigens am Ende des Artikels.
Der samwin Core Service
Der samwin Core Service ist das Herzstück des samwin Contact Centers und bildet die zentrale Schnittstelle für viele Dienste und die Client-Applikationen. Damit wir die einzelnen Abläufe und Aufgaben besser verstehen können, werfen wir nochmal einen kurzen Blick auf die Hauptfunktionen:
- SIP / Call flow Handling
- Computer Telephony Integration (CTI)
- XMPP
Darüber hinaus übernimmt der samwin Core Service die Benachrichtigung im Fehlerfall (System Alerts) sowie das Schreiben und Verwalten der Reporting-Rohdaten. Sollte es ein Problem mit den Reporting-Daten geben, sollte Letzteres im Hinterkopf behalten werden, da auch im Core Service Logfile dazu wertvolle Informationen enthalten sein könnten.
Ein Beispiel zur Anrufverfolgung
Das SIP / Call flow Handling ist ohne Frage die wichtigste Aufgabe des samwin Core Services. Jeder an- und abgehende Anruf wird vom samwin Core Service verarbeitet und entsprechend der Konfiguration geroutet.
Sollten Anrufe nicht wie erwartet zugestellt werden, liegt in den meisten Fällen eine Fehlkonfiguration vor. Die erste Anlaufstelle in einem solchen Fall ist immer das samwin Core Service Logfile. Es enthält wertvolle Informationen zur SIP-Kommunikation und zum internen Routing des betroffenen Anrufs.
Und genau jenes wollen wir uns heute näher anschauen. Die Nebenstelle 621 ruft die 897020 (samwin) um 13:22 an – als Fehlerbeschreibung erhalten wir die Information, dass der Anruf einfach aufgelegt wurde. Den genauen Verlauf des Anruf gilt es aus dem Logfile herauszulesen.
Wir suchen uns zuerst anhand des Datums bzw. der Uhrzeit das passende samwin Core Service Logfile und öffnen es mit dem bereits erwähnten Editor gVIM.
Um nun zum Zeitraum des Anrufs zu gelangen, können wir entweder scrollen, oder z.B. nach der Rufnummer 621 suchen. Zum Suchen in gVIM, einmal zum fokussieren in das gVIM Fenster klicken und auf der Tastatur „/“ (Schrägstrich) drücken. Im unteren Teil von gVIM erscheint auch das Slash und wir geben unseren Suchbegriff, in unserem Fall die 730, ein, und drücken ENTER zum Suchen. Der Suchbegriff ist jetzt in der Zeile, in der er vorkommt, markiert.
Die Suche führt uns zur ersten SIP-Nachricht, dem INVITE. Ab hier können wir entweder manuell durch die weiteren Einträge scrollen, oder verfolgen die SIP Kommunikation anhand der darin enthaltenen „Call-ID“. Dazu einfach die Call-ID wieder mit „/“ suchen oder noch einfacher, in die Call-ID klicken, um den Courser dort zu platzieren, und danach die Stern-Taste drücken. gVIM hat jetzt die Call-ID als Suchbegriff übernommen.
Um zur nächsten Zeile zu springen, in der der Suchbegriff vorkommt, einfach die „n“ Taste drücken. Hat man die letzte Zeile im Log erreicht, startet gVIM wieder von vorne mit der Suche. Tipp: Um von unten nach oben zu suchen, SHIFT+n statt „n“ nutzen.
In unserem Beispiel scrollen (oder suchen) wir bis wir die „SIP/2.0 180 Ringing“ Nachricht erreichen.
Ab hier lässt sich nämlich die samwin interne Call ID ablesen – hier die „2“ (je länger samwin läuft, desto höher der Wert). Und genau diese interne ID eignet sich hervorragend, um den gesamten Verlauf im Logfile chronologisch zu verfolgen.
Dazu wieder einen neuen Suchbegriff starten (mit „/“) und folgendes eingeben:
Call – 2.*
Während der Eingabe das markierte Ergebnis verfolgen, da es ab dem „Call“ wichtig ist, die genaue Anzahl an „Spaces“ (Abständen) einzugeben (nach „Call“ sind es 2x, nach dem Bindestrich 6x Space), da die Suche sonst nicht funktioniert. „Punkt Stern“ am Ende bewirken, dass nicht nur der eingegebene Suchbegriff markiert wird, sondern auch der Rest der Zeile (Geschmackssache).
Verfolgt man nun die Suchergebnisse (mit der „n“ Taste), kann man ganz einfach den internen Verlauf verfolgen. Gleich zu Anfang eines Anrufs begnen wir der Routing-Table (siehe Screenshot oben, ROUTING -> MATCH oder NOMATCH). Hier ist dann auch gleich ersichtlich, in welchen Skill (IVR oder Hunt Group) der Anruf geleitet worden ist. In unserem Fall in den Skill „C1 Service“ (die hier abgebildete ID 4 entspricht der ID, die auch im samwin Manager ersichtlich ist):
Call – 2 – Set Queue to Skill ‚C1_Service‘ (id=4), QueueAux 4
Wir verfolgen nun den Anruf weiter („n“ Taste) und gelangen zu mehreren wichtigen Punkten, die ich aus dem Logfile herauskopieren und einzeln kommentieren werde:
2020-11-04 13:23:06.188 – Call – 2 – Assigned OpExt 12 (aC1_ThomasE) – User 14 (C1_ThomasE)
Der Anruf wurde dem Agenten „C1_ThomasE“ zugeteilt. Der Agent war zu diesem Zeitpunkt im Skill angemeldet und zumindest nicht in einem grauen Status. Ansonsten wäre der Anruf nicht diesem Agenten zugeteilt worden.
2020-11-04 13:23:06.192 – Call – 2 – QE_TO_OE_TRANSFER – received ready response
Eine relativ wichtige Zeile, die aussagt, dass die Client-Applikation auf die Anfrage des Servers geantwortet hat und (technisch) bereit ist, den Anruf annzunehmen. Fehlt dieser Eintrag, dürfte ein Fehler mit dem Client vorliegen.
2020-11-04 13:23:12.861 – Call – 2 – OE_CALL_ACCEPTED_SOFTPHONE – answer or open item 2
Der Anruf wurde vom Agenten angenommen. Zumindest handelt es sich hier um den Befehl, der vom Core Service registriert wurde. Ob die Annahme erfolgreich war, ergibt sich aus den folgenden RTP-Verbindungsversuchen.
2020-11-04 13:23:12.923 – Call – 2 – MediaBridge – starting forwarder on call 0x2 and softphone connection 4
Die RTP-Verbindung (Audio) wurde aufgebaut und die Verbindung des ankommenden Anrufs (von der Anlage zu samwin) und die Verbindung von samwin zur Client-Applikation (bei Softphone) wird zusammengeschaltet (damit sich die beiden Teilnehmer hören können). Ab hier sollte die Audio-Verbindung stehen und der Anruf ist somit verbunden.
Tipp: Der Verbindungsaufbau bei einem gekoppelten Apparat und anderen Setups, wird in unserer Dokumentation „Planning voice integration“ im Detail beschrieben.
2020-11-04 13:23:29.841 – Call – 2 – OE_CALL_CONNECTED_SOFTPHONE – caller idle
Der Anruf wurde vom Anrufer getrennt. Scrollen wir etwas nach oben, sehen wir die „BYE“ SIP-Nachricht, die von der Anlage zu samwin übermittelt wurde. Wird der Anruf von samwin getrennt, sendet der samwin Server die „BYE“ SIP-Nachricht.
Tipp: Bei den BYE SIP-Nachrichten ist meist ein „Q-Code“ beigefügt, der uns ggf. weitere Informationen geben kann, weshalb ein Anruf aufgelegt wurde. Beispiel: q.850;cause=16 würde „Normal call clearing“ bedeuten = der Anruf wurde „normal“ beendet bzw. aufgelegt. Eine Übersicht der Q-Codes gibt es u.A. auf dieser Webseite: https://www.startelecom.ca/resources/q-850-cause-codes/
Die restlichen Log-Einträge betreffen nur noch die abschließenden internen Vorgänge, die in unserem Fall nicht mehr relevant sind.
Fazit
Die Analyse ist somit abgeschlossen und wir konnten feststellen, dass der Anruf vom Anrufer selbst aufgelegt/beendet wurde. Es kann sich hierbei auch um eine Störung seitens der Telefonanlage oder des Mobilfunk-Providers handeln; das Problem konnte damit zumindest eingegrenzt werden. Mit der oben beschriebenen Vorgehensweise lassen sich aber auch andere (Konfigurations)Fehler leicht entdecken. Zum Beispiel kann einfach verfolgt werden, in welchen Skill ein Anruf geleitet wurde und auch der Grund (z.B. Overflow) auf einfachste Weise bestimmt werden. Bei sonstigen Problemen können auch die SIP-Nachrichten über das samwin Core Service Logfile näher analysiert werden, ohne eigene Traces auf der Telefonanlage ziehen zu müssen.
Und zu guter Letzt die versprochene Übersicht der wichtigsten gVIM Befehle:
/ … Suchen
n … Suche nach unten
N … Suche nach oben
gg … An den Anfang der Datei springen
G … An das Ende der Datei springen
:%s/[begriff]/d … Alle Zeilen mit dem Begriff entfernen (wichtig ist der Doppelpunkt am Anfang, der eingegeben werden muss)
Weitere Befehle können zum Beispiel unter diesem Link gefunden werden: https://www.ubuntupit.com/100-useful-vim-commands-that-youll-need-every-day/
Comments ( 0 )