What is FreeSWITCH
FreeSWITCH is a free and open-source application server for real-time communication, WebRTC, telecommunications, video, and Voice over Internet Protocol. Multiplatform, it runs on Linux, Windows, macOS, and FreeBSD. It is used to build PBX systems, IVR services, videoconferencing with chat and screen sharing, wholesale least-cost routing, Session Border Controller (SBC) and embedded communication appliances. It has full support for encryption, ZRTP, DTLS, SIPS. It can act as a gateway between PSTN, SIP, WebRTC, and many other communication protocols. Its core library, libfreeswitch, can be embedded into other projects. It is licensed under the Mozilla Public License (MPL), a free software license.
Features Of FreeSWITCH
Following are some FreeSWITCH features:
FreeSWITCH includes many modules that provide many telephony applications, such as conferencing, XML-RPC control of live calls, interactive voice response (IVR), speech synthesis and speech recognition, public switched telephone network (PSTN) interfaces for analogue and digital circuits, voice over IP protocols including Session Initiation Protocol (SIP), Verto, Skinny Client Control Protocol (SCCP), H.323, Extensible Messaging and Presence Protocol (XMPP), GoogleTalk, T.38 and others.
FreeSWITCH provides an application programming interface that exposes primitives for call control and IVR functionality. Applications may be written in the C language, C++, Python, Perl, Lua, JavaScript, Java and Microsoft .NET via Microsoft’s CLR or via Mono.
Call control applications can use the Event Socket, which is an Internet socket-based communications facility within FreeSWITCH providing a language-independent interface. The Event Socket Library (ESL) and “ESL-wrappers” are available for Erlang, JavaScript, Lua, Perl, PHP, Python, and Ruby.
As of FreeSWITCH version 1.4, support exists for WebRTC.
In FreeSWITCH 1.6 support was added for Video muxing and complete WebRTC, wss, dtls, SIP.js, Verto.js, Opus 48kHz to 8kHz, resilient up to 40% packet loss.
Some Other Features of Main FreeSWITCH 1.6 features:
WebRTC support
Centralized User/Domain Directory (directory.xml)
Nano Second CDR granularity
Call recording (In Stereo caller/callee left/right)
High-Performance Multi-Threaded Core engine
Configuration via cURL to your HTTP server (mod_xml_curl).
XML Config files for easy parsing.
Protocol Agnostic
ZRTP support for transparent RTP based key exchange and encryption
Configurable RFC 2833 Payload type
Inband DTMF generation and detection.
Software-based Conference (no hardware requirement)
Wideband Conferencing
Media / No Media modes
Proper ENUM/ISN dialing built-in
Detailed CDR in XML
Radius CDR
Subscription server
Shared Line Appearances
Bridged Line Appearances
Enterprise/Carrier-grade Eventing Engine. (XML Events, Name Value Events, Multicast Events)
Loadable File formats and streaming
Stream to and play from Shoutcast and Icecast
Multi-lingual Speech Phrase Interface
ASR/TTS support (native and via MRCP)
You can also see: Movie4k
FreeSWITCH and WebRTC support:
FreeSWITCH is a WebRTC Gateway, able to accept encrypted media from browsers, convert it, and exchange it with other communication networks, that use different codecs and encryptions, eg: PSTN, mobile carriers, legacy systems, etc. FreeSWITCH can be the gateway between SIP network and applications and browsers on desktops, tablets, and smartphones.
FreeSWITCH is a WebRTC Application Server, able to directly provide native services to browsers, like videoconferences, IVRs, Call Centers, without the use of any gateway or third party. FreeSWITCH can directly provide services through Secure WebSocket (WSS), SRTP, and DTLS, the native WebRTC protocols.
FreeSWITCH makes available an additional Signaling Plane because with Verto the browsers can initiate or receive a voice call or a video call in the easiest way, and they can chat, share screen, receive and send data in real time to back end applications. Verto is an alternative to XMPP or SIP in Javascript. FreeSWITCH can serve in parallel and concurrently the same application to clients that use signaling in SIP and Verto.