I want to achieve following in my asterisk based call center.
Inbound Call Scenario
- A call comes in, I get list of free agents in a queue.
- Dial best suited agent for that call.
What I have done
- I have written a TCP/IP based server application that takes callID and list of free agents in queue and returns best match agent for this call.
Considering my requirement. I have thought solution that
- Whenever a calls comes in a Queue, AGI script is called.
- AGI script send request to my application, asking for best agent for this call.(I plan to use FastAGI)
- My application, using AMI gets free agents in queue. (Using AMI command QueueStatus)
- My application returns best agent for this call. Lets call him Agent1.
- AGI script dials Agent1.
- If dial is unsuccessful(lets say agent got busy/on-break meanwhile), add call to queue for default processing.
PS: I have to handle thousands of calls. So kindly keep that in mind.
Kindly point me in right direction.