Asterisk is an open-source software implementation of a private branch exchange (PBX). It allows companies and individuals to set up phone systems by converting a computer into a communications server.
Asterisk provides all the features you would expect from a PBX, such as call forwarding, voicemail, conference calling, and more. It can be used to build powerful custom solutions for telephony and unified communications.
Asterisk was created in 1999 by Mark Spencer and originally targeted Linux platforms. Over the years, support has been added for Windows, macOS, FreeBSD, and others.
It has an active open-source community contributing modules and add-ons. Asterisk is incredibly customizable – new functionality can be added via writing dial plan scripts or by loading modules. It supports a wide range of VoIP protocols, codecs, and integrations.
Overall, Asterisk is a hugely popular and capable open-source communications platform used by SMBs, enterprises, call centers, carriers, and hobbyists worldwide. Its open-source nature provides freedom, while still delivering an enterprise-grade PBX system.
History of Asterisk
Asterisk was created in 1999 by Mark Spencer as an open-source alternative to proprietary PBX systems.
At the time, Spencer was running a business called Linux Support Services and found existing PBX options too expensive.
He started Asterisk as a side project, aimed at Linux-based systems. The first public release was Asterisk 0.1 in October 1999. The name “Asterisk” was chosen because of the * symbol it uses for dial plan scripting.
In 2001, Digium was founded by Spencer as a commercial entity focused on Asterisk development and hardware. Digium sponsored Asterisk within the open-source community and sold telephony interface cards.
Over the next decade, Asterisk continued maturing with the open source community accelerating development. Digium also built an ecosystem of resellers, training, and support partners.
Key milestones include:
- 2002: Asterisk 1.0 released, the first stable version
- 2005: Asterisk@Home project launched for home PBX use
- 2008: Asterisk SCF project for cloud communications
- 2013: Asterisk 11 released with improved stability
- 2015: Asterisk 13 included WebRTC support
Today Asterisk is a mature, enterprise-ready platform used globally by companies, call centers, carriers, and developers. Digium continues sponsoring Asterisk’s development.
Architecture of Asterisk
Asterisk has a modular architecture that provides flexibility. Here are some key architectural components:
- Dialplan: This is essentially the “brains” of Asterisk, handling inbound and outbound calls. It uses scripts to match extensions and route calls.
- Applications: These are tasks that can be performed such as playing audio, reading text, and calling an external number. Hundreds are included.
- Modules: Optional modules add functionality like codecs, file formats, and PBX features. They extend capabilities.
- Channels: These handle the media streams from telephony interfaces and networks. Protocols like SIP and IAX are implemented as channel drivers.
- Codecs: Coders/decoders for transmitting media like audio. Asterisk supports many codecs from G.711 to G.722, Opus, and more.
- Bridging: The core function of connecting channels, allowing interaction between endpoints.
- Interfaces: Allow connectivity to telephony hardware, SIP providers, and telephony networks.
This modular approach lets developers quickly add new functions by leveraging the APIs and creating new dial plan applications, modules, and channels.
Key Features of Asterisk
Some of the main features and capabilities provided by Asterisk include:
- PBX Features: All standard PBX capabilities like caller ID, hold music, call transfer, park/pickup, automated attendants, ring groups, voicemail, etc.
- VoIP Protocols: SIP, IAX, and others are supported for connecting IP phones, SIP trunks, and bridges.
- Call Routing: Inbound and outbound calls can be flexibly routed based on the number dialed, source, time of day, etc.
- IVR: Build interactive voice response systems that present menus, gather input, and route calls.
- Voicemail: Personalized voicemail with mailboxes, greetings, and folders. Can integrate with email.
- Conferencing: Software-based conference bridges for 3-way calling up to large conferences.
- Remote Workers: Allows remote extensions and connectivity over VPNs, with features like call parking and pickup.
- Call Center Features: Built-in call queueing, hold time announcements, member status, retries, etc.
- Monitoring and Logging: Tools to monitor live calls and system status. Detailed CDR and logging.
- Third-Party Integration: APIs and protocols allow integration with CRMs, databases, billing systems, and more.
Benefits and Use Cases of Asterisk
Many benefits to Asterisk have led to its broad adoption:
- Cost savings – Since Asterisk is free open-source software, it can drastically reduce the cost of a PBX phone system. This makes it very popular with SMBs.
- No vendor lock-in – With proprietary PBXes, you’re locked into that vendor’s hardware and licensing. Asterisk uses open standards giving you choice.
- Customizable – Asterisk is highly flexible since it is open-source software. Tweaks and new features can be added to suit any need.
- Scalable – Asterisk can scale from a small office up to large multi-site enterprises with thousands of extensions.
- Reliable – With proper servers, Asterisk can deliver carrier-grade reliability. Redundancy features also improve resilience.
Some common use cases include:
- Small business PBX phone systems
- Departmental PBXs in large enterprises
- Call centers/contact centers
- Remote workers/telecommuting
- PBX replacement and upgrades
- VoIP gateways
- Conference calling bridges
- FAX servers
- Voice menus / IVRs
Overall, Asterisk excels in delivering robust, scalable, and cost-effective communications systems to businesses, integrators, developers, and hobbyists.
Getting Started with Asterisk
For developers or IT admins new to Asterisk, here are some tips on getting started:
- Review the Official Asterisk Documentation. Tons of details on installation, configuration, dialplan syntax, modules, and more.
- Try a FreePBX Distro – Distributions like FreePBX provide a GUI and simplify initial setup. Underneath it uses Asterisk.
- Install Asterisk on Linux – Use a Linux server or virtual machine to install Asterisk from the source or repository. CentOS is popular.
- Get a Softphone – Install a VoIP softphone on your computer to make test calls through Asterisk. Popular options are Zoiper, X-Lite, and Linphone.
- Follow Tutorials – Lots of blogs and guides provide step-by-step Asterisk tutorials for beginners. These help you learn by example.
- Learn Dialplan Scripting – Creating dialplan contexts/extensions in extensions. conf is key to routing calls and configuring PBX features.
- Use a VoIP Phone – Deploy a basic IP phone to make real calls via Asterisk. Polycom and Yealink have popular mid-range models.
- Join the Community – The Asterisk community on forums and Slack is very active. Fellow users provide advice as you learn.
The best way to start is to set up a test system and learn by experimenting. As you build up skills, you can tackle larger projects.
Asterisk Compared to Proprietary PBX Systems
How does open-source Asterisk differ from traditional closed-source PBX platforms?
- Cost – Asterisk is free open source, while traditional PBXes have expensive proprietary software licenses, hardware bundles, and ongoing support fees.
- Vendor Lock-In – With a traditional PBX you must use supported proprietary phones, trunks, and upgrades. Asterisk allows a mix and match of vendors.
- Scalability – Proprietary systems scale up to hundreds or thousands of users. Asterisk has been proven to scale up to tens of thousands.
- Customization – It’s hard to customize proprietary PBXes beyond admin menus. Asterisk is extremely customizable via coding mods, APIs, and 3rd party modules.
- Resilience – Commercial PBXes rely on redundant hot standby appliances for resilience. Asterisk has many redundancy strategies available, like redundant servers.
- Support – Closed source PBXes include technical support and software updates from the vendor. As open source, Asterisk relies on community support and your skills.
- Features – Traditional PBXes offer enterprise-grade capabilities out of the box like mobile integration, and contact centers. Asterisk offers building blocks to create customized features.
For most small businesses, Asterisk offers tremendous value compared to old-school PBX systems.
However larger enterprises may prefer the packaged capabilities, support, and scalability of commercial PBX platforms.
Frequently Asked Questions (FAQ)
Ques 1. What operating systems does Asterisk support?
Ans. Asterisk runs on a wide variety of operating systems including Linux distributions like CentOS, Debian, and RHEL; BSD variants like FreeBSD; Unix systems like Solaris; and even Windows Server. Linux is the most common deployment environment.
Ques 2. What programming languages is Asterisk written in?
Ans. The core of Asterisk is written in C for maximum performance. It also utilizes C++, Python, and Bash scripting. The dial plan configuration uses a custom syntax.
Ques 3. Can Asterisk integrate with CRM and contact center software?
Ans. Yes, one of Asterisk’s strengths is its ability to integrate with external systems through APIs and protocols.
Popular CRMs like Salesforce, Zoho, and Microsoft Dynamics integrate using CTI protocols like Asterisk CTI. Major contact center platforms also integrate directly with Asterisk.
Ques 4. Is Asterisk an all-in-one phone system solution?
Ans. Asterisk provides all the core PBX functionality for calls, routes, voicemail, IVRs, etc. But it does not provide end-user components like IP phones, softphones, or user management dashboards.
So commercial or open source add-ons are required to deliver a full phone system appliance.
Popular all-in-one distributions like Elastix, FreePBX, and Vicidial combine Asterisk with end-user tools.
Ques 5. What are some key disadvantages or challenges with Asterisk?
Ans. Being open-source software, Asterisk relies on community support and publicly available documentation rather than vendor technical assistance.
Asterisk also requires skilled Linux administration and VoIP networking know-how for larger deployments.
The highly customizable nature can lead to complex environments that are hard to maintain over time.