Howto:Create an ACD Routepoint with external Call Distribution Logic

From innovaphone wiki
Jump to navigation Jump to search

The innovaphone PBX supports a number of objects to implement various call-distribution schemes (namely Waiting Queue, Call Broadcast, Call Broadcast Conference and Voicemail ). Although this allows to implement quite sophisticated logic only using on-board tools, there are scenarios where the distribution logic shall be implemented in an external (presumably server-) component.

The right tool do implement this is a custom XML script for the Voicemail object. Some simple examples how to do this are described in various articles (e.g. Howto:Simple Linear ACD with Voicemail XML Script, Howto:ACD with Voicemail XML Script and external Database or Application and Howto:Simple Round Robin ACD with Voicemail XML Script). All these scripts implement the main logic within the XML script and retrieve only some decision data from the server.

However, if you intend to implement the complete logic on the server side, here is how.

Applies To

innovaphone PBX V11 and later

More Information


The overall setup is shown here:
Create a Routepoint wth external Call Distribution Logic - Scheme.png

  1. Calls are received by the PBX and routed to a Voicemail object
  2. The voicemail object retrieves its controlling XML script from the local CF card (this is not a strict requirement. The script could also be retrieved from the ACD server, but retrieving it locally ensures that a fail-over routing is possible even if the server is unreachable)
  3. The script requests a cmd from the server, providing all available call data (CGPN, DTMF, diversion info etc.)
  4. The server evaluates the data provided and returns a cmd (e.g. play a prompt or attempt a transfer to agent)
  5. The script executes the cmd and starts over at step 3

No media needs to be handled by the server.

If any request to the server fails, the script will transfer the call to the configured fail-over emergency destination.


We do provide sample code to demonstrate the basic principle. This code requires the following prerequistes:

  • a PBX with phones for agent and caller
  • a PHP (5.3+ should do) enabled web server
  • a mySQL database

The code provided consists of

  • the generic XML script which controls the PBX's Voicemail object
  • a PHP/mySQL based sample implementation of the ACD server

Of course, you will replace the ACD server by your own and from this point on, there is no requirement for PHP or mySQL any more.

On the PBX side:

  • put the routepoint.xml and prompts on the local CompactFlash card.
  • In the PBX create a VoiceMail Object and provide the URL with the Path to the routepoint.xml.
  • add Query String with parameter $server containing an URL encoded URL to the PHP CGI script

V11 and later firmware

If you are running newer firmware, you should uncomment the code for the fwd-end event.

Known Problems

This is not a ready-to-use sample, it is rather a technology showcase. If you are interested in using it with your own ACD server, send an email to


  • Download the complete file package of scripts and files described in this article.

Related Articles