De Agent Availability API ma na celu zapewnienie właścicielom numerów serwisowych niskopoziomowego dostępu do danych o statusie pracowników w celu niestandardowych implementacji w ich własnym oprogramowaniu.

API jest m.in. używane do pokazywania dostępności pracowników telefonicznych konsultantów w czasie rzeczywistym online.

Przegląd dostępnych wywołań i oczekiwanych wyników znajdziesz w naszej dokumentacji API poniżej.

Uwaga: ta dokumentacja jest przeznaczona dla programistów z doświadczeniem w PHP, Pythonie lub innych językach programowania, pracy z API oraz pobieraniu i przetwarzaniu danych XML.

Przegląd

Agent Availability API ma na celu zapewnienie właścicielom numerów serwisowych niskopoziomowego dostępu do statusów agentów w celu niestandardowej implementacji w ich własnym oprogramowaniu.

Poniżej znajduje się lista dostępnych wywołań.

Wywołania

ivr.getAgentAvail

Wskazuje, czy dane rozszerzenie jest zajęte.

Url: http://api1.belfabriek.nl/xml/agent/xml.asp

In:

  • accountPin - PIN konta klienta
  • extensionId - Identyfikator rozszerzenia (również nazywany Identyfikatorem Pracownika)

Out:

  • available - czy agent jest dostępny (0 = nie, 1 = tak)
  • availReason - Dodatkowe informacje o statusie agenta (np. “wstrzymany” lub “obsługiwany”)
  • extension - aktualny numer telefonu, do którego to rozszerzenie się łączy

general.getExtensionStatus

Zwraca aktualny status agenta.

Url: http://api1.belfabriek.nl/xml/agent/xml.asp

In:

  • supId - Identyfikator nadzorcy
  • manId - Identyfikator menedżera
  • custId - Identyfikator konta
  • extId - Identyfikator rozszerzenia

Out:

  • status
  • calling - łączenie
  • called - połączenie nawiązane
  • wrapup - połączenie w fazie zakończenia
  • idle

Jak używać tych wywołań

Te wywołania są wykonywane jako wywołania HTML Post przy użyciu pakietów XML RPC. W poniższych przykładach pokażemy, jak to zrobić, w tym przykładowy kod.

HTTP Post za pomocą XML RPC

Klient wysyła pakiet XML RPC na określony URL. Nazwa funkcji musi być określona.

Przykład, jak wygląda wiadomość XML RPC do naszego serwera 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>Nasz serwer XML RPC powinien zawsze otrzymywać wszystko w poprawnym formacie XML RPC.

Dodatkowo serwer XML RPC oczekuje, że wszystkie parametry będą przesyłane jako ciągi znaków.

Przykład odpowiedzi XML RPC z naszego serwera XML RPC, jaką byś otrzymał:<?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>## Przykłady

W tej sekcji pokażemy, jak używać tych wywołań za pomocą PHP i curl. Te wywołania mogą być wykonane w podobny sposób w dowolnym innym języku programowania.

ivr.getAgentAvail

Poniżej znajduje się przykład prawidłowego wywołania ivr.getAgentAvail w 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();

?>Źródłowy język: nl Docelowy język: pl

Odpowiedź wyglądałaby mniej więcej tak:<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>Wartość poniżej<name>extension</name>Źródłowy język: nl Docelowy język: pl

:<value>

             <string>31201234567</string>

</value>### general.getExtensionStatus

Poniżej znajduje się przykład prawidłowego wywołania general.getExtensionStatus w PHP:

is the destination number<?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();

?>Źródłowy język: nl Docelowy język: pl

Odpowiedź wyglądałaby mniej więcej tak:<methodResponse>

 <params>

   <param>

     <value>

       <struct>

         <member>

           <name>Available</name>

           <value>

             <string>called</string>

           </value>

         </member>

       </struct>

     </value>

   </param>

 </params>

</methodResponse>## Jak używać tych wywołań

Możemy użyć tych dwóch wywołań razem, aby uzyskać dokładny bieżący status rozszerzenia lub agenta.

Zaczynamy od wywołania ivr.getAgentAvail. Odpowiedź zawierająca availReason powie nam wszystko, co musimy wiedzieć, jeśli rozszerzenie nie jest dostępne (available = 0).

Możliwe availReasons obejmują „pause” (agent robi przerwę i obecnie nie przyjmuje połączeń) lub „-” (agent nie jest obecnie zalogowany lub w inny sposób niedostępny).

Jeśli rozszerzenie jest dostępne (available = 1), chcemy zbadać dalej, używając wywołania general.getExtensionStatus.

Jeśli status to „calling” lub „called”, wiemy, że agent jest na połączeniu. W przeciwnym razie są lub wkrótce będą dostępni do przychodzących połączeń.

To, jak chcesz obsługiwać różne statusy, w dużej mierze zależy od Twojej dokładnej implementacji i jej wymagań.