How LinuxMCE telecom works
The LinuxMCE telecom is formed from several layers:
- Telecom_Plugin
- Asterisk
- Asterisk Management Portal http://amp.coalescentsystems.ca/ (now Free PBX)
- asterisk http://www.asterisk.org/
And also several additional things like hard phones and scripts to configure them (Dhcpd-plugin), orbiter's embedded phone (SimplePhone) and also some scripts which submit AMP pages to create asterisk configurations for phones and phone lines.
Telecom_Plugin (package pluto-std-plugins)
This one is used to forward all kind of requests to Asterisk or other telecom related devices and to provide data grids about telecom stuff. It usually knows a lot of stuff about active calls and such stuff.
Asterisk (package pluto-asterisk)
There is a high degree of redundancy between Asterisk and Telecom_Plugin. One works with extensions and more low level info, the other with devices and provides a wrapper available from Designer by virtual device id (-107).
Asterisk is the "glue" between LinuxMCE and real asterisk server. The idea is to use AMI to communicate with asterisk http://www.voip-info.org/wiki/view/Asterisk+manager+API. It creates a socket on which they communicate. Commands to asterisk are queued (and executed one by one) and there is also a listener which notifies Telecom_Plugin about certain events like Ring, Hangup and so on.
asterisk (package asterisk-LinuxMCE )
This is the real thing. This is the one which actually does everything. It's packaged as a 'kitchen sink' to include
- asterisk (voip server)
- zaptel (digium cards support)
- asterisk-addons(mysql support)
- some patches (bristuff and floriz asked by some users, theoretically to improve performance)
- app_conference (used instead of meetme because we don't have Digium cards)
- chan_sccp(used priimary for Cisco 7970 but other Cisco phones should work)
- chan_capi(I never used but it exists to support some isdn cards)
- spandsp (theoretically for faxes, but also never tried)
- AMP
Actually user should never use AMP, we practically wrapped all needed functions in perl scripts which submits AMP pages or directly generates asterisk's configs. The thing is starting to get pretty messed up in area on AMP but at least it works.
Feature list
This is a short list of supported features. As far as we tested most of them really work.
- hard phones plug&play
- easy phone line creation
- make and receive calls
- user call routing
- phone line call routing
- priority callers and callers for me
- blind transfer of a call
- conference calls
- join existing call
- phone book, speed dial
- voice mail
- alarm and speak in the house
All these features are available by tight interaction between asterisk, Asterisk, Telecom_Plugin and phone devices.
Some of the features are simply available by proper edit of configuration files with AMP or simple scripts (phone p&p, phone lines, simple phone calls, voice mail)
Some other are more related to LinuxMCE, but still are just smart confirmation files (user call routing, phone line call routing, priority callers, speak in the house)
And the rest are much more complex and highly dependent on Telecom_Plugin->Asterisk->asterisk communication (transfers, conference, joining the call). Usually if an Orbiter is used to do an action than it's a complex operation.
Message exchange
Following diagram shows connections between various components of LinuxMCE's telecom.