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.