[Asterisk-Dev] Creating An Asterisk Data Model

Ray Burkholder ray at oneunified.net
Fri May 28 16:20:22 MST 2004


I've been working on implementing such a project.  The basics for much
of this stuff is in place.

I have the basic double entry accounting tables in place for handling
sales orders, invoicing, shopping cart, AR, AP, GL.  

Basic telephony tables are in place to handle atomic services such as
origination, termination, did numbers, corporate dial plan, per
extension feature handling, voicemail, etc.  There is a then a 'package'
table that allows a mix and match of atomic services to make a service
provider offering.

A user self-provisions various services through a web based interface.
Services are selected and placed on an order, then invoiced.  In a
prepaid scenario, and deposit has to be applied before provisioning
takes place.  On post paid accounts, provisioning can happen right away.

Provisioning is simply a matter of enabling the atomic services selected
via the package.

Incoming calls are directed via a double AGI step, the first identifies
the inbound DID and it's generic call processing script.  That specific
script is then started to handle the specifics of that DID's
'character'.

Termination is handled in a similar manner.  There are various calling
plans to which one may subscribe.  The context:script handling that
terminating call authorizes the termination if the account is active,
otherwise not if it is suspended or some such.  Then the appropriate
rating table is pulled up to rate and route the call.

At call completion, a manager interface pulls out the cdr, figures out
the account and service type, and throws it into a sales order.  Account
status is updated at this time to reflect balances available for further
calls and such.

The user can review their sales orders and invoices at any time and
apply payments.  On a regular basis, the system post sales orders to
invoices and submits email reminders for payments.

Accounting is built in but I've been considering accelerating that by
connecting up with open source accounting such as Compiere.

The solution runs on a minimum of 3+n servers.  A base system is
composed of:
  * SQL server, currently PostgreSQL
  * Apache web server running a bunch of Mason/Perl scripts
  * Asterisk server with ip and tdm termination and more Perl call
processing scripts

All scripts and configurations are CVS'd to facilitate server rebuilding
and expansion.

Once I get some time, I'm wanting to evaluate a couple of High
Availability scenarios. From people I've discussed this with, there are
many ways of doing it.  It depends on who you are, and what sort of back
end and front end equipment you have.

The SQL server is the hardest bit to make auto-redundant, but with some
of the stuff from openssi, this may become a no brainer.  The Apache
server runs stateless with all the logins and such SQL'd, so is easy to
load balance.  Asterisk is also easy to rendundentize through various
ip, dns, and stateless call processing tricks.

Anyway, with a bunch of in-service devlopment, I've come up with a
solution that loosely/closely/kinda/maybe resembles something you've got
in mind.

I've been developing the solution to handle many of the scenarios
posit'd below, with these in particular:

* enterprise pbx with flexible user-managed moves, adds, changes.
* asp model virtual pbx for distributed companies
* broadband phone services with self-help, self-provisioning,
self-accounting flexibility
* providing various rates plans for termination only environments
* in this general categories are a bunch of details in terms of
arranging for things like:
  
 Live Call Forwarding   
 Live Extension Transfer   
 Music-on-Hold   
 Call Announce/Screening   
 Message Notification   
 Pager Notification   
 Call Return from Mailbox   
 Virtual Calling Card   
 Q&A Scripting   
 Detailed Online Billing   
 Caller ID with Time Stamping   
 Web-Based Administration   
 Conference Calling   
 Dial-by-Name Directory
 VirtualFax (Receive/Forward faxes)
 Rotational Mailboxes
 Virtual Holding Mailbox (ACD Queues) 
 Multiple Distribution Lists
  etc.

Now the question that comes to my mind is that it would be interesting
to share the solution as alpha as it may be in order to accelerate
development and improvement, but still be able to glean some dollars off
it.

That is a hard question.

Hope this helps.

Ray.


> -----Original Message-----
> From: asterisk-dev-admin at lists.digium.com 
> [mailto:asterisk-dev-admin at lists.digium.com] On Behalf Of Steven Sokol
> Sent: Friday, May 28, 2004 19:05
> To: asterisk-dev at lists.digium.com
> Subject: [Asterisk-Dev] Creating An Asterisk Data Model
> 
> 
> Sorry for the long message - brain dump time:
> 
> I've spent the past few days working on a comprehensive data 
> model for a
> client.  The client is a carrier and wants to be able to 
> provide both retail
> and wholesale service using a cluster of Asterisk systems.  To further
> complicate the configuration, they want to provide both basic 
> services (dial
> tone + voicemail + Class5 features) and Virutal PBX/IP 
> Centrex services.
> 
> While this is somewhat complex, it's nothing new.  Many providers have
> similar offerings.  The clustering is a challenge but not a 
> show stopper.
> For what it's worth, I currently have about 15 tables 
> defined.  I figure I
> am 1/4 to 1/5 of the way done.
> 
> The reason I bring all of this up is that it might be cool to 
> work together
> to come up with an advanced, flexible data model that can 
> become a starting
> point if not a standard for Asterisk implementations.
> 
> The model should support the most common types of implementations: 
> 
> - Asterisk as SOHO PBX
> - Asterisk as Enterprise PBX
> - Asterisk as ACD (Call Center)
> - Asterisk as IVR Server
> - Asterisk as Voicemail Server
> - Asterisk as Hosted IP Centrex Platform
> - Asterisk as PSTN Media Gateway (service provider)
> - Asterisk as VoIP Gateway (enterprise) 
> - Others that I missed here... (Suggestions?)
> 
> This seems to be a good place to start working towards a 
> number of topics
> that have been discussed on IRC and this list:
> 
> - A single point of authentication
> - Common VoIP configuration (single account works for IAX, 
> SIP, MGCP, H323)
> - A user-centric dial plan or at least an expansion of the 
> concept of users
> - A central registry that allows for easy, scalable clustering
> - Enhanced billing, routing, and rating features
> 
> All of these things are good steps forward.  All of these 
> will help make
> Asterisk a "safe" solution (thus easier to sell to management).
> 
> I realize that this may be heresy/flame-bait, but with ast_data moving
> closer to implementation, now is a good time to work out a 
> common model for
> providing these services.
> 
> Thoughts?
> 
> Steve
> 
> Steven Sokol
> Owner/Manager
> Sokol & Associates, LLC
> 
> Phone:  816.822.1807
> IaxTel: 700.613.9004
> Web:    http://www.sokol-associates.com
> 
> 
> 
> _______________________________________________
> Asterisk-Dev mailing list
> Asterisk-Dev at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-dev
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev
> 
> -- 
> Scanned for viruses and dangerous content at 
> http://www.oneunified.net and is believed to be clean.
> 
> 


-- 
Scanned for viruses and dangerous content at 
http://www.oneunified.net and is believed to be clean.




More information about the asterisk-dev mailing list