Note: A have asked this question at the Superuser community first, but since it involves a lot of software-building-related topics I decided to move it here.
I need to provide a simple call-center solution to a small local business.
They have a local 6-digit land line number. They accept calls locally, i.e. nobody calls them from another cities.
The problem is that they started to lose customers, because with a certain amount of calls every day it has become impossible to reach the local phone number (it is always busy).
So, there is a call center solution needed.
I assume that I can somehow hook to Asterisk PBX and then do all the business logic and CRM stuff with some Java+MySQL custom written module.
I tend to think that I could have a PBX server with a land line somehow plugged in to it, and in addition to that I can call the PBX API from my Java/MySQL custom written module.
So, what should I start with? How can a land line number be attached to a PBX server? What is the best open source PBX that has rich API to call?
P.S. Here is the SRS:
The non-functional requirements are:
- the client needs the quickest time-to-market possible solution;
- open source: the client does no like to be in 'vendor lock-in';
- the main call center server's API should be accessible via the Internet, which means that a telephone operator can pick up phone calls remotely (sitting at her home computer, for example);
- the solution should be scalable from just a couple of telephone operators (persons who accept calls) to many.
The functional requirements are:
- when a customer makes a call his phone number should be looked up in a database; if there is a record, then the phone operator should see something like "John Smith is calling you (Customer details: Number: XX-XX-XX; Last_order: 1 Jan 2012; etc.);
- if there is no db record for the calling customer, the phone operator should be able to add the new customer do the database (the phone number is filled in automatically);
- the customer's call can be put on hold or redirected to another telephone operator;
- a next customer in the queue can be picked up the the operator manually or automatically;
- if a customer calls and the line is busy, she is put in the queue;
- the telephone operator can set a status: Available/Not available;
- if the phone operator does not pick up the phone, the call is redirected to the next available operator;
- the phone operator should be able to make a call back to any of the customers recorded in the database; the call can be manual or automatic (automatic means the software keeps calling if the line is busy);
- each customer call can be recorded and stored on disk.