Työntekijän saatavuus API
Agent Availability API on tarkoitettu antamaan palvelunumeron omistajille matalan tason pääsyn työntekijän tilatietoihin omien ohjelmistojen mukautettuja toteutuksia varten.
API:ta käytetään muun muassa näyttämään puhelinneuvojien saatavuus reaaliajassa verkossa.
Yleiskatsauksen saatavilla olevista kutsuista ja odotettavissa olevista tuloksista löydät alla olevasta API-dokumentaatiostamme.
Huomaa: tämä dokumentaatio on tarkoitettu ohjelmoijille, joilla on kokemusta PHP:stä, Pythonista tai muista ohjelmointikielistä, API:iden käytöstä sekä XML-datan hakemisesta ja käsittelystä.
Yleiskatsaus
Agent Availability API on tarkoitettu antamaan palvelunumeron omistajille matalan tason pääsyn työntekijän tiloihin omien ohjelmistojen mukautettuja toteutuksia varten.
Alla on luettelo saatavilla olevista kutsuista.
Kutsut
ivr.getAgentAvail
Ilmaisee, onko tietty laajennus varattu.
Url: http://api1.belfabriek.nl/xml/agent/xml.asp
Sisään:
- accountPin - Asiakastilin PIN
- extensionId - Laajennuksen ID (tunnetaan myös nimellä Medewerker ID)
Ulos:
- available - onko työntekijä käytettävissä (0 = ei, 1 = kyllä)
- availReason - Lisätietoja työntekijän tilasta (esim. “tauolla” tai “käsittelee”)
- extension - nykyinen puhelinnumero, johon tämä laajennus yhdistää
general.getExtensionStatus
Palauttaa työntekijän nykyisen tilan.
Url: http://api1.belfabriek.nl/xml/agent/xml.asp
Sisään:
- supId - valvojan Id
- manId - Managerin Id
- custId - tilin Id
- extId - laajennuksen Id
Ulos:
- status
- calling - yhdistetään
- called - yhteys muodostettu
- wrapup - yhteys on päättelyvaiheessa
- idle
Kuinka käyttää näitä kutsuja
Nämä kutsut tehdään HTML Post -kutsuina käyttäen XML RPC -paketteja. Alla olevissa esimerkeissä näytämme, kuinka se tehdään, mukaan lukien esimerkkikoodi.
HTTP Post XML RPC:n kautta
Asiakas lähettää XML RPC -paketin määritettyyn URL-osoitteeseen. Toiminnon nimi on määritettävä.
Esimerkki siitä, miltä XML RPC -viesti XML RPC -palvelimellemme
näyttää:<?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.
Daarnaast verwacht de XML RPC-server alle parameters als strings te ontvangen.
Een voorbeeld van een XML RPC-reactie van onze XML RPC-server zoals je die zou ontvangen:
XML RPC -palvelimemme tulisi aina vastaanottaa kaikki oikeassa XML RPC -muodossa.
Lisäksi XML RPC -palvelin odottaa saavansa kaikki parametrit merkkijonoina.
Esimerkki XML RPC -vastauksesta XML RPC -palvelimeltamme, kuten sen
vastaanottaisit:<?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>
## Esimerkit
Tässä osiossa näytämme, kuinka näitä kutsuja käytetään PHP:ssä ja curlissa. Näitä kutsuja voidaan tehdä samalla tavalla missä tahansa muussa ohjelmointikielessä.
ivr.getAgentAvail
Seuraava on esimerkki kelvollisesta ivr.getAgentAvail-kutsusta PHP:ssä:<?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();
?>
Lähdekieli: nl Kohdekieli: fi
Vastaus näyttäisi tältä:<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>
Arvo alla<name>extension</name>
Lähdekieli: nl Kohdekieli:
fi
:<value>
<string>31201234567</string>
</value>
### general.getExtensionStatus
Seuraavassa on esimerkki kelvollisesta general.getExtensionStatus-kutsusta
PHP:ssä:<?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();
?>
Lähdekieli: nl Kohdekieli: fi
Vastaus näyttäisi tältä:<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>Available</name>
<value>
<string>called</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
## Kuinka käyttää näitä kutsuja
Voimme käyttää näitä kahta kutsua yhdessä saadaksemme tarkan nykytilan laajennuksesta tai agentista.
Aloitamme ivr.getAgentAvail-kutsulla. Vastaus sisältää availReason-tiedon, joka kertoo meille kaiken tarvittavan, jos laajennus ei ole käytettävissä (available = 0).
Mahdollisia availReason-arvoja ovat esimerkiksi “pause” (agentti pitää taukoa eikä tällä hetkellä vastaanota puheluita) tai “-” (agentti ei ole kirjautunut sisään tai ei ole muuten käytettävissä).
Jos laajennus on käytettävissä (available = 1), haluamme tutkia tarkemmin käyttämällä general.getExtensionStatus-kutsua.
Jos tila on joko “calling” tai “called”, tiedämme, että agentti on puhelussa. Muussa tapauksessa he ovat tai tulevat pian olemaan käytettävissä saapuville puheluille.
Se, miten haluat käsitellä eri tiloja, riippuu paljon tarkasta toteutuksestasi ja sen vaatimuksista.