FreeSWITCHTM: Una librería, softswitch, softphone y PBX IP
1.
2. FreeSWITCH™ es:
• Una libreria
• Un Softswitch
• Un softphone
• Una PBX IP
Qué es FreeSWITCH™?
Wikipedia: “FreeSWITCH™ is a free and open source
communications software for the creation of voice and
messaging products.”
3. FreeSWITCH™ NO es:
• Un SIP Proxy
• Un polvo magico que soluciona todos nuestro problemas
• Fácil – You have to know what you’re doing
Qué NO es FreeSWITCH™?
4. • Viene de Asterisk
• No comparte codigo de Asterisk
• Creado por Anthony Minessale II
• Tony escribió los siguientes “apps” de Asterisk:
• App_chanspy
• App_dumpchan
• App_realtime
• Res_odbc
De donde viene?
6. • Usando librerias ya existentes como:
• Libsofia para SIP
• Apache Portable Runtime para ser
multiplataforma
• SQLite para base de datos
• PCRE para expresiones regulares
• Muchas otras…
Como lograr?
8. Configuración
• FreeSWITCH utiliza XML internamente para su
configuración
• La configuración es cargada en memoria durante la
ejecución
• La configuración puede ser totalmente dinámica
• Cada vez que algun componente pide por
configuración, otros modulos tienen la
oportunidad de proveerla siempre y cuando la
respuesta sea XML.
9. Directory
• Es un repositório de usuarios organizados por
dominio
• 1000@khomp.com.ar != 1000@freeswitch.org
• Las informaciones contenidas en el directorio son
relevantes unicamente al modulo/tecnologia que
pide por el usuario
• El directorio es agnostico a tecnologia
10. Eventos, eventos
• Subsistema de eventos sigue el patrón
“observable”
• Es el medio de comunicación entre modulos
• Es utilizado para execución de aplicaciones en
canales e incluso para cola de SQL utilizado pelo
core
11. Observable
A B
B llama método de A
C
Requiere cambio en la estructura de B
MALA PRAXIS, B no tendría que saber
del funcionamiento de A o C.
14. ¿Y a mi qué?
• Event Socket Library
• Es un event consumer que “escribe” los eventos
en un socket TCP
• Libesl posee un protocolo
• Fs_cli == asterisk –r
• Libesl posee bindings para varios lenguajes a
traves de un wrapper C++ y SWIG
• PHP, Python, Perl, Lua, C#, etc…