Dostępność Pracownika API
De Agent Availability API ma na celu zapewnienie właścicielom numerów serwisowych niskopoziomowego dostępu do danych o statusie pracowników w celu niestandardowych implementacji w ich własnym oprogramowaniu.
API jest m.in. używane do pokazywania dostępności pracowników telefonicznych konsultantów w czasie rzeczywistym online.
Przegląd dostępnych wywołań i oczekiwanych wyników znajdziesz w naszej dokumentacji API poniżej.
Uwaga: ta dokumentacja jest przeznaczona dla programistów z doświadczeniem w PHP, Pythonie lub innych językach programowania, pracy z API oraz pobieraniu i przetwarzaniu danych XML.
Przegląd
Agent Availability API ma na celu zapewnienie właścicielom numerów serwisowych niskopoziomowego dostępu do statusów agentów w celu niestandardowej implementacji w ich własnym oprogramowaniu.
Poniżej znajduje się lista dostępnych wywołań.
Wywołania
ivr.getAgentAvail
Wskazuje, czy dane rozszerzenie jest zajęte.
Url: http://api1.belfabriek.nl/xml/agent/xml.asp
In:
- accountPin - PIN konta klienta
- extensionId - Identyfikator rozszerzenia (również nazywany Identyfikatorem Pracownika)
Out:
- available - czy agent jest dostępny (0 = nie, 1 = tak)
- availReason - Dodatkowe informacje o statusie agenta (np. “wstrzymany” lub “obsługiwany”)
- extension - aktualny numer telefonu, do którego to rozszerzenie się łączy
general.getExtensionStatus
Zwraca aktualny status agenta.
Url: http://api1.belfabriek.nl/xml/agent/xml.asp
In:
- supId - Identyfikator nadzorcy
- manId - Identyfikator menedżera
- custId - Identyfikator konta
- extId - Identyfikator rozszerzenia
Out:
- status
- calling - łączenie
- called - połączenie nawiązane
- wrapup - połączenie w fazie zakończenia
- idle
Jak używać tych wywołań
Te wywołania są wykonywane jako wywołania HTML Post przy użyciu pakietów XML RPC. W poniższych przykładach pokażemy, jak to zrobić, w tym przykładowy kod.
HTTP Post za pomocą XML RPC
Klient wysyła pakiet XML RPC na określony URL. Nazwa funkcji musi być określona.
Przykład, jak wygląda wiadomość XML RPC do naszego serwera XML
RPC:<?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>Nasz serwer XML RPC powinien zawsze otrzymywać wszystko w
poprawnym formacie XML RPC.
Dodatkowo serwer XML RPC oczekuje, że wszystkie parametry będą przesyłane jako ciągi znaków.
Przykład odpowiedzi XML RPC z naszego serwera XML RPC, jaką byś
otrzymał:<?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>## Przykłady
W tej sekcji pokażemy, jak używać tych wywołań za pomocą PHP i curl. Te wywołania mogą być wykonane w podobny sposób w dowolnym innym języku programowania.
ivr.getAgentAvail
Poniżej znajduje się przykład prawidłowego wywołania ivr.getAgentAvail w
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();
?>Źródłowy język: nl Docelowy język: pl
Odpowiedź wyglądałaby mniej więcej tak:<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>Wartość poniżej<name>extension</name>Źródłowy język: nl
Docelowy język: pl
:<value>
<string>31201234567</string>
</value>### general.getExtensionStatus
Poniżej znajduje się przykład prawidłowego wywołania general.getExtensionStatus w PHP:
is the destination number<?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();
?>Źródłowy język: nl Docelowy język: pl
Odpowiedź wyglądałaby mniej więcej tak:<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>Available</name>
<value>
<string>called</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>## Jak używać tych wywołań
Możemy użyć tych dwóch wywołań razem, aby uzyskać dokładny bieżący status rozszerzenia lub agenta.
Zaczynamy od wywołania ivr.getAgentAvail. Odpowiedź zawierająca availReason powie nam wszystko, co musimy wiedzieć, jeśli rozszerzenie nie jest dostępne (available = 0).
Możliwe availReasons obejmują „pause” (agent robi przerwę i obecnie nie przyjmuje połączeń) lub „-” (agent nie jest obecnie zalogowany lub w inny sposób niedostępny).
Jeśli rozszerzenie jest dostępne (available = 1), chcemy zbadać dalej, używając wywołania general.getExtensionStatus.
Jeśli status to „calling” lub „called”, wiemy, że agent jest na połączeniu. W przeciwnym razie są lub wkrótce będą dostępni do przychodzących połączeń.
To, jak chcesz obsługiwać różne statusy, w dużej mierze zależy od Twojej dokładnej implementacji i jej wymagań.









