Asterisk (PBX)

From Wikipedia, the free encyclopedia

Jump to: navigation, search
Asterisk
Developed by Digium
Latest release 1.6.0.6 / February 23, 2009
Written in C
Operating system Cross-platform
Type Voice over Internet Protocol
License GNU General Public License / Proprietary
Website http://www.asterisk.org/

Asterisk is a software implementation of a telephone private branch exchange (PBX) originally created in 1999 by Mark Spencer of Digium. Like any PBX, it allows attached telephones to make calls to one another, and to connect to other telephone services including the public switched telephone network (PSTN) and Voice over Internet Protocol (VoIP) services. Its name comes from the asterisk symbol, "*".

Asterisk is released under a dual license model, using the GNU General Public License (GPL) as a free software license and a proprietary software license to permit licensees to distribute proprietary, unpublished system components.

Due to free licensing of the software, hundreds of community programmers have contributed features and functionality and have reported and corrected bugs. Originally designed for Linux, Asterisk now also runs on a variety of different operating systems including NetBSD, OpenBSD, FreeBSD, Mac OS X, and Solaris. A port to Microsoft Windows is known as AsteriskWin32[1].

Contents

[edit] Features

The Asterisk software includes many features available in proprietary PBX systems: voice mail, conference calling, interactive voice response (phone menus), and automatic call distribution. Users can create new functionality by writing dial plan scripts in several of Asterisk's own extensions languages, by adding custom loadable modules written in C, or by implementing Asterisk Gateway Interface (AGI) programs using any programming language capable of communicating via the standard streams system (stdin and stdout) or by network TCP sockets.

To attach traditional analogue telephones to an Asterisk installation, or to connect to PSTN trunk lines, the server must be fitted with special hardware. Digium and a number of other firms sell PCI cards to attach telephones, telephone lines, T1 and E1 lines, and other analog and digital phone services to a server.

Perhaps of more interest to many deployers today, Asterisk also supports a wide range of Video[2] and Voice over IP protocols, including SIP, MGCP and H.323. Asterisk can interoperate with most SIP telephones, acting both as registrar and as a gateway between IP phones and the PSTN. Asterisk developers have also designed a new protocol, Inter-Asterisk eXchange (IAX2), for efficient trunking of calls among Asterisk PBXes, and to VoIP service providers who support it. Some telephones support the IAX2 protocol directly (see Comparison of VoIP software for examples).

By supporting a mix of traditional and VoIP telephony services, Asterisk allows deployers to build new telephone systems, or gradually migrate existing systems to new technologies. Some sites are using Asterisk servers to replace proprietary PBXes; others to provide additional features (such as voice mail or voice response menus) or to reduce costs by carrying long-distance calls over the Internet (toll bypass).

VoIP telephone companies can, as an option, support Asterisk as a user agent or trunked connection with the IAX2 or SIP trunking protocols along with ATAs and other software user agents.

Asterisk was one of the first open source PBX software packages, of which there are now many.[3]

In addition to VoIP protocols, Asterisk supports many traditional circuit-switching protocols such as ISDN and SS7. This requires appropriate hardware interface cards supporting such protocols, marketed by third-party vendors. Each protocol requires the installation of software modules such as Zaptel, Libpri, Libss7, chanss7, wanpipe and others. With these features, Asterisk provides a wide spectrum of communications options.

[edit] Configuration

To configure Asterisk into an operational system, the administrator must:

  • create channels/devices that allow Asterisk to communicate through a voice path that uses that channel and/or devices. These can be VoIP, or TDM, or analogue telephony devices.
  • compose a dial plan, written in the Asterisk control language, to express the algorithm or control flow Asterisk uses to respond when calls are presented to it over these channels. Asterisk can be used for many specific applications and a customized dial plan has to be created specifically for each purpose, such as the functionality of a PBX. Asterisk is thus a 'construction kit' for building PBXs, rather than a PBX in itself, as is commonly thought.

Asterisk is controlled by editing a set of configuration files. One of these, extensions.conf, contains the dialplan and controls the operational flow of Asterisk. A native scripting language is used to define the elements of process control, namely named variables, procedural macros, contexts, extensions, and actions. A context groups all the valid destination numbering codes which apply to a set of channels on which incoming (to Asterisk) calls can be presented. These numbering codes, called "extensions" (even though they often are not) are the starting points for the scripts which instruct Asterisk how to process calls made to those numbers within that context.

To clarify: contexts define the source of a call, and extensions define its destination.

Because each channel declares a context, the dial plan restricts and permits which extensions and facilities its device may access. Extensions consist of possibly multiple steps of execution, each performing either logical operations, directing program flow, or executing one of the many included applications available in Asterisk.

Applications are loadable modules that perform specialized operations, such as dial a telephone number or another internal extension (app_dial), perform conferencing services (app_meetme), or handle the operations of voice mail (app_voicemail). The plethora of applications available provide a unique capability and tool set to formulate algorithms that can perform a large array of different, customized telephony scenarios. Applications control the Asterisk core functions through a set of internal operation primitives, that are organized in an extensible fashion through a modular architecture and application programming interfaces (APIs).

Programming an Asterisk system can also be accomplished via separate, external applications using the Asterisk Gateway Interface. The Asterisk Gateway Interface (AGI) is a software interface and communications protocol for inter-process communication with Asterisk. In this, external, user-written programs, are launched from the Asterisk dial plan via pipes to control telephony operations on its associated control and voice channels. It is similar to the CGI feature of web servers in that any language can be used to write the external program which communicates with Asterisk via the standard streams, stdin and stdout.

There are several graphical user interfaces (GUIs) for Asterisk. These interfaces allow administrators to view, edit, and change various aspects of Asterisk via a web interface. As of version 1.4, a GUI labeled "asterisk-gui" is being developed alongside Asterisk by Digium. There are other GUIs, such as FreePBX. Other attempts to simplify Asterisk installation have been made, trixbox (formerly Asterisk at home (A@H)) is a popular distribution of Asterisk that includes Asterisk and FreePBX. There is also a free downloadable version - PBX in a Flash (PIAF).

[edit] Regional versions

While initially developed in the United States, Asterisk has become a popular VOIP PBX worldwide due to its free, open source licensing, open design, extensibility, and excellent feature set. As a result, the American-English female voice prompts for the Interactive voice response and voice mail features of Asterisk have been re-recorded by various developers in many different languages. Additionally, Asterisk voice sets in different languages, dialects and genders are offered for commercial sale.

[edit] Development

Major Releases:

  • 1.0 - Released on 23 September 2004[4]
  • 1.2 - Released on 15 November 2005[5]
  • 1.4 - Released on 26 December 2006[6]
  • 1.6 - Released on January 18, 2008[7]

[edit] See also

[edit] References

  1. ^ "Asterisk Win32 website". http://www.asteriskwin32.com/. Retrieved on 2009-02-23. 
  2. ^ "Video support in Asterisk". Asterisk.org. http://www.asterisk.org/doxygen/1.4/AstVideo.html. Retrieved on 2009-02-23. 
  3. ^ VoIP Now (2007-04-16). "74 Open Source VoIP Apps & Resources". http://www.voipnow.org/2007/04/74_open_source_.html. Retrieved on 2007-12-22. 
  4. ^ "Asterisk 1.0 released". TMCnet. September 23, 2004. http://blog.tmcnet.com/blog/tom-keating/voip/asterisk-10-released.asp. Retrieved on 2009-03-26. 
  5. ^ Keating, Tom (November 16, 2005). "Asterisk 1.2 released". TMCnet. http://blog.tmcnet.com/blog/tom-keating/asterisk/asterisk-12-released.asp. Retrieved on 2009-03-26. 
  6. ^ "Asterisk 1.4.0 released". Asterisk.org. December 20, 2006. http://www.asterisk.org/node/48266. Retrieved on 2009-03-26. 
  7. ^ "Asterisk 1.6.0-beta1 released". Asterisk.org. January 18, 2008. http://www.asterisk.org/node/48445. Retrieved on 2009-03-26. 

[edit] External links

Personal tools