Chapter 10. Advanced Features and Further Reading
There are two general categories of applications that can utilize FreeSWITCH—ones that are built in C as modules that live inside FreeSWITCH, and ones which control or manage FreeSWITCH externally. Both topics will be covered briefly in this chapter.
FreeSWITCH contains a variety of application modules that provide functionality and features that direct calls and otherwise make switching decisions while calls are in progress. These modules range from Caller ID lookup modules to real-time billing modules to multi-party conferencing modules. Modules can be used with each other to enrich the general Dialplan application set, to supervise calls, or to provide other functionality.
In addition, an entire community of open source FreeSWITCH applications has grown to provide various software programs that can fully (or partially) manage FreeSWITCH.
In this chapter, we'll presume you already have some basic understanding of how FreeSWITCH operates. We...
FreeSWITCH includes a powerful built-in multi-user conferencing module mod_conference
, which allows the mixing of audio channels between callers in a multi-user audio conferencing system. This system also allows for full control of all audio mixing and caller interaction features, such as detection of touch-tones, management of send and receive audio paths per channel, volume controls, gain controls, and more. You can create as many conferences as you like, as long as there still are free system resources (that is, memory, CPU cycles, and so forth) left.
mod_conference
is configured in the conference section of the XML files. This is generally located in the autoload_configs/conference.conf.xml
file. The configuration defines how conferences behave, through a series of profiles. These profiles can be applied to conferences when they are created via the Dialplan.
The conference configuration file is divided into several sections, each with its own set of...
mod_nibblebill
is a credit/debit module for FreeSWITCH. The module was initially written by Darren Schreiber to fill the gaps of a professional grade trunking system that lacked the ability to detect fraud real-time. Its purpose is to allow real-time debiting of credit or cash from a database while calls are in progress. Darren had the following goals:
Debit credit/cash from accounts real-time
Allow for billing at different rates during a single call
Allow for warning callers when their balance is low (via audio, in-channel)
Allow for disconnecting or re-routing calls when balance is depleted
Allow billing functions listed above to operate with multiple concurrent calls
mod_nibblebill
can be used in a variety of use cases, some of which are listed below.
You can allow people to put cash into an account and "nibble" away at it. In addition, when callers have almost depleted their account, a tone or other message can play (or another action can occur...
mod_xml_curl
can be used to dynamically control the behavior of FreeSWITCH. mod_xml_curl
hooks into FreeSWITCH at times when configuration files or sections of configuration files are requested. Instead of retrieving the data for those requested configuration options from the in-memory XML structure, mod_xml_curl
will look to see if the configuration category matches a known mod_xml_curl
category and will then attempt to retrieve the configuration data, real-time, from an external source. By using mod_xml_curl
you can provide configurations to multiple instances of FreeSWITCH without having to duplicate the configuration, and the configurations can be served up by any software program that can generate XML. The software does not even need to be on the same server that FreeSWITCH is on. This solution is very helpful when building out robust, multi-server platforms.
mod_xml_curl
can be used to get any information that would normally be in freeswitch.xml
. XML configuration section...
While most users of FreeSWITCH will use SIP (and thus mod_sofia
), there are other ways for FreeSWITCH to communicate with the world. Here are brief descriptions of three methods that you may wish to investigate further.
Not everyone has the budget to buy hardware or services to connect to the Skype and GSM (Global System for Mobile Communications) networks, especially when first learning a new technology. FreeSWITCH has an alternative to offer to those willing to do a little work: a pair of endpoints (that is, channel drivers) that allow inbound and outbound voice calls and messaging (chatting, SMSs) in the cheapest possible way.
Both mod_skypopen
and mod_gsmopen
support full integration with all the FreeSWITCH features, have CLI commands for diagnostic and control, full events interaction, and can be used in the same way as the Sofia SIP workhorse endpoint module.
Both the mod_skypopen
and mod_gsmopen
modules have the same general structure: they...
Configuration tools and related projects
The
FreeSWITCH community has grown tremendously over the past few years with many different people using the software for a variety of purposes. These purposes range from running small home PBXs to large telephone companies. Along the way a variety of people have created different bits of code that allow you to save time or allow FreeSWITCH to operate in unique ways. Contributions range from complete open-source GUIs and frameworks to small single-purposes libraries. We briefly discuss some of these items below.
There are a number of Web Graphical User Interfaces (GUIs) available for FreeSWITCH today. Some are graphical tools that generate XML configuration files while others take the approach of abstracting the switch configuration completely and providing simplified but flexible user interfaces to end-users. We cover some of the more popular ones below.
Note that choosing the right PBX is really a personal decision based on your preferences...
FreeSWITCH provides a powerful toolset for creating rich applications. The modules bundled with FreeSWITCH today are an early example of what you can do with the powerful internal APIs that are available. In addition, a thriving community of FreeSWITCH enthusiasts is taking the software development available to the next level. Expect many hosted, cloud and premise-based solutions to thrive in the coming years for various purposes in the VoIP and communications space, based on the FreeSWITCH core.