Welcome To FreeSWITCH
The World's First Cross-Platform Scalable FREE Multi-Protocol Soft Switch
FreeSWITCH is a scalable open source cross-platform telephony platform designed to route and interconnect popular communication protocols using audio, video, text or any other form of media. It was created in 2006 to fill the void left by proprietary commercial solutions. FreeSWITCH also provides a stable telephony platform on which many telephony applications can be developed using a wide range of free tools.
FreeSWITCH was originally designed and implemented by Anthony Minessale with the help of Brian West and Michael Jerris. All 3 are former developers of the popular Asterisk open source PBX. The project was initiated to focus on several design goals including modularity, cross-platform support, scalability and stability. Today, many more developers and users contribute to the project on a daily basis.
We support various communication technologies such as Skype, SIP, H.323 and GoogleTalk making it easy to interface with other open source PBX systems such as sipXecs, Call Weaver, Bayonne, YATE or Asterisk.
FreeSWITCH supports many advanced SIP features such as presence/BLF/SLA as well as TCP TLS and sRTP. It also can be used as a transparent proxy with and without media in the path to act as a SBC (session border controller) and proxy T.38 and other end to end protocols.
FreeSWITCH supports both wide and narrow band codecs making it an ideal solution to bridge legacy devices to the future. The voice channels and the conference bridge module all can operate at 8, 12, 16, 24, 32 or 48 kilohertz and can bridge channels of different rates. The G.729 codec is also available under a commercial license.
FreeSWITCH builds natively and runs standalone on several operating systems including Windows, Max OS X, Linux, BSD and Solaris on both 32 and 64 bit platforms.
FreeSWITCH supports FAX, both over audio and T.38, and can gateway between the two.
Our developers are heavily involved in open source and have donated code and other resources to other telephony projects including openSER, sipXecs, The Asterisk Open Source PBX and Call Weaver.
a Spec Sheet is available on our Wiki.
These are the applications that have been contributed by members of the FreeSWITCH™ community have donated back to the Asterisk community, where many of them originated from. Most of these modules were written by the head FreeSWITCH™ developer, Anthony.
Asterisk 1.2 Applications
app_dynagoto Dynamic goto. This will load a config off disk if its changed. Useful for larger installations where you load smaller bits of config when needed.
app_confcall [config] Multi-Feature conference application (rewrite of app_meetme)
app_cepstral provides direct access to the cepstral 4.0 swift api allowing direct streaming of tts audio without needing to write out to a temporary file first.
chan_woomera The Woomera protocol, designed by Craig Southeren of OpenH323 fame, makes it possible to put your voice over ip system in one server/process and your pbx in another and connect them with a simple raw-linear-over-udp protocol. chan_woomera is an asterisk channel_driver designed to interface the Asterisk PBX with woomera. Currenty this code is working but considered beta. Woomera currently only supports H.323 but it should soon support the OPAL VOIP abstraction layer which will allow it to speak many other protocols. The number of protocols supported by the Woomera server is irrelivant to chan_woomera which will support anything Woomera supports because of it's thin-client-like design.
res_perl enables you to embed perl into Asterisk® giving you the power of perl for dialplans and applications without the overhead of AGIs.
res_sqlite3 gives you the ability to use sqlite anywhere Asterisk® uses databases, this can include the dbget/put commands as well as CDR records and other places
app_backticks lets you execute a shell command and capture it's output like backticks do in most languages. It is available as both a function and an app
app_changrab lets you take over a channel or originate a channel from the CLI
app_distributor allows you to distribute your load for applications across multiple Asterisk® boxes
app_intercept lets you grab a live channel before its answered by the intended target and redirect it to someone else
app_valetparking for Asterisk® 1.2 is a better call parking subsystem enabling you to have multiple 'parking lots' to place calls into, and better control on receiving calls from
cdr_shell reads /etc/asterisk/cdr.conf and looks for the [cdr_shell] category. Each instance of the following is parsed.
path => /path/to/script
These paths are registered and subsequently executed when a cdr is posted. This allows you to hook up a gateway script that will have the cdr data in its argv 0-18
play-fifo will create if necessary, open and listen on a fifo for slinear audio and delivers it to STDOUT. If STDOUT is blocking, it discards the data. The idea is that you would use it in a custom class in res_musiconhold
app_contest allows you to easily run a 'radio station contest line' where you can specify a certain caller number and they will be connected, but all other callers will be rejected with some message
app_event lets you fire a manager event from the dialplan
app_rss allows you to easily create an IVR system of RSS news feeds. There is a perl script rss2ivr.pl that enables you to quickly and easily get feeds, parse them and create sound files via a TTS engine
format_base64 lets you read or write to a MIME encoded email message as though its audio. Play a MIME encoded voicemail, write a MIME encoded email by recording live audio
res_config_curl enables you to provision your Asterisk® box from a web based CGI application, rather than using static configs or realtime. This allows for a load balanced webserver to allow for failover and higher call capacities across your Asterisk® boxes
Asterisk 1.4 Applications
app_valetparking for Asterisk® 1.4 is a better call parking subsystem enabling you to have multiple 'parking lots' to place calls into, and better control on receiving calls from
app_changrab lets you take over a channel or originate a channel from the CLI (ported to 1.4 by Clod Patry)