Il progetto FreeSWITCH è stato annunciato per la prima volta nel gennaio 2006 alla conferenza ETEL di O'Reilly Media.
Nel giugno 2007 FreeSWITCH è stato selezionato da Truphone per essere implementato nei propri servizi e nell'agosto 2007 Gaboogie ha annunciato di aver selezionato FreeSWITCH come piattaforma per le conferenze.
La prima versione ufficiale di FreeSWITCH 1.0.0 (Phoenix) è stata rilasciata al pubblico il 26 maggio 2008. La patch 1.0.1 è stata rilasciata il 24 luglio 2008.
Al ClueCon del 2012 Anthony Minessale ha annunciato il rilascio di FreeSWITCH 1.2.0 e che il team di sviluppo di FreeSWITCH avrebbe creato un ramo software stabile (versione 1.2) e uno di sviluppo (versione 1.3) separati.
FreeSWITCH 1.4, rilasciato all'inizio del 2014, è la prima versione che supporta il protocollo SIP su Websocket e WebRTC.
FreeSWITCH 1.6 ha aggiunto il supporto per la transcodifica video e le videoconferenze, il protocollo Verto per WebRTC e tutti i codec e gli standard WebRTC.
FreeSWITCH 1.8 è stato rilasciato al ClueCon del 2018 con ulteriori aggiornamenti e miglioramenti alla stabilità del progetto.
SignalWire Inc è stata fondata nel 2018 per fornire servizi di telecomunicazione cloud commerciale utilizzando un nucleo elastico FreeSWITCH e fornire uno sponsor commerciale permanente per il progetto open source controllato dai fondatori di FreeSWITCH. La società ha successivamente acquisito la FreeSWITCH Solutions.
Design
Secondo il lead designer, Anthony Minessale, FreeSWITCH è concepito per essere un softswitch costruito su un core compatto, pilotato da una macchina a stati. Gli obiettivi dichiarati del progetto includono stabilità, scalabilità e astrazione.
Per ridurre la complessità della codebase, FreeSWITCH utilizza librerie software disponibili gratuitamente che eseguono alcune delle funzioni necessarie. Alcune dipendenze sono:
Non tutte queste dipendenze software sono necessarie per compilare l'applicazione principale freeswitch, ma sono dipendenze di vari moduli esterni, come i codec. FreeSWITCH è un'applicazione modulare, in cui i moduli possono estenderne la funzionalità, ma il livello di astrazione impedisce la dipendenza tra moduli. L'obiettivo è garantire che il caricamento di un modulo non sia necessario ai fini del caricamento di un altro.
Funzionalità
FreeSWITCH include diversi moduli che forniscono una moltitudine di applicazioni di telefonia come:
FreeSWITCH fornisce un'API che espone le primitive per il controllo delle chiamate e la funzionalità IVR. Le applicazioni che utilizzano le API possono essere scritte in linguaggio C, C++, Python, Perl, Lua, JavaScript, Java e Microsoft.NET tramite Microsoft CLR o tramite Mono.
Le applicazioni di controllo delle chiamate possono utilizzare l'Event Socket, una funzione di comunicazione basata su un socket Internet all'interno di FreeSWITCH che fornisce un'interfaccia indipendente dal linguaggio. La Event Socket Library (ESL) e gli "ESL-wrapper" sono disponibili per Erlang, JavaScript, Lua, Perl, PHP, Python e Ruby.
A partire dalla versione 1.4 FreeSWITCHsupporta il protocollo WebRTC.
In FreeSWITCH 1.6 è stato aggiunto il supporto per il video muxing ed è stato completato il supporto di WebRTC, wss, dtls, SIP.js, Verto.js, Opus 48kHz a 8kHz, resiliente fino al 40% di perdita di pacchetti.
Supporto ZRTP per lo scambio di chiavi e la crittografia trasparenti basati su RTP
Tipo di payload RFC 2833 configurabile
Generazione e rilevamento di DTMF in banda.
Conferenza basata su software (nessun requisito hardware)
Conferenze a banda larga
Modalità Media / No Media
Composizione corretta ENUM / ISN integrata
CDR dettagliato in XML
Radius CDR
Server di sottoscrizione
Presenze di linee condivise
Presenze di linee con ponte
Motore Eventing di livello Enterprise / Carrier. (Eventi XML, Eventi valore nome, Eventi multicast)
Formati di file caricabili e streaming
Trasmetti in streaming e riproduci da Shoutcast e Icecast
Interfaccia per frasi vocali multilingue
Supporto ASR / TTS (nativo e tramite MRCP)
Funzionalità IP / PBX di base
Operatore automatizzato
Suonerie personalizzate (Early Media)
Supporto XML-RPC
CDR di più formati supportati
SQL Engine fornisce la persistenza della sessione
Isolamento del filo
Parallel Hunting
Serial Hunting
Supporto WebRTC
FreeSWITCH è un gateway WebRTC, in grado di accettare media crittografati dai browser, convertirli e scambiarli con altre reti di comunicazione, che utilizzano diversi codec e crittografie, ad esempio: PSTN, operatori di telefonia mobile, sistemi legacy, ecc. FreeSWITCH può essere il gateway tra la rete SIP e le applicazioni e i browser su desktop, tablet e smartphone.
FreeSWITCH è un WebRTC Application Server, in grado di fornire direttamente servizi nativi ai browser, come videoconferenze, IVR, Call Center, senza l'ausilio di alcun gateway o di terze parti. FreeSWITCH può fornire direttamente servizi tramite Secure WebSocket (WSS), SRTP e DTLS, i protocolli WebRTC nativi.
FreeSWITCH rende disponibile un Piano di Segnalazione aggiuntivo perché con Verto i browser possono avviare o ricevere una chiamata vocale o una videochiamata nel modo più semplice, e possono chattare, condividere lo schermo, ricevere e inviare dati in tempo reale alle applicazioni di back end. Verto è un'alternativa a XMPP o SIP in Javascript. FreeSWITCH può servire in parallelo e contemporaneamente la stessa applicazione ai client che utilizzano la segnalazione in SIP e Verto.
Supporto per videoconferenze
FreeSWITCH è sempre stata una potente piattaforma per le conferenze, nata molti anni fa come bridge per conferenze audio estremamente scalabile. In una svolta al ClueCon 2015 a Chicago, Illinois, il creatore di FreeSWITCH Anthony Minessale II ha annunciato il supporto per la transcodifica video, il missaggio, la manipolazione e la funzionalità Multipoint Control Unit (MCU). FreeSWITCH ora ha le funzionalità di videoconferenza più avanzate e mature:
Supporto e transcodifica di più codec video
Layout video multipli
Lo schermo si divide
Picture in picture
Condivisione dello schermo
Sovrapposizione video (didascalie, loghi e così via)
Mixaggio video
Effetti video e manipolazione in tempo reale
Chroma-Key (video che mixa uno sfondo)
Partecipanti SIP, WebRTC, VERTO, ISDN
Codec supportati
FreeSWITCH supporta una varietà di codec audio e video:
G.723.1, H263 e H264 sono supportati in modalità pass-through. Poiché i dati compressi grezzi vengono trasmessi tra i chiamanti senza alcuna elaborazione, ciò consente il supporto per alcuni codec che non possono essere forniti gratuitamente a causa di brevetti o altri problemi di licenza.
Il software supporta schede di transcodifica hardware, come quelle prodotte da Sangoma. Questi implementano i codec nell'hardware, riducendo l'utilizzo della CPU del server. Alcuni di questi codec sono dotati di licenza completa, fornendo un'alternativa alle opzioni pass-through sopra.
Protocolli supportati
SIP con mod_sofia
Trasporti UDP, TCP, SCTP e TLS per la piena conformità SIP
Trasporti xiWS e WSS per la piena conformità WebRTC
SIP v.2.0 (RFC 3261)
Supporto IPv6
Timer di sessione SIP
Timer RTP
RFC 3263 (SRV e NAPTR)
RFC 3325
RFC 4694
SRTP tramite SDES (funziona con Polycom, Snom, Linksys e Grandstream)
Registrazione SIP cieca
Supporto STUN
Buffer jitter
Supporto NAT
Registrazioni SIP distribuite
Negoziazione codec tardiva
Più registrazioni SIP per account utente
Multitenancy - Più UA SIP
SIP reinvita
Può agire come SBC (Session Border Controller)
Gestisci presenza
SIP / SEMPLICE (può passare ad altri protocolli di chat)
Supporto per cercapersone multicast SIP per Linksys e Snom
Supporto interfono / risposta automatica
Funzioni di chiamata come Chiamata in attesa (Re-INVITE), Trasferimento cieco (RIFERIMENTO), Deviazione di chiamata (302), ecc.
Debian Linux è il sistema operativo preferito in quanto fornisce il più ampio supporto nelle sue librerie necessario per eseguire FreeSWITCH senza vincoli di licenza
FreeSWITCH occupa uno spazio tra gli switch puri che instradano semplicemente le chiamate, come Kamailio e OpenSIPS, e quelli che forniscono principalmente funzionalità PBX o IVR, come Asterisk e i suoi derivati. FreeSWITCH fornisce elementi costitutivi da cui è possibile creare applicazioni, come un PBX, un sistema di posta vocale, un sistema di conferenza o una scheda telefonica, utilizzando una qualsiasi delle lingue supportate.
Prodotti derivati
FreeSWITCH è un componente fondamentale in molti prodotti commerciali PBX in a box e progetti open-source. Alcuni dei prodotti commerciali sono bundle hardware e software, per i quali il produttore supporta e rilascia il software come open source.