FreeSWITCH

From Wikipedia, the free encyclopedia
  (Redirected from Freeswitch)
Jump to: navigation, search
FreeSWITCH
FreeSWITCH Logo
Original author(s) Anthony Minessale
Developer(s) Many contributors
Stable release 1.2.7 (March 6, 2013; 61 days ago (2013-03-06)) [±]
Development status Active
Operating system Unix-like, Windows, Sun Solaris, Mac OS X
Platform Cross-platform
Available in multi-lingual
Type VoIP software, Softswitch
License Mozilla Public License (MPL)
Website FreeSWITCH

FreeSWITCH is free and open source communications software for the creation of voice and messaging products. It is licensed under the Mozilla Public License (MPL), a free software license. Its core library, libfreeswitch, is capable of being embedded into other projects, as well as being used as a stand-alone application.

Contents

[edit] History

The FreeSWITCH project was first announced in January 2006 at O'Reilly Media's ETEL Conference.[1] In June 2007, FreeSWITCH was selected by Truphone for use,[2] and in August 2007, Gaboogie announced that it selected FreeSWITCH as its conferencing platform.[3]

FreeSWITCH's first official 1.0.0 release (Phoenix) was on May 26, 2008.[4] A minor 1.0.1 patch release came out on July 24, 2008.[5] Current release is 1.2.1 which came out on 14 August 2012. At ClueCon 2012 Anthony Minessale announced[6] the release of FreeSWITCH version 1.2.0[7] and that the FreeSWITCH development team had adopted separate stable (version 1.2) and development (version 1.3) branches.

[edit] Design

According to the lead designer, Anthony Minessale,[8] FreeSWITCH is intended to be a softswitch that is built on top of a solid core, driven by a state-machine.[9] The stated goals of the project include stability, scalability, and abstraction.

To eliminate complexity, FreeSWITCH uses freely available software libraries that perform needed functions. Some dependencies are:[10]

Not all of these software dependencies are required to build the core freeswitch application, but are dependencies of various external modules, such as codecs. FreeSWITCH is a modular application, in which modules can extend the functionality but the abstraction layer prevents inter-module dependency. The goal is to ensure that one module is not required to load another.[citation needed]

[edit] Features

FreeSWITCH includes many modules which provide applications by default including conferencing, XML-RPC control of live calls, Interactive voice response (IVR), TTS/ASR (text to speech/automatic speech recognition), Public switched telephone network (PSTN) interconnection ability supporting both analogue and digital circuits, Voice over IP protocols including SIP, SCCP, H.323, XMPP, GoogleTalk, t.38 and others.[11]

Applications using the FreeSWITCH library can be written in C/C++, Python, Perl, Lua, JavaScript, Java and Microsoft .NET via Microsoft's CLR or via Mono. In each case, FreeSWITCH exposes primitives for call control and IVR functionality for the programmer to use.[12]

Call control applications can use the Event Socket, which is a socket-based connection to the FreeSWITCH software. Any programming language or software that is capable of communicating via sockets can be used to control activity on the FreeSWITCH server. FreeSWITCH also comes with an Event Socket Library (ESL) and "ESL-wrappers" for Erlang, JavaScript, Lua, Perl, PHP, Python, and Ruby. The wrappers are libraries that abstract away some of the mundane aspects of socket-level programming.

[edit] Codec Support

FreeSWITCH supports a variety of audio codecs:[13]

FreeSWITCH supports several video codecs:[15]

Some codecs are implemented in pass-through mode only. This means that the raw compressed data is passed through between callers, without any processing. This allows some codecs to be supported which cannot be provided freely due to patent licensing issues, since the data is never encoded or decoded. However, these codecs cannot be transcoded (i.e. both callers must use the same codec when using a pass-through codec, and some recording and playback functions such as IVR are not supported).

The software supports hardware transcoding cards, such as produced by Sangoma.[16] These implement codecs in hardware, reducing the CPU usage of the server. Some of these codecs are fully licensed, providing an alternative to the passthrough options above.

[edit] Operating and build system support

[edit] Issues

  • BRI support is currently limited to Sangoma interface cards[17]

[edit] Comparison with other telephony software

FreeSWITCH occupies a space between pure switches which simply route calls, such as GnuGK and SER, and those which are primarily PABXes or IVRs, such as Asterisk and its derivatives. FreeSWITCH provides building blocks from which applications – such as a PABX, a voicemail system, a conferencing system or a calling card – can be built using any of the supported languages.[citation needed]

[edit] Derived products

FreeSWITCH is a core component in many PABX in a box commercial products and open-source projects. Some of the commercial products are hardware and software bundles, for which the manufacturer supports and releases the software as open source.

Examples are the Barracuda Networks CudaTel VOIP PBX series and the Gemeinschaft_(PBX).

[edit] See also


[edit] References

  1. ^ "Beyond Asterisk, The Future of Telephony. What's Next?". O'Reilly Media. 2006-01-25. Retrieved 2007-10-06. 
  2. ^ "Truphone Selects FreeSWITCH and TelcoBridges to Enable VoIP Calls over WiFi on Mobile Phones" (Press release). Truphone. June 5, 2007. 
  3. ^ "Gaboogie Embraces Open Source For New Mobile Group Calling and Conference Calling Solution". Gaboogie. 2007-08-03. Retrieved 2007-10-06. 
  4. ^ "FreeSWITCH 1.0.0 "Phoenix" Released!". 
  5. ^ "FreeSWITCH 1.0.1 "Phoenix" Released!". 
  6. ^ "ClueCon 2012 Keynote Address". 
  7. ^ "It's Official! FreeSWITCH 1.2 Has Been Released.". 
  8. ^ Gallagher, Kathleen (October 18, 2009). "Flipping the FreeSWITCH - Brookfield is home to revolutionary software". Milwaukee Journal Sentinel. 
  9. ^ "An Interview with the Creator of FreeSWITCH". O'Reilly Media. July 25, 2006. 
  10. ^ A complete list of dependencies can be found in the dependencies page section of the FreeSWITCH documentation.
  11. ^ "Modules". FreeSWITCH Documentation Wiki. 2007-10-08. Retrieved 2007-10-07. 
  12. ^ "Languages for Call Control". FreeSWITCH Documentation Wiki. 2007-10-08. Retrieved 2007-10-07. 
  13. ^ http://wiki.freeswitch.org/wiki/Codecs
  14. ^ http://www.freeswitch.org/node/235
  15. ^ http://wiki.freeswitch.org/wiki/Codecs
  16. ^ http://wiki.sangoma.com/sangoma-media-transcoding#sng_freeswitch_usage
  17. ^ FreeSWITCH Wiki FAQ

[edit] External links