Howto:Create an ACD Routepoint with external Call Distribution Logic
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.
innovaphone PBX V11 and later
- Calls are received by the PBX and routed to a Voicemail object
- 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)
- The script requests a cmd from the server, providing all available call data (CGPN, DTMF, diversion info etc.)
- The server evaluates the data provided and returns a cmd (e.g. play a prompt or attempt a transfer to agent)
- 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
promptson the local CompactFlash card.
- In the PBX create a VoiceMail Object and provide the URL with the Path to the
- 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.
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 firstname.lastname@example.org.
- Download the complete file package of scripts and files described in this article.
- Howto:ACD with Voicemail XML Script and external Database or Application
- Howto:Getting started with your own PBX voicemail script
- Howto:Configure the innovaphone Voicemail