Die Klingelstrategie "iQueue" (siehe auch "iQueue auf der STARFACE konfigurieren" und "Auswertung für die iQueue konfigurieren") bietet für externe Anwendungen einen Zugriff auf die Live-Daten, wie auch auf History-Daten. Für die beiden Schnittstellen wird die XML-RPC Technologie genutzt. Die Live-Daten einer iQueue werden über die XML-RPC-Funktion "Queue.getLiveData" aufgerufen, welche einen Eingabeparameter erwartet:
<name>queueName</name> <string>…</string>
Diese Funktion liefert folgende Rückgabewerte:
callersLiveData (LIST) - Dieser Rückgabewert ist eine Liste, die wiederum Maps als Elemente enthält. Jede Map enthält Informationen (Schlüssel -> Wert) über genau einen Anrufer, der sich zu dieser Zeit in der Warteschlange befindet. Die Liste ist nach der Position des Anrufers in der Queue sortiert. Jede Map enthält die folgenden Schlüssel:
Name | Typ | Beschreibung |
---|---|---|
Callerid | String | Die eindeutige ID des Anrufs (z.B.: 995624b0-7385-404d-a658-dc942a1cbfe9) |
CallerNumber | String | Die Telefonnummer des Anrufers |
CallerName | String | Name des Anrufers in der Form "Gewählte Nummer: AnruferName Anrufernummer" (z.B.: 154813: Hans Mustermann 01238756) |
CallerChannel | String | Die eindeutige ID des Anruferkanals (dies ist kein Rufkanal im physischen Sinne!) |
CallerPriority | Int | Priorität des Anrufs |
CallerTime | String | Der Unix-Timestamp des Eintritts in die Warteschlange (z.B.: 1304682789341) |
CallerPosition | Int | Zeigt die aktuelle Position des Anrufers in der Warteschlange an. Die Position kann unter Umständen kurzzeitig von der tatsächlichen Position in der Queue abweichen. Ist der Anruf bereits durchgestellt, ist der Wert des Schlüssels -1. |
CallerState | String | Ein Anruf kann einen von vier Zuständen haben:
|
AgentId | String | Die Login-ID des Agenten, mit dem der Anrufer verbunden ist (z.B.: 0013). Dieser Wert ist für Caller-Status "CALLING" und "WAITING" leer |
AgentName | String | Name des Agenten, mit dem der Anrufer verbunden ist. Dieser Wert ist für Caller-Status "CALLING" und "WAITING" leer. |
agentsLiveData (MAP) - Dieser Rückgabeparameter ist eine Map, die wiederum Maps als Elemente enthält. Schlüssel der Map ist die Login-ID des Agenten. Jede Element-Map enthält Informationen (Schlüssel -> Wert) über einen Agenten:
Name | Typ | Beschreibung |
---|---|---|
AgentId | String | Login-ID des Agenten |
AgentName | String | Name des Agenten |
AgentGroupState | String | Zeigt an, ob der Agent momentan in der Gruppe angemeldet ist oder nicht. Mögliche Werte sind:
|
AgentUserState | String | Zeigt den Benutzer-Status eines Agenten an. Mögliche Werte sind:
|
AgentPhoneState | String | Zeigt die telefonische Erreichbarkeit (Status) eines Agenten:
|
History Schnittstelle
Die historischen Daten einer iQueue werden über die XML-RPC-Funktion "Queue.getHistoryData" aufgerufen. Der Eingabeparameter hierfür ist ein "struct" mit drei Wertangaben:
Name | Typ | Beschreibung |
---|---|---|
queueName | String | Name der gewünschten iQueue-Gruppe |
from | dateTime.iso8601 | Beginn der Zeitspanne (muss einen XML-RPC konformen Zeit-Wert enthalten) |
to | dateTime.iso8601 | Ende der Zeitspanne (muss einen XML-RPC konformen Zeit-Wert enthalten) |
Diese Funktion hat einen Rückgabewert:
queueHistoryData (LIST) - Die Elemente der Liste sind Maps und jede Map enthält Informationen über genau einen Anruf. Die Liste ist nach dem Timestamp der Anrufe sortiert. Jedes Element der Liste enthält die folgenden Schlüssel:
Name | Typ | Beschreibung |
---|---|---|
callId | String | ID des Calls in der DB beginnend mit 1. |
callStepId | Int | Fügt mehrere Einträge verschiedener User zusammen, wenn sie zu einem Call gehören. |
callLegUUID | String | Eindeutige ID des CallLegs |
agentId | String | Login des Agenten der den Ruf angenommen hat / Leeres Feld = Nicht angenommener Ruf |
cdrAccountId | Int | Account ID des Users dem der Ruflisteneintrag gehört. |
callerAccountId | Int | Account ID des Anrufers, falls es ein interner User war, sonst leer. |
calledAccountId | Int | Account ID des Angerufenen, falls es ein interner User war, sonst leer. |
calledCallerId | String | Callerid wie sie auf dem Telefon angezeigt wird. |
startTime | String | Startzeitpunkt des Calls als Unix Timestamp |
ringingtime | String | Startzeitpunkt des Klingelns beim Agenten des Calls als Unix Timestamp |
linktime | String | Vebunden mit dem Agenten als Unix Timestamp |
callresulttime | String | Der Anruf wurde beendet als Unix Timestamp |
callresult | String | Das Ergebnis des Callabschnitts. |
callResultCauseBy | Int | Accountid des Users der das Ergebnis ausgelöst hat. |
lineid | Int | Die verwendete Leitung |
lineName | String | Name der verwendeten Leitung |
callbacknumber | String | Die Rückrufnummer des Gegenparts zu dem dem der Ruflisteneintrag gehört |
answeredelswere | String | Nur gefüllt, wenn der Anruf von jemand anderem beantwortet wurde |
incoming | Boolean | True für einen eingegangen Anruf |
answered | Boolean | True für einen beantworteten Anruf |
hasvoicemail | Boolean | True falls eine Voicemail aufgezeichnen wurde. |
hasmonitor | Boolean | True für eine Aufzeichnung des Gesprächs |
callbacknumberextern | Boolean | True falls die Rückrufnummer eine externe Nummer ist |
Beispiel
Per Post Methode:
http://IP-ADRESSE/xml-rpc?de.vertico.starface.auth=$LoginID:SHA512($LoginID*SHA512($Passwort))
Das Passwort wird im ersten Schritt mit SHA512 gehasht. Danach wird dieser Hash nochmals mit der LoginID als Präfix und dem Trennzeichen * erneut gehasht. Für einen Benutzer mit den folgenden Eckdaten:
LoginID = 0001
Passwort = starface
IP-Adresse der Starface = 192.168.0.100
ergibt sich als Aufruf-URL für XML-RPC:
http://192.168.0.100/xml-rpc?de.vertico.starface.auth=0001:5273503e607e5b24eeb48a3f71c53eb50df6b6622839ecd7149e248893f627d05d8d4af88cf36b3d7d5cd5d1d559dfa1c10404067d8c0f37a138c6546dad7ef7
Der Body würde dann z.B. so aussehen:
<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>Queue.getHistoryData</methodName> <params> <param> <value> <struct> <member> <name>queueName</name> <value> <string>testIq</string> </value> </member> <member> <name>from</name> <value> <dateTime.iso8601>20150701T12:59:05</dateTime.iso8601> </value> </member> <member> <name>to</name> <value> <dateTime.iso8601>20160701T12:59:05</dateTime.iso8601> </value> </member> </struct> </value> </param> </params> </methodCall>