Disponibilità del Dipendente API
L’Agent Availability API è destinata a fornire ai proprietari di numeri di servizio un accesso di basso livello ai dati sullo stato degli agenti per implementazioni personalizzate nel proprio software.
L’API viene utilizzata, tra l’altro, per mostrare in tempo reale la disponibilità degli agenti telefonici online.
Un riepilogo delle chiamate disponibili e dei risultati attesi è disponibile nella nostra documentazione API qui sotto.
Nota: questa documentazione è destinata a programmatori con esperienza in PHP, Python o altri linguaggi di programmazione, nel lavoro con le API e nella richiesta e elaborazione di dati XML.
Panoramica
L’Agent Availability API è destinata a fornire ai proprietari di numeri di servizio un accesso di basso livello agli stati degli agenti per implementazioni personalizzate nel proprio software.
Di seguito è riportato un elenco delle chiamate disponibili.
Chiamate
ivr.getAgentAvail
Indica se un particolare interno è occupato.
Url: https://api.belfabriek.nl/xml/agent/xml.asp
In:
- accountPin - PIN dell’account cliente
- extensionId - ID dell’interno (noto anche come ID Agente)
Out:
- available - se l’agente è abilitato (0 = no, 1 = sì)
- availReason - Informazioni aggiuntive sullo stato dell’agente (ad es. “in pausa” o “in gestione”)
- extension - il numero di telefono attuale a cui questo interno si collega
general.getExtensionStatus
Restituisce lo stato attuale di un agente.
Url: https://api.belfabriek.nl/xml/agent/xml.asp
In:
- supId - ID supervisore
- manId - ID manager
- custId - ID account
- extId - ID interno
Out:
- status
- calling - connessione in corso
- called - connessione stabilita
- wrapup - connessione in fase di chiusura
- idle
Come utilizzare queste chiamate
Queste chiamate vengono effettuate come chiamate HTML Post utilizzando pacchetti XML RPC. Negli esempi seguenti ti mostreremo come farlo, incluso il codice di esempio.
HTTP Post via XML RPC
Il cliente invia un pacchetto XML RPC all’URL specificato. Il nome della funzione deve essere specificato.
Esempio di come appare un messaggio XML RPC al nostro server XML
RPC:<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>funzione.nome</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>Il nostro server XML RPC dovrebbe sempre ricevere tutto nel
formato XML RPC corretto.
Inoltre, il server XML RPC si aspetta di ricevere tutti i parametri come stringhe.
Un esempio di una risposta XML RPC dal nostro server XML RPC come la
riceveresti:<?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>## Esempi
In questa sezione mostreremo come utilizzare queste chiamate usando PHP e curl. Queste chiamate possono essere effettuate in modo simile in qualsiasi altro linguaggio di programmazione.
ivr.getAgentAvail
Di seguito è riportato un esempio di una chiamata valida ivr.getAgentAvail in
PHP:<?php
$accountPin = 'xxxxx'; //replace value with your own value
$extensionId = 'xxxxx'; //replace value with your own value
$url = 'https://api.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();
?>
La risposta potrebbe apparire in questo modo:<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>Il valore sotto <name>extension</name> contiene il numero di telefono attuale a cui si collega questo interno:<value>
<string>31201234567</string>
</value>### general.getExtensionStatus
Di seguito è riportato un esempio di una chiamata valida a
general.getExtensionStatus 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 = 'https://api.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();
?>
La risposta potrebbe apparire in questo modo:<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>Available</name>
<value>
<string>called</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>## Come utilizzare queste chiamate
Possiamo utilizzare queste due chiamate insieme per ottenere lo stato attuale esatto di un interno o di un agente.
Iniziamo con la chiamata ivr.getAgentAvail. La risposta availReason ci dirà tutto ciò che dobbiamo sapere se l’interno non è disponibile (available = 0).
I possibili valori di availReason includono “pause” (l’agente sta facendo una pausa e attualmente non accetta chiamate), o “-” (l’agente non è attualmente connesso o altrimenti non è disponibile).
Se l’interno è disponibile (available = 1), vogliamo indagare ulteriormente utilizzando la chiamata general.getExtensionStatus.
Se lo stato è “calling” o “called”, sappiamo che l’agente è in una chiamata. Altrimenti, è o sarà presto disponibile per le chiamate in arrivo.
Il modo in cui si desidera gestire i diversi stati dipende molto dalla tua esatta implementazione e dai suoi requisiti.









