API de Disponibilidad de Empleados
La API de Disponibilidad de Agentes está diseñada para proporcionar a los propietarios de números de servicio acceso de bajo nivel a los datos de estado de los agentes con el fin de realizar implementaciones personalizadas en su propio software.
La API se utiliza, entre otras cosas, para mostrar en tiempo real la disponibilidad de los consultores telefónicos en línea.
Puede encontrar una visión general de las llamadas disponibles y los resultados esperados en nuestra documentación de la API a continuación.
Nota: esta documentación está destinada a programadores con experiencia en PHP, Python u otros lenguajes de programación, trabajando con APIs y solicitando y procesando datos XML.
Resumen
La API de Disponibilidad de Agentes está destinada a proporcionar a los propietarios de números de servicio acceso de bajo nivel a los Estados de los Agentes para la implementación personalizada en su propio software.
A continuación se muestra una lista de las llamadas disponibles.
Llamadas
ivr.getAgentAvail
Indica si una extensión particular está ocupada.
Url: http://api1.belfabriek.nl/xml/agent/xml.asp
Entrada:
- accountPin - PIN de la cuenta del cliente
- extensionId - ID de la extensión (también conocido como ID del Agente)
Salida:
- available - si el agente está habilitado (0 = no, 1 = sí)
- availReason - Información adicional sobre el estado del agente (por ejemplo, “pausado” o “en manejo”)
- extension - el número de teléfono actual al que se conecta esta extensión
general.getExtensionStatus
Devuelve el estado actual de un agente.
Url: http://api1.belfabriek.nl/xml/agent/xml.asp
Entrada:
- supId - ID del supervisor
- manId - ID del gerente
- custId - ID de la cuenta
- extId - ID de la extensión
Salida:
- status
- calling - conectando
- called - conexión establecida
- wrapup - la conexión está en wrapup
- idle
Cómo usar estas llamadas
Estas llamadas se realizan como llamadas HTML Post utilizando paquetes XML RPC. En los ejemplos a continuación, le mostraremos cómo hacerlo, incluyendo código de ejemplo.
HTTP Post vía XML RPC
El cliente envía un paquete XML RPC a la URL especificada. Se debe especificar el nombre de la función.
Ejemplo de cómo se ve un mensaje XML RPC a nuestro servidor 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>Nuestro servidor XML RPC siempre debe recibir todo en el formato
XML RPC correcto.
Además, el servidor XML RPC espera recibir todos los parámetros como cadenas.
Un ejemplo de una respuesta XML RPC de nuestro servidor XML RPC tal como la
recibirías:<?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>## Ejemplos
En esta sección mostraremos cómo utilizar estas llamadas usando PHP y curl. Estas llamadas se pueden realizar de manera similar en cualquier otro lenguaje de programación.
ivr.getAgentAvail
El siguiente es un ejemplo de una llamada válida a ivr.getAgentAvail 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>
<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();
?>### Título
Este es un ejemplo de cómo se vería la respuesta:
- Punto 1: Descripción del primer punto.
- Punto 2: Descripción del segundo punto.
Subtítulo
Aquí hay un enlace a Google.
| Encabezado 1 | Encabezado 2 |
|---|---|
| Dato 1 | Dato 2 |
Código de ejemplo``<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>El valor bajo<name>extension</name>:<value>
<string>31201234567</string>
</value>### general.getExtensionStatus
El siguiente es un ejemplo de una llamada válida a general.getExtensionStatus 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'; //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();
?>### Taal
- Nederlands: “Hallo, hoe gaat het?”
- Spaans: “Hola, ¿cómo estás?”
Lijst
- Eerste punt: Dit is een voorbeeld.
- Tweede punt: Dit is nog een voorbeeld.
Tabel
| Nederlands | Spaans |
|---|---|
| Hallo | Hola |
| Tot ziens | Adiós |
Link
Klik hier voor meer informatie
Inline code
Gebruik print("Hallo wereld") om “Hallo wereld” af te
drukken.<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>Available</name>
<value>
<string>called</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>## Cómo utilizar estas llamadas
Podemos usar estas dos llamadas juntas para obtener el estado actual exacto de una extensión o agente.
Comenzamos con la llamada ivr.getAgentAvail. La respuesta de availReason nos dirá todo lo que necesitamos saber si la extensión no está disponible (available = 0).
Las posibles availReasons incluyen “pause” (el agente está tomando un descanso y actualmente no está aceptando llamadas), o “-” (el agente actualmente no ha iniciado sesión o no está disponible por otras razones).
Si la extensión está disponible (available = 1), queremos investigar más a fondo utilizando la llamada general.getExtensionStatus.
Si el estado es “calling” o “called”, sabemos que el agente está en una llamada. De lo contrario, están o estarán pronto disponibles para recibir llamadas entrantes.
Cómo deseas manejar diferentes estados depende mucho de tu implementación exacta y sus requisitos.