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 1Encabezado 2
Dato 1Dato 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

  1. Eerste punt: Dit is een voorbeeld.
  2. Tweede punt: Dit is nog een voorbeeld.

Tabel

NederlandsSpaans
HalloHola
Tot ziensAdiós

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.