Mitarbeiterverfügbarkeits-API
Die Agent Availability API ist dazu gedacht, Servicenummerninhabern einen Low-Level-Zugang zu Mitarbeiterstatusdaten für benutzerdefinierte Implementierungen in ihrer eigenen Software zu geben.
Die API wird unter anderem verwendet, um die Verfügbarkeit von telefonischen Beratern in Echtzeit online anzuzeigen.
Eine Übersicht der verfügbaren Aufrufe und der zu erwartenden Ergebnisse finden Sie in unserer API-Dokumentation unten.
Achtung: Diese Dokumentation richtet sich an Programmierer mit Erfahrung in PHP, Python oder anderen Programmiersprachen, der Arbeit mit APIs sowie dem Abrufen und Verarbeiten von XML-Daten.
Übersicht
Die Agent Availability API soll Servicenummerninhabern einen Low-Level-Zugang zu Agentenstatusdaten für benutzerdefinierte Implementierungen in ihrer eigenen Software geben.
Unten finden Sie eine Liste der verfügbaren Aufrufe.
Aufrufe
ivr.getAgentAvail
Gibt an, ob eine bestimmte Durchwahl besetzt ist.
Url: http://api1.belfabriek.nl/xml/agent/xml.asp
Eingabe:
- accountPin - Kundenkonto-PIN
- extensionId - Durchwahl-ID (auch als Mitarbeiter-ID bezeichnet)
Ausgabe:
- available - ob der Agent aktiviert ist (0 = nein, 1 = ja)
- availReason - Zusätzliche Informationen über den Status des Agenten (z.B. “paused” oder “handling”)
- extension - die aktuelle Telefonnummer, mit der diese Durchwahl verbunden ist
general.getExtensionStatus
Gibt den aktuellen Status eines Agenten zurück.
Url: http://api1.belfabriek.nl/xml/agent/xml.asp
Eingabe:
- supId - Supervisor-ID
- manId - Manager-ID
- custId - Konto-ID
- extId - Durchwahl-ID
Ausgabe:
- status
- calling - Verbindung wird hergestellt
- called - Verbindung hergestellt
- wrapup - Verbindung wird abgeschlossen
- idle
Wie man diese Aufrufe verwendet
Diese Aufrufe werden als HTML-Post-Aufrufe unter Verwendung von XML-RPC-Paketen durchgeführt. In den untenstehenden Beispielen zeigen wir Ihnen, wie das geht, einschließlich Beispielcode.
HTTP-Post über XML-RPC
Der Kunde sendet ein XML-RPC-Paket an die angegebene URL. Der Funktionsname muss angegeben werden.
Beispiel, wie eine XML-RPC-Nachricht an unseren XML-RPC-Server
aussieht:<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>functie.naam</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>param1</name>
<value><string>value1</string></value>
</member>
<member>
<name>param2</name>
<value><string>value2</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
Onze XML RPC-server moet altijd alles in het juiste XML
RPC-formaat ontvangen.
Zusätzlich erwartet der XML RPC-Server, dass alle Parameter als Strings empfangen werden.
Ein Beispiel für eine XML RPC-Antwort von unserem XML RPC-Server, wie Sie sie
erhalten würden:<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>param1</name>
<value><string>value1</string></value>
</member>
<member>
<name>param2</name>
<value><string>value2</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
## Beispiele
In diesem Abschnitt zeigen wir, wie diese Aufrufe mit PHP und curl verwendet werden. Diese Aufrufe können in ähnlicher Weise in jeder anderen Programmiersprache durchgeführt werden.
ivr.getAgentAvail
Das folgende ist ein Beispiel für einen gültigen ivr.getAgentAvail-Aufruf in
PHP:<?php
$accountPin = 'xxxxx'; //replace value with your own value
$extensionId = 'xxxxx'; //replace value with your own value
$url = 'http://api1.belfabriek.nl/xml/agent/xml.asp';
$xml_data = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
<methodCall>
<methodName>ivr.getAgentAvail</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>accountCode</name>
<value><string>$accountPin</string></value>
</member>
<member>
<name>extensionId</name>
<value><string>$extension</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_PORT , 80);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $xml_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Transfer-Encoding: binary");
header("Content-Type: text/xml charset=UTF-8");
echo $data;
die();
?>
Quellensprache: nl Zielsprache: de
Die Antwort würde ungefähr so aussehen:<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>available</name>
<value>
<i4>0</i4>
</value>
</member>
<member>
<name>availReason</name>
<value>
<string>-</string>
</value>
</member>
<member>
<name>extension</name>
<value>
<string>31201234567</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Der Wert unter<name>extension</name>
:<value>
<string>31201234567</string>
</value>
Source language: nl Target language: de
ist die Zielnummer
general.getExtensionStatus
Das Folgende ist ein Beispiel für einen gültigen
general.getExtensionStatus-Aufruf in PHP:<?php
ini_set('display_errors', 'On');
$supId = 'x'; //replace value with your own value
$manId = 'x'; //replace value with your own value
$customerId = 'xxxxx'; //replace value with your own value
$extId = 'xxxxx'; //replace value with your own value
$url = 'http://api1.belfabriek.nl/xml/agent/xml.asp';
$xml_data = "<?xml version='1.0'?>
<methodCall>
<methodName>general.getExtensionStatus</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>supId</name>
<value><string>$supId</string></value>
</member>
<member>
<name>manId</name>
<value><string>$manId</string></value>
</member>
<member>
<name>accountCode</name>
<value><string>$customerId</string></value>
</member>
<member>
<name>extensionId</name>
<value><string>$extId</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_PORT , 80);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $xml_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Transfer-Encoding: binary");
header("Content-Type: text/xml charset=UTF-8");
echo $data;
die();
?>
Quellensprache: nl Zielsprache: de
Die Antwort würde ungefähr so aussehen:<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>Available</name>
<value>
<string>called</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
## So verwenden Sie diese Anrufe
Wir können diese beiden Anrufe zusammen verwenden, um den genauen aktuellen Status einer Erweiterung oder eines Agenten zu erhalten.
Wir beginnen mit dem ivr.getAgentAvail-Anruf. Die Antwort „availReason“ wird uns alles sagen, was wir wissen müssen, wenn die Erweiterung nicht verfügbar ist (verfügbar = 0).
Mögliche availReasons sind „pause“ (der Agent macht eine Pause und nimmt derzeit keine Anrufe entgegen) oder „-“ (der Agent ist derzeit nicht eingeloggt oder anderweitig nicht verfügbar).
Wenn die Erweiterung verfügbar ist (verfügbar = 1), möchten wir mit dem general.getExtensionStatus-Anruf weiter nachforschen.
Wenn der Status entweder „calling“ oder „called“ ist, wissen wir, dass der Agent in einem Anruf ist. Andernfalls sind sie für eingehende Anrufe verfügbar oder werden es bald sein.
Wie Sie mit verschiedenen Status umgehen möchten, hängt stark von Ihrer genauen Implementierung und deren Anforderungen ab.