We require a web based management system for our multiple Asterisk telephony servers. The site is to provide number management and routing, statistics (real time and historical), billing (monthly statements), pre paid accounts for wholesale voip provision, full user management and permission control. Full details in main spec. Ideally we'd like it written in PHP, but will take advice.
* Please, applications only from people who have completed similar types of projects *
**This project is to provide a complete management system for our cluster of Asterisk VoIP servers. We currently have 8 servers and this will increase. The system must provide full management (customer details, RealTime dialplans, statistics, billing, number management).
**Who will use this?
**Broadly, administration staff (non-technical) will run the billing reports, maintain customer details, maintain number lists and be able to query statistics whilst technical staff will add routes & maintain dial plans. Customers will be able to log in and view their statistics on demand, plus we need a method for automated hourly, daily, weekly and monthly statistics to be emailed to them.
**Below is a broad spec. with the functionality of each section reasonably well defined. We require initially a ball park cost with a final quote once all information has been agreed.
**I will break this up into the components of the project as I think this is the easiest way to explain it.
Each user will have a username and password which will classify them as a type (sysop, technical, sales, admin & customer). The default permissions of each type can be overridden on an individual basis. On logging in, the user will be taken to their customised home page (their logo is all the customisation really) along with the options their permissions allow. Each user will belong to a company ...
Companies are containers for users. We will be the first, defined company, and our staff will be assigned to this. Each company comes with a default set of permissions (similar to user customer) and these are overridden by the users permissions. Having a company allows us to customise the screens with their logo and also to provide contact and billing details. The fields are not finalised but will typically be name, address, contact names & numbers, billing, etc.
Collectively, the user's and company's data will form a simple CRM system that is relevant to the administration of Asterisk.
We have hundreds of numbers allocated to us and we need to administer these in an effective way. Typically these numbers are routed through to one or more of the Asterisk servers. Some are not, but we still need to keep their records here in one place. We require the ability to add a new number - individual or range - ans store info such as :
*who it's from, how much it costs, our rebate for its use (day/evening/weekend), which IVR or onward number it is allocated to, which service is on the end of it and the customer (company/user) it has been allocated to.
*For numbers routed to Asterisk, the dial plan must be updated either in real time or as part of scheduled batch jobs. I would like RealTime if possible. Numbers may be reallocated from customer to customer, so a history of their allocation must be kept and customers must be restricted to viewing statistics only for the period the number was allocated to them for.
We also have two types of number - premium rate and DDI. The premium rate numbers are sometimes allocated directly to our kit, but sometimes they are routed to DDIs which are then allocated to our kit. We keep a supply of these DDIs especially so premium number suppliers can route them to us using the public network. We need the ability to automatically assign a DDI to a premium number. So, if I'm adding 10 premium numbers (say 09097967310 to 09097967319) I can choose to have 10 DDIs assigned as the routing number. Those DDIs will be selected from a range previously added.
This management screen will need to be drawn out for you, as it's quite hard to explain here. I will provide further details when necessary.
The Asterisk servers log all calls to a mySQL database with one table per server. We need to run statistics based on this.
1. We need on demand stats, providing a web page for a customer to enter a date/time range and possibly the numbers they require the stats for. They will then be presented with calls, minutes, average hold times for those numbers, possibly grouped together by information contained in the number management database (such as country of origin).
2. We need automatic stats with options for hourly, daily, weekly and monthly, configurable on a customer by customer basis.
3. We need end-of-billing period stats. Mostly this will be monthly, but the option for the period on certain numbers (possibly grouped by a field in the number management database) to be user defined.
Billing & statements
We need to provide customers with statements for moneys owed by us and invoices to people for moneys owed to us. Some numbers we pay them, some numbers they pay us.
There are two good ways I know of in the business that this is done. For moneys owed out, one company sends out an emailed PDF statement each billing period inviting an invoice, and another just makes the statement available in the users area for downloading via a link. I like the second method accompanied by an email stating the new statement is available. For invoices out, i want the invoice to be sent as a PDF. I also want the amounts owed/paid/owing to show in a report and on the users home page.
We need to be able to see system usage (based on the mySQL data, as well as people with outstanding bills, usage patterns, etc. All of these to be run on demand.
Some real time screens are also required. Certain routes may require quality monitoring (such as ASR and ACD) based over a 1 hour (defineable) sample. There's probably more, but that's the general idea.
We would like if possible to access the CLI of each server from within the system (via an embedded ssh terminal?). Probably more here, too, but as yet undefined.