Achetez directement en ligne vos propres numéros de téléphone professionnels
L'API sur la disponibilité des agents est conçue pour permettre aux fournisseurs de services d'obtenir des informations de bas niveau sur l'état des agents, grâce à des implémentations personnalisées dans leur propre logiciel.
L'API est notamment utilisée pour permettre aux utilisateurs de vérifier en temps réel et en ligne l'état des consultations téléphoniques.
Pour avoir une vue d'ensemble des appels effectués et des résultats obtenus, tu peux consulter la documentation de l'API ci-dessous.
Remarque : cette documentation est destinée aux programmeurs qui maîtrisent PHP, Python ou d'autres langages de programmation, qui travaillent avec des API et qui utilisent et traitent des données XML.
Vue d'ensemble
L'API de disponibilité des agents est destinée à donner aux propriétaires de numéros de service un accès de bas niveau aux statuts des agents pour une implémentation personnalisée dans leur propre logiciel.
Tu trouveras ci-dessous une liste des appels disponibles.
Appels
ivr.getAgentAvail
Indique si un poste particulier est occupé.
Url : http://api1.belfabriek.nl/xml/agent/xml.asp
In :
accountPin - PIN du compte client
extensionId - ID du poste (également appelé Medewerker ID)
Out :
available - si l'agent est activé (0 = non, 1 = oui).
availReason - Informations supplémentaires sur l'état de l'agent (par exemple "paused" ou "handling")
extension - le numéro de téléphone actuel auquel cette extension se connecte
general.getExtensionStatus
Renvoie le statut actuel d'un agent.
Url : http://api1.belfabriek.nl/xml/agent/xml.asp
Dans :
supId - Id du superviseur
manId - Id du gestionnaire
custId - Id du compte
extId - identifiant de l'extension
Out :
statut
calling - connexion
called - connexion établie
wrapup - la connexion est en cours de wrapup
inactif
Comment utiliser ces appels
Ces appels sont effectués en tant qu'appels HTML Post à l'aide de paquets XML RPC. Dans les exemples ci-dessous, nous te montrerons comment procéder, avec un exemple de code.
HTTP Post via XML RPC
Le client envoie un paquet XML RPC à l'URL spécifiée. Le nom de la fonction doit être spécifié.
Exemple de ce à quoi ressemble un message XML RPC envoyé à notre serveur XML RPC :
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>functie.naam</methodName>
<params>
<param>
<valeur>
<struct>
<member>
<nom>param1</nom>
<value><string>valeur1</string></value>
</member>
<member>
<nom>param2</nom>
<value><string>valeur2</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
Notre serveur XML RPC doit toujours recevoir tout dans le format XML RPC correct.
En outre, le serveur XML RPC s'attend à recevoir tous les paramètres sous forme de chaînes de caractères.
Voici un exemple de réponse XML RPC de notre serveur XML RPC telle que tu la recevrais :
<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
<param>
<valeur>
<struct>
<member>
<nom>param1</nom>
<value><string>valeur1</string></value>
</member>
<member>
<nom>param2</nom>
<value><string>valeur2</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Exemples
Dans cette section, nous allons montrer comment utiliser ces appels en utilisant PHP et curl. Ces appels peuvent être effectués de manière similaire dans n'importe quel autre langage de programmation.
ivr.getAgentAvail
Voici un exemple d'appel ivr.getAgentAvail valide en 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>
<nom>CodeCompte</nom>
<value><string>$accountPin</string></value>
</member>
</member>
<nom>extensionId</nom>
<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() ;
?>
La réponse ressemblerait à quelque chose comme ceci :
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<nom>disponible</nom>
<valeur>
<i4>0</i4>
</value>
</member>
<member>
<nom>availReason</nom>
<valeur>
<string>-</string>
</value>
</member>
<member>
<nom>extension</nom>
<valeur>
<string>31201234567</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
La valeur sous <nom>extension</nom> :
<value>
<string>31201234567</string>
</value> est le numéro de destination.
general.getExtensionStatus
Voici un exemple d'appel general.getExtensionStatus valide en 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' ; //remplacer la valeur par ta propre valeur
$url = 'http://api1.belfabriek.nl/xml/agent/xml.asp' ;
$xml_data = "<?xml version='1.0'?>
<methodCall>
<methodName>general.getExtensionStatus</methodName>
<params>
<param>
<valeur>
<struct>
<member>
<nom>supId</nom>
<value><string>$supId</string></value>
</member>
<member>
<nom>manId</nom>
<value><string>$manId</string></value>
</member>
<member>
<name>accountCode</name>
<value><string>$customerId</string></value>
</member>
<member>
<nom>extensionId</nom>
<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() ;
?>
La réponse ressemblerait à quelque chose comme ceci :
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<nom>Disponible</nom>
<value>
<string>appelé</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Comment utiliser ces appels
Nous pouvons utiliser ces deux appels ensemble pour obtenir le statut actuel exact d'une extension ou d'un agent.
Nous commençons par l'appel ivr.getAgentAvail. Le motif availReason de la réponse nous dira tout ce que nous devons savoir si le poste n'est pas disponible (available = 0).
Les motifs avail possibles sont "pause" (l'agent fait une pause et n'accepte pas d'appels), ou "-" (l'agent n'est pas connecté ou n'est pas disponible).
Si le poste est disponible (available = 1), nous voulons le sonder davantage en utilisant l'appel general.getExtensionStatus.
Si le statut est "calling" ou "called", nous savons que l'agent est en communication. Sinon, il est ou sera bientôt disponible pour les appels entrants.
La façon dont tu veux gérer les différents statuts dépend beaucoup de ton implémentation exacte et de ses exigences.