One of our most desired features is to have a multi-server Queue application in asterisk. We decided to experiment with Asterisk 13, ARI and Respoke (with chan_respoke) to create a proof of concept system handling calls from the web to agents locally registered on the asterisk server.
Once we had built the CentOS 6 server with Asterisk 13, we installed chan_respoke and created the web page to make calls both to asterisk and of course other browser sessions.
Several php programs make up the queue system
- Agent Logon listens for agentLogon stasis events and adds the agent to the database
- Agent Logoff listens for agentLogoff stasis events and removes the agent from the database
- Queue Call listens for queueCall stasis events and adds the call to the database, and starts on hold music
- Queue Main scans the database for available agents to handle waiting calls and bridges the agent to the call.
We used Meteor to create a simple web page which includes a Respoke client able to call into the queue, as well as views of logged in agents and waiting callers. Meteor's amazing reactive capabilities made it easy to update the screen on the fly as agents log in and out and callers join the queue.