FreeSWITCH es un servidor de aplicaciones gratuito y de código abierto para comunicación en tiempo real , WebRTC , telecomunicaciones , video y Voz sobre Protocolo de Internet ( VoIP ). Multiplataforma, se ejecuta en Linux , Windows , macOS y FreeBSD . Se utiliza para construir sistemas PBX , servicios IVR , videoconferencia con chat y pantalla compartida , enrutamiento mayorista de menor costo , controlador de borde de sesión (SBC) yAparatos de comunicación integrados . Tiene soporte completo para encriptación , ZRTP , DTLS , SIPS . Puede actuar como puerta de enlace entre PSTN , SIP , WebRTC y muchos otros protocolos de comunicación . Su biblioteca principal, libfreeswitch, puede integrarse en otros proyectos. Tiene licencia de Mozilla Public License (MPL), una licencia de software libre .
Autor (es) original (es) | Anthony Minessale |
---|---|
Desarrollador (es) | Diferentes contribuyentes |
Lanzamiento estable | 1.10.6 (25 de marzo de 2021 [1] ) [±] |
Repositorio | |
Escrito en | C |
Sistema operativo | Linux , [2] macOS , [3] Solaris , [4] FreeBSD , [5] NetBSD , [6] OpenBSD , [7] DragonFly BSD , [8] Windows [9] |
Plataforma | Multiplataforma |
Disponible en | plurilingüe |
Tipo | Software de VoIP , Softswitch |
Licencia | Licencia pública de Mozilla (MPL) |
Sitio web | freeswitch .com |
Historia
El proyecto FreeSWITCH se anunció por primera vez en enero de 2006 en la Conferencia ETEL de O'Reilly Media . [10] En junio de 2007, Truphone seleccionó FreeSWITCH para su uso, [11] y en agosto de 2007, Gaboogie anunció que había seleccionado FreeSWITCH como su plataforma de conferencias. [12]
El primer lanzamiento oficial 1.0.0 de FreeSWITCH (Phoenix) fue el 26 de mayo de 2008. [13] Un lanzamiento menor del parche 1.0.1 salió el 24 de julio de 2008. [14] En ClueCon 2012 Anthony Minessale anunció [15] el lanzamiento de FreeSWITCH versión 1.2.0 [16] y que el equipo de desarrollo de FreeSWITCH había adoptado ramas estables (versión 1.2) y de desarrollo (versión 1.3) separadas.
FreeSWITCH 1.4, lanzado a principios de 2014, es la primera versión compatible con SIP sobre Websocket y WebRTC.
FreeSWITCH 1.6 agregó soporte para transcodificación de video y videoconferencia, protocolo Verto para WebRTC y todos los códecs y estándares WebRTC.
FreeSWITCH 1.8 se lanzó en ClueCon en 2018 con más actualizaciones y mejoras de estabilidad del proyecto.
SignalWire Inc se fundó en 2018 para proporcionar servicios comerciales de telecomunicaciones en la nube utilizando un núcleo elástico FreeSWITCH y proporcionar un patrocinador comercial permanente para el proyecto de código abierto controlado por los fundadores de FreeSWITCH. Luego adquirió FreeSWITCH Solutions. [17]
Diseño
Según el diseñador de plomo, Anthony Minessale , [18] FreeSWITCH pretende ser un softswitch que se construye en la parte superior de un núcleo sólido, impulsado por una máquina de estado . [19] Los objetivos declarados del proyecto incluyen estabilidad, escalabilidad y abstracción .
Para reducir la complejidad, FreeSWITCH utiliza bibliotecas de software disponibles gratuitamente que realizan las funciones necesarias. Algunas dependencias son: [20]
- Tiempo de ejecución portátil de Apache (APR y APR-Util)
- SQLite : una implementación ligera de un motor SQL
- PCRE : expresiones regulares compatibles con Perl
- Sofia-SIP : una biblioteca de agentes de usuario SIP de código abierto
- libspeex: biblioteca de DSP de Speex (reemplazada por libresample a partir de la versión 1.0.3)
- mod_spandsp para pasarela de fax T.38 o paso a través
- libSRTP: una implementación de código abierto del Protocolo de transporte seguro en tiempo real
No todas estas dependencias de software son necesarias para construir la aplicación central de conmutación gratuita , pero son dependencias de varios módulos externos, como los códecs. FreeSWITCH es una aplicación modular, en la que los módulos pueden ampliar la funcionalidad, pero la capa de abstracción evita la dependencia entre módulos. El objetivo es garantizar que no se requiera un módulo para cargar otro. [21]
Características
FreeSWITCH incluye muchos módulos que brindan muchas aplicaciones de telefonía, como conferencias , control XML-RPC de llamadas en vivo, respuesta de voz interactiva (IVR), síntesis de voz y reconocimiento de voz , interfaces de red telefónica pública conmutada (PSTN) para circuitos analógicos y digitales, voz sobre protocolos IP , incluido el Protocolo de inicio de sesión (SIP), Verto, Protocolo de control de cliente delgado (SCCP), H.323 , Protocolo de presencia y mensajería extensible (XMPP), GoogleTalk , T.38 y otros. [22]
FreeSWITCH proporciona una interfaz de programación de aplicaciones que expone primitivas para el control de llamadas y la funcionalidad IVR. Las aplicaciones se pueden escribir en lenguaje C , C ++ , Python , Perl , Lua , JavaScript , Java y Microsoft .NET mediante CLR de Microsoft o mediante Mono . [23]
Las aplicaciones de control de llamadas pueden utilizar Event Socket, que es una instalación de comunicaciones basada en socket de Internet dentro de FreeSWITCH que proporciona una interfaz independiente del idioma. La biblioteca de sockets de eventos (ESL) y los "contenedores de ESL" están disponibles para Erlang , JavaScript, Lua, Perl, PHP, Python y Ruby .
A partir de la versión 1.4 de FreeSWITCH, existe soporte para WebRTC . [24]
En FreeSWITCH 1.6 se agregó soporte para Video muxing y WebRTC completo , wss, dtls, SIP.js, Verto.js, Opus de 48 kHz a 8 kHz, resistente hasta un 40% de pérdida de paquetes.
Características principales de FreeSWITCH 1.6:
- Soporte WebRTC
- Directorio centralizado de usuarios / dominios (directory.xml)
- Granularidad de CDR de nanosegundos
- Grabación de llamadas (en estéreo llamante / llamante izquierda / derecha)
- Motor de núcleo de subprocesos múltiples de alto rendimiento
- Configuración a través de cURL a su servidor HTTP (mod_xml_curl).
- Archivos de configuración XML para un análisis sencillo.
- Protocolo agnóstico
- Compatibilidad con ZRTP para el intercambio de claves y cifrado transparentes basados en RTP
- Tipo de carga útil configurable RFC 2833
- Generación y detección de DTMF en banda.
- Conferencia basada en software (sin requisitos de hardware)
- Conferencias de banda ancha
- Modos Media / No Media
- Marcación ENUM / ISN adecuada incorporada
- CDR detallado en XML
- Radio CDR
- Servidor de suscripción
- Apariciones de líneas compartidas
- Apariciones de líneas puenteadas
- Motor de eventos de nivel empresarial / operador. (Eventos XML, Eventos de valor de nombre, Eventos de multidifusión)
- Formatos de archivo cargables y transmisión
- Transmitir y reproducir desde Shoutcast e Icecast
- Interfaz de frases de voz en varios idiomas
- Soporte ASR / TTS (nativo y vía MRCP)
- Funciones básicas de IP / PBX
- Operadora automatizada
- Tonos de timbre personalizados (primeros medios)
- Soporte XML-RPC
- Soporta CDR de múltiples formatos
- SQL Engine proporciona persistencia de sesión
- Aislamiento de hilo
- Caza paralela
- Caza en serie
Soporte WebRTC
[25]
- FreeSWITCH es una puerta de enlace WebRTC, capaz de aceptar medios cifrados de navegadores, convertirlos e intercambiarlos con otras redes de comunicación, que utilizan diferentes códecs y cifrados, por ejemplo: PSTN, operadores de telefonía móvil, sistemas heredados, etc. FreeSWITCH puede ser la puerta de enlace entre Red SIP y aplicaciones y navegadores en computadoras de escritorio, tabletas y teléfonos inteligentes.
- FreeSWITCH es un servidor de aplicaciones WebRTC, capaz de proporcionar directamente servicios nativos a navegadores, como videoconferencias, IVR, Call Centers, sin el uso de ningún gateway o tercero. FreeSWITCH puede proporcionar servicios directamente a través de Secure WebSocket (WSS), SRTP y DTLS, los protocolos nativos de WebRTC.
- FreeSWITCH pone a disposición un plano de señalización adicional porque con Verto los navegadores pueden iniciar o recibir una llamada de voz o una videollamada de la manera más fácil, y pueden chatear, compartir pantalla, recibir y enviar datos en tiempo real a aplicaciones de back-end. Verto es una alternativa a XMPP o SIP en Javascript. FreeSWITCH puede servir en paralelo y simultáneamente la misma aplicación a clientes que usan señalización en SIP y Verto.
Soporte de videoconferencia
[26] FreeSWITCH siempre ha sido una plataforma poderosa para conferencias, que comenzó hace muchos años como un puente de conferencias de audio enormemente escalable. En un gran avance en ClueCon 2015 en Chicago, Illinois, el creador de FreeSWITCH, Anthony Minessale II, anunció la compatibilidad con la transcodificación, mezcla, manipulación y la funcionalidad de unidad de control multipunto (MCU) de video. FreeSWITCH ahora tiene las funciones de videoconferencia más avanzadas y maduras:
- Compatibilidad con múltiples códecs de video y transcodificación
- Varios diseños de video
- Divisiones de pantalla
- Imagen en imagen
- Compartir pantalla
- Superposición de video (leyendas, logotipos, etc.)
- Mezcla de video
- Efectos de video y manipulación en tiempo real
- Chroma-Key (video mezclando un fondo)
- Participantes SIP, WebRTC, VERTO, ISDN
Soporte de códec
FreeSWITCH admite una variedad de códecs de audio y video: [27]
- PCMU - ley μ G.711
- PCMA - Ley A G.711
- G.722
- G.722.1
- G.722.1c
- G.726
- G.726 con embalaje AAL2
- G.729 (paso a través)
- G.729 (con licencia) [28]
- GSM
- CELT y Opus
- iLBC
- DVI4 ( IMA ADPCM )
- BroadVoice
- SEDA
- Speex (banda estrecha y ancha) con soporte RFC 5574 fmtp
- Códec2
- LPC-10
- AMR
- AMR-WB
- iSAC
- OPUS RFC 6716, RFC 7587
- VP8
- VP9
G.723.1 , H263 y H264 se admiten en el modo de transferencia. Dado que los datos comprimidos sin procesar se transmiten entre las personas que llaman sin ningún procesamiento, esto permite la compatibilidad con algunos códecs que no se pueden proporcionar de forma gratuita debido a patentes u otros problemas de licencia.
El software admite tarjetas de transcodificación de hardware, como las producidas por Sangoma. [29] Estos implementan códecs en hardware, reduciendo el uso de CPU del servidor. Algunos de estos códecs tienen licencia completa, lo que proporciona una alternativa a las opciones de transferencia anteriores.
Soporte de protocolo
[30]
- SIP con mod_sofia
- Transportes UDP, TCP, SCTP y TLS para un cumplimiento total de SIP.
- Transportes xiWS y WSS para el cumplimiento total de WebRTC.
- SIP versión 2.0 (RFC 3261)
- Soporte IPv6
- Temporizadores de sesión SIP
- Temporizadores RTP
- RFC 3263 (SRV y NAPTR)
- RFC 3325
- RFC 4694
- SRTP a través de SDES (funciona con Polycom, Snom, Linksys y Grandstream)
- Registro SIP ciego
- Soporte STUN
- Búfer de fluctuación
- Soporte NAT
- Registros SIP distribuidos
- Negociación tardía de códecs
- Múltiples registros SIP por cuenta de usuario.
- Arrendamiento múltiple: varios UA SIP
- SIP Reinvites.
- Puede actuar como un SBC (controlador de borde de sesión)
- Gestionar presencia
- SIP / SIMPLE (puerta de enlace a otros protocolos de chat)
- Soporte de paginación de multidifusión SIP para Linksys y Snom
- Soporte de intercomunicador / respuesta automática.
- Funciones de llamada como Retención de llamada (Re-INVITE), Transferencia ciega (REFERIR), Desvío de llamada (302), etc.
- mod_skinny - Protocolo delgado de control de llamadas (SCCP)
- mod_verto - Protocolo de señalización VERTO WebRTC
Soporte de aplicaciones
[31]
- Mensaje de voz
- Multiempresa: configuración de empresa / operador
- Saludos de la hora del día
- Etiquetado de mensajes urgentes
- Entrega de correo electrónico
- Reproducción y grabación de mensajes antes de la entrega.
- Las claves son plantillas para que pueda reorganizarlas según sus necesidades.
- Soporte de devolución de llamada desde el correo de voz interno.
- Podcast de correo de voz (RSS)
- Indicador de mensaje en espera (MWI)
- Soporte para colas (a través de mod_fifo o mod_callcenter)
- Aparcamiento (a través de mod_fifo)
- Conferencia
- Conferencias basadas en software sin requisitos de hardware.
- Conferencias de banda ancha.
- Múltiples conferencias a pedido o programadas con anuncios de entrada / salida
- Reproduzca archivos en la conferencia o en un solo miembro.
- Relaciones
- Integración TTS
- Traslados
- Llamadas salientes
- Colocación de teclas configurables
- Nivel de volumen, ganancia y energía por llamada.
- Transición del puente a la conferencia
- Marcación saliente multipartita.
- RFC 4579 SIP CC Conferencing para UA
- Grabación automática o bajo demanda
- Lector de RSS
- Punto final de fax, puerta de enlace y modo de paso a través.
- T.30 (G.711) Audio Fax (a través de mod_spandsp) anteriormente conocido como mod_fax.
- Envío de faxes T.38 (puerta de enlace, punto final y paso a través)
Soporte de cifrado
- WSS
- HTTPS
- SRTP
- ZRTP
- TLS
- SIPS
- SSL
- SDES
- DTLS
Soporte de texto a voz y reconocimiento automático de voz
- Cepstral
- Flite
- PocketSphinx
- MRCP
Soporte del sistema operativo y de construcción
- Debian Linux es el sistema operativo preferido, ya que proporciona el soporte más amplio en sus bibliotecas necesario para ejecutar FreeSWITCH sin restricciones de licencia.
- Otros sistemas Linux, como RHEL y CentOS
- Solaris 10 UNIX ( Solaris Studio )
- FreeBSD (gmake)
- macOS (gmake)
- Windows (nativo)
Comparación con otro software de telefonía
FreeSWITCH ocupa un espacio entre conmutadores puros que simplemente enrutan llamadas, como Kamailio y OpenSIPS , y aquellos que proporcionan principalmente funcionalidad PBX o IVR , como Asterisk y sus derivados. FreeSWITCH proporciona bloques de construcción a partir de los cuales se pueden crear aplicaciones, como un PBX, un sistema de correo de voz , un sistema de conferencias o una tarjeta telefónica , utilizando cualquiera de los idiomas admitidos. [32]
Productos derivados
FreeSWITCH es un componente central en muchos productos comerciales PBX in a box y proyectos de código abierto. Algunos de los productos comerciales son paquetes de hardware y software, para los cuales el fabricante admite y publica el software como código abierto.
- BigBlueButton está construido sobre FreeSWITCH
Ver también
- Lista de paquetes de software gratuitos y de código abierto
- Lista de software SIP - otros programas relacionados con SIP
Referencias
aplicación de interfaz gráfica de usuario de freeswitch
- ^ "Lanzamientos - signalwire / freeswitch" . Consultado el 25 de marzo de 2021 , a través de GitHub .
- ^ "Linux - FreeSWITCH - Confluence" .
- ^ "macOS - FreeSWITCH - Confluence" .
- ^ "Solaris - FreeSWITCH - Confluence" .
- ^ "FreeBSD - FreeSWITCH - Confluence" .
- ^ "NetBSD - FreeSWITCH - Confluence" .
- ^ "OpenBSD - FreeSWITCH - Confluence" .
- ^ "DragonFlyBSD - FreeSWITCH - Confluence" .
- ^ "Windows - FreeSWITCH - Confluence" .
- ^ "Más allá de Asterisk, el futuro de la telefonía. ¿Qué sigue?" . O'Reilly Media. 2006-01-25 . Consultado el 6 de octubre de 2007 .
- ^ "Truphone selecciona FreeSWITCH y TelcoBridges para habilitar llamadas VoIP a través de WiFi en teléfonos móviles" (Comunicado de prensa). Truphone. 5 de junio de 2007.
- ^ "Gaboogie adopta el código abierto para la nueva solución de llamadas de grupo y conferencias telefónicas móviles" . Gaboogie. 2007-08-03. Archivado desde el original el 8 de septiembre de 2008 . Consultado el 6 de octubre de 2007 .
- ^ ¡Lanzamiento de "FreeSWITCH 1.0.0" Phoenix "!" . Archivado desde el original el 10 de agosto de 2008.
- ^ ¡Lanzamiento de "FreeSWITCH 1.0.1" Phoenix "!" . Archivado desde el original el 19 de agosto de 2008.
- ^ "Discurso de apertura de ClueCon 2012" . Archivado desde el original el 8 de junio de 2012.
- ^ "¡Es oficial! FreeSWITCH 1.2 ha sido lanzado" . Archivado desde el original el 20 de septiembre de 2012.
- ^ "Freeswitch adquirido por SignalWire" . signalwire.com . Consultado el 1 de mayo de 2018 .
- ^ Gallagher, Kathleen (18 de octubre de 2009). "Voltear el FreeSWITCH - Brookfield es el hogar de un software revolucionario" . Centinela del diario de Milwaukee. Archivado desde el original el 22 de octubre de 2009.
- ^ "Una entrevista con el creador de FreeSWITCH" . O'Reilly Media. 25 de julio de 2006.
- ^ Puede encontrar una lista completa de dependencias en lasección de la página de dependencias de la documentación de FreeSWITCH.
- ^ "Introducción a FreeSWITCH" . Wiki de FreeSWITCH . Consultado el 29 de enero de 2016 .
- ^ "Módulos" . Wiki de documentación de FreeSWITCH. 2016-01-29 . Consultado el 7 de octubre de 2007 .
- ^ "Interfaces de cliente y desarrollador" . Wiki de documentación de FreeSWITCH. 2016-01-29 . Consultado el 7 de octubre de 2007 .
- ^ "El proyecto FreeSWITCH lanza la versión 1.4 Beta con soporte de medios WebRTC" . Sitio web oficial de FreeSWITCH. 2013-06-19 . Consultado el 19 de junio de 2013 .
- ^ Libro de cocina FreeSWITCH 1.6, Packt Publishing, ISBN 1785280910
- ^ Dominando FreeSWITCH, Packt Publishing, ISBN 1784398888
- ^ "Códecs de audio - FreeSWITCH - Confluence" .
- ^ "Copia archivada" . Archivado desde el original el 23 de noviembre de 2010 . Consultado el 23 de noviembre de 2010 .CS1 maint: copia archivada como título ( enlace )
- ^ http://wiki.sangoma.com/sangoma-media-transcoding#sng_freeswitch_usage Archivado el 5 de julio de 2013 en Wayback Machine
- ^ "Especificaciones - FreeSWITCH - Confluence" .
- ^ "Especificaciones - FreeSWITCH - Confluence" .
- ^ "Aplicaciones FreeSWITCH" . Consultado el 30 de enero de 2016 .