Difference between revisions of "How LinuxMCE telecom works"

From LinuxMCE
Jump to: navigation, search
m (Asterisk (package LinuxMCE-asterisk))
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
{| align="right"
 +
  | __TOC__
 +
  |}
 
[[Category:Telecom]]
 
[[Category:Telecom]]
 
[[Category:Programmer's Guide]]
 
[[Category:Programmer's Guide]]
Line 6: Line 9:
 
* Asterisk Management Portal http://amp.coalescentsystems.ca/ (now Free PBX)
 
* Asterisk Management Portal http://amp.coalescentsystems.ca/ (now Free PBX)
 
* asterisk http://www.asterisk.org/
 
* 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 submits AMP pages to create asterisk configurations for phones and phone lines.
+
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) ==
 
== [[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.  
 
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 [[LinuxMCE-asterisk]]) ==
+
== 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).
 
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.
 
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 a also listener which notifies Telecom_Plugin about certain events like Ring, Hangup and so on.
+
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]] ) ==
 
== asterisk (package [[asterisk-LinuxMCE]] ) ==
 
This is the real thing. This is the one which actually does everything.
 
This is the real thing. This is the one which actually does everything.
It's packaged as 'kitchen sink' to include
+
It's packaged as a 'kitchen sink' to include
 
* asterisk (voip server)
 
* asterisk (voip server)
 
* zaptel (digium cards support)
 
* zaptel (digium cards support)
Line 33: Line 36:
  
 
== [[LinuxMCE_telecom_features|Feature list]] ==
 
== [[LinuxMCE_telecom_features|Feature list]] ==
This is a short list of supported features. As far as we tested most of them really works.
+
This is a short list of supported features. As far as we tested most of them really work.
 
* hard phones plug&play
 
* hard phones plug&play
 
* easy phone line creation
 
* easy phone line creation
Line 56: Line 59:
 
== Message exchange ==
 
== Message exchange ==
 
Following diagram shows connections between various components of LinuxMCE's telecom.
 
Following diagram shows connections between various components of LinuxMCE's telecom.
[[Image:Asterisk_diagram.png]]
+
[[Image:Asterisk_diagram.png|500px]]

Latest revision as of 17:13, 17 May 2010

The LinuxMCE telecom is formed from several layers:

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. Asterisk diagram.png