Enviado por admin el
FreeSWITCH es un programa Open Source, distribuido bajo licencia MPL1.1, utilizado para implementar una central telefónica o, en general, un servidor B2BUA (Back To Back User Agent). Para una lista completa de las funcionalidades brindadas, pueden visitar la Wiki de los desarrolladores. Entre ellas:
• Registro (Log) de las llamadas
• Grabación de llamadas
• Desvío de llamadas
• Trasferencia de llamadas
• Conferencias audio y Videoconferencias
• Música en espera
• Soporte IPv6
• Creación de contestadoras automáticas: IVR
• Servidor y Gateway WebRTC con señalización SIP y Verto
• Multi Dominio y Multi usuario
• Least Cost Routing (LCR) para llamadas salientes
Primero se actualiza el sistema:
yum update -y
luego se instalan los repositorios epel y okay utilizados para las instalación de algunos paquetes:
yum install epel-release -y
rpm -ivh http://repo.okay.com.mx/centos/7/x86_64/release/okay-release-1-1.noarch.rpm?
Se desactivan los repositorios okay para activarlos solamente cuando se necesiten; esto para evitar que algunos paquetes se instalen, de manera predefinida, desde esos repositorios:
nano /etc/yum.repos.d/okay.repo
cambiamos en el primer bloque los parámetros que siguen:
enabled=1
gpgcheck=1
para que queden:
enabled=0
gpgcheck=0
guardamos los cambios. Se reinicia el sistema:
reboot
se vuelve a acceder y se continua con Vorbis que es una librería para la compresión/descompresión audio indispensable para la correcta compilación del modulo mod_shout:
yum install libvorbis libvorbis-devel vorbis-tools libogg libogg-devel -y
junto a mpg123 y libshout:
yum install mpg123-devel mpg123-libs libshout-devel -y
Para el formato audio GSM se instalan los relativos paquetes:
yum install gsm gsm-devel gsm-tools -y
FFMPEG es una dependencia del modulo mod_av que permite utilizar el codec Video H264 en Verto, la señalización utilizada para WebRTC en FreeSWITCH, además del protocolo SIP:
rpm -Uvh https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
yum install ffmpeg ffmpeg-devel -y
se sigue con CURL que es un cliente que permite recibir y/o enviar archivos utilizando los protocolos HTTP, HTTPS, FTP, GOPHER, DICT, TELNET; utilizado por el modulo mod_xml_curl:
yum install curl curl-devel libidn-devel -y
se instalan todas las librerías y dependencias que se necesitan para la compilación de las fuentes:
yum install gcc ncurses-devel make gcc-c++ zlib-devel libtool bison-devel bison libpqxx-devel \
openssl-devel bzip2-devel wget newt-devel subversion flex gtk2-devel bzip2 patch \
libjpeg-devel yasm-devel libsndfile-devel net-tools git perl-ExtUtils-Embed libatomic -y
En CentOS 7, para la gestión de la base de datos, de manera predefinida ya no está presente MySQL sino MariaDB que se instala:
yum install mariadb mariadb-server mariadb-devel -y
UNIXODBC que es la implementación Linux de los API ODBC que permiten conectarse a muchos sistemas de gestión de base de datos (ej: MySQL/MariaDB):
yum install unixODBC unixODBC-devel mysql-connector-odbc libtool-ltdl-devel -y
Como la base de datos interna de FreeSWITCH, de manera predefinida, se basa en SQLite, se instala el paquete del programa y el paquete de desarrollo:
yum install sqlite sqlite-devel -y
Se instala, desde las fuentes, FLITE, Festival Lite, que es un sistema de text to speech utilizado por el modulo mod_flite de FS:
cd /usr/src
git clone https://github.com/festvox/flite.git
cd flite/
./configure --enable-shared --with-audio=none --prefix=/usr
make
make get_voices
make install
Libuuid y uiid utilizados para la identificación univoca de canales y hilos de procesos del SoftSWITCH:
yum install libuuid libuuid-devel uuid uuid-devel -y
Se continua con la instalación de otros formatos audio: SPEEX WAW y LAME; este ultimo es también una dependencia para el modulo mod_shout:
yum install speex speex-devel wavpack wavpack-devel lame lame-devel -y
Se continua con LIBMAD que es un MPEG audio decodificador de alta calidad:
cd /usr/src
wget https://campus.voztovoice.org/FreeSWITCH/libmad-0.15.1b.tar.gz
tar -xf libmad-0.15.1b.tar.gz
cd libmad-0.15.1b
./configure --prefix=/usr --libdir=/usr/lib64
Para que la compilación tenga éxito hay que modificar la siguiente linea del archivo Makefile:
nano +129 Makefile
CFLAGS = -Wall -g -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2
para que quede:
CFLAGS = -Wall -g -O -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2
se continua con su compilación e instalación:
make
make install
Para la instalación del modulo mod_opus relacionado con el Codec Audio Opus, hay que instalar el codec desde las fuentes siguiendo estos pasos:
cd /usr/src
wget https://archive.mozilla.org/pub/opus/opus-1.1.1.tar.gz
tar -xf opus-1.1.1.tar.gz
cd opus-1.1.1
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
y añadiendo el paquete de las utilidades:
yum install opus-tools -y
Se termina esta primera parte con SoX que es un programa que permite la manipulación de archivos audio y la posibilidad de pasarlos de un formato a otro:
cd /usr/src
wget https://campus.voztovoice.org/FreeSWITCH/sox-14.4.2.tar.gz
tar -xf sox-14.4.2.tar.gz
cd sox-14.4.2
./configure --prefix=/usr --libdir=/usr/lib64
Al finalizar el configure aparecerá esta tabla donde se encontrarán todos los formatos audio que se podrán manipular con SoX:
Se termina con la compilación e instalación:
make && make install
Se continua con las librerías libtiff y SpanDSP, un procesador de señales digitales que en FreeSWITCH permite la instalación del modulo mod_spandsp para la recepción y envío de faxes:
yum install libtiff libtiff-devel libxml2 libxml2-devel -y
SpanDSP se instala desde los repositorios Okay:
yum --enablerepo=okay install spandsp spandsp-apidoc spandsp-devel -y
IKSEMEL que permite implementar el protocolo XMPP en FreeSWITCH a través del modulo mod_dingaling. Primero las librerías GNUtls:
yum install gnutls gnutls-devel gnutls-utils -y
luego Iksemel desde los repositorios Zabbix:
rpm -ivh https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el...
yum install iksemel iksemel-devel iksemel-utils -y
OpenLDAP es la versión open source del protocolo Lightweight Directory Access. Normalmente se utiliza para crear un directorio de usuarios que puede ser consultado y/o modificado desde remoto. Muchos programas implementan la posibilidad de conectarse a un servidor OpenLDAP y FreeSWITCH presenta esta posibilidad a través del modulo mod_ldap, aunque sea considerado un modulo obsoleto:
yum install compat-openldap openldap openldap-clients openldap-devel openldap-servers -y
SNMP es el Protocolo Simple de Administración de Red y sirve para controlar y monitorear el desempeño del servidor Linux:
yum install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils -y
En FreeSWITCH existe la posibilidad de guardar los registros de las llamadas en un servidor RADIUS a través de un cliente RADIUS que hay que instalar. En este caso se instala desde los repositorios EPEL:
yum install radiusclient-ng radiusclient-ng-devel radiusclient-ng-utils -y
Se continua la preparación del servidor con la instalación del lenguaje de programación LUA que es el más utilizado para escribir script y código para interactuar con FS:
yum install lua lua-devel -y
Se instalan los paquetes para compilar el modulo mod_memcache utilizado como memoria de cache en algunos tipo de consultas a base de datos:
yum install memcached memcached-devel libmemcached libmemcached-devel -y
Por ultimo la librería LIBSRTP que permite implementar el cifrado del flujo media en FreeSWITCH a través del protocolo SRTP (RFC3711); esta librería se instala también desde los repositorios Okay donde está presente una versión más actualizada:
yum --enablerepo=okay install libsrtp libsrtp-devel -y
y la librería Jansson para el soporte del modulo mod_verto utilizado como sistema de señalización para WebRTC:
yum install jansson jansson-devel -y
Para terminar hay que instalar unas cuantas librerías que permitirán instalar unos módulos más y de esta forma obtener una instalación casi completa de FreeSWITCH y sus módulos:
yum install portaudio portaudio-devel python-devel perl-devel erlang ldns-devel libedit-devel -y
Desde la versión 1.10.4 de FS, la pila SIP Sofia no está presente en las fuentes de FS pues hay que instalarla antes de compilar el SWITCH:
cd /usr/src
git clone https://github.com/freeswitch/sofia-sip.git
cd sofia-sip
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
Instalación de FreeSWITCH
Terminada la preparación del servidor, se inicia con la instalación de FreeSWITCH; primero se instala un paquete indispensable para la correcta compilación del modulo mod_verto:
rpm -Uvh https://campus.voztovoice.org/FreeSWITCH/libks-1.7.0-16.el7.centos.rpm
luego se descarga la ultima versión disponible de la rama 1.10 (1.10.7):
cd /usr/src
git clone -b v1.10 https://github.com/signalwire/freeswitch.git
Se entra a la carpeta creada:
cd freeswitch
y se preparan las fuentes para la compilación:
./bootstrap.sh -j
Luego para que se compilen algunos módulos que por defecto no están activados, se abre el siguiente archivo:
nano modules.conf
se descomentan las lineas de los módulos que se quieren incluir en la compilación e instalación y se comenta la linea del modulo mod_signalwire ya que este modulo se utiliza solamente si se contratan servicios con la empresa SignalWire, creada por los desarrolladores FreeSWITCH. Se modifican las siguientes lineas:
#applications/mod_curl
#applications/mod_directory
#applications/mod_distributor
#applications/mod_easyroute
#applications/mod_lcr
#applications/mod_memcache
#applications/mod_nibblebill
applications/mod_signalwire
#applications/mod_translate
#applications/mod_vmd
#asr_tts/mod_flite
#codecs/mod_mp4v
#endpoints/mod_dingaling
#event_handlers/mod_odbc_cdr
#event_handlers/mod_snmp
#formats/mod_shout
#say/mod_say_es
#say/mod_say_es_ar
#xml_int/mod_xml_curl
para que queden:
applications/mod_curl
applications/mod_directory
applications/mod_distributor
applications/mod_easyroute
applications/mod_lcr
applications/mod_memcache
applications/mod_nibblebill
#applications/mod_signalwire
applications/mod_translate
applications/mod_vmd
asr_tts/mod_flite
codecs/mod_mp4v
endpoints/mod_dingaling
event_handlers/mod_odbc_cdr
event_handlers/mod_snmp
formats/mod_shout
say/mod_say_es
say/mod_say_es_ar
xml_int/mod_xml_curl
Se guardan los cambios y se continua con:
./configure -C --enable-portable-binary \
--prefix=/usr --localstatedir=/var --sysconfdir=/etc \
--with-gnu-ld --with-python --with-erlang --with-openssl \
--enable-core-odbc-support --enable-zrtp \
--enable-core-pgsql-support \
--enable-static-v8 --disable-parallel-build-v8
con el comando anterior se indican las carpetas donde se instalarán respectivamente los archivos binarios, los LOG y los archivos de configuración; además se definen que módulos se soportarán y como. Se continua con:
make
Si no aparecen errores, se continua con:
make install
Se instalan las locuciones en inglés y los audio para la música de espera (calidad CD):
make cd-sounds-install
make cd-moh-install
Las únicas locuciones en español disponibles son con acento mexicano. Son las que utilizaremos para el curso aunque no son completas. Para instalarlas tendremos que utilizar una pequeña artimaña. Primero se descargan los paquetes RPM desde los repositorios OKAY:
cd /
wget http://repo.okay.com.mx/centos/7/x86_64/release/freeswitch-sounds-es-mx-...
wget http://repo.okay.com.mx/centos/7/x86_64/release/freeswitch-sounds-es-mx-...
wget http://repo.okay.com.mx/centos/7/x86_64/release/freeswitch-sounds-es-mx-...
wget http://repo.okay.com.mx/centos/7/x86_64/release/freeswitch-sounds-es-mx-...
Se descomprimen con una utilidad pensada para los paquetes RPM:
rpm2cpio freeswitch-sounds-es-mx-maria-48000-1.0.16-1.el7.centos.noarch.rpm | cpio -ivd
rpm2cpio freeswitch-sounds-es-mx-maria-32000-1.0.16-1.el7.centos.noarch.rpm | cpio -ivd
rpm2cpio freeswitch-sounds-es-mx-maria-16000-1.0.16-1.el7.centos.noarch.rpm | cpio -ivd
rpm2cpio freeswitch-sounds-es-mx-maria-8000-1.0.16-1.el7.centos.noarch.rpm | cpio -ivd
Quedarán instaladas en la carpeta que contiene las demás locuciones.
Si en cualquier momento se quiere añadir un modulo a la instalación realizada, no hace falta volver a realizar la compilación e instalación desde cero sino seguir estos pasos:
cd /usr/src/freeswitch
nano modules.conf
descomentar el modulo que se quieres instalar. En este ejemplo veremos como instalar el modulo mod_callcenter utilizado para configurar un centro de llamadas en FS; se modifica esta linea:
#applications/mod_callcenter
para que quede:
applications/mod_callcenter
Se guardan los cambios y se ejecuta el siguiente comando:
make mod_callcenter-install
si el modulo requiere algunas dependencias, será el mismo FreeSWITCH que las instalará. Para tener la certeza que el modulo se haya instalado correctamente:
ls /usr/lib/freeswitch/mod/mod_call*
/usr/lib/freeswitch/mod/mod_callcenter.la /usr/lib/freeswitch/mod/mod_callcenter.so
Para que se inicie con FS:
nano /etc/freeswitch/autoload_configs/modules.conf.xml
se modifica esta linea, que está comentada (Linea 143):
<!--<load module="mod_callcenter"/>-->
para que quede:
<load module="mod_callcenter"/>
Se guardan los cambios. Ahora para que FreeSWITCH se ejecute en automático cada vez que se reinicie el servidor, se modifica el siguiente archivo:
nano /usr/src/freeswitch/build/freeswitch.service
Cambiando esta linea:
WorkingDirectory=/run/freeswitch
para que quede:
WorkingDirectory=/var/run/freeswitch
Se guardan lo cambios y se copia el archivo en la carpeta de los scripts de inicio:
cp /usr/src/freeswitch/build/freeswitch.service /usr/lib/systemd/system/
se copia el archivo donde se pueden añadir parámetros personalizados en la respectiva carpeta:
cp /usr/src/freeswitch/build/freeswitch.sysconfig /etc/sysconfig/freeswitch
Como el script de inicio de FreeSWITCH utiliza el usuario freeswitch, hay que crearlo:
useradd -r -d /etc/freeswitch/ freeswitch
Como la carpeta /var/run/freeswitch, indicada en el script de inicio, se borra cada vez que se reinicia el sistema, para que cada vez se cree correctamente, se crea el siguiente archivo:
nano /etc/tmpfiles.d/freeswitch.conf
donde se copia la siguiente linea:
d /var/run/freeswitch 0755 freeswitch freeswitch - -
con este comando se creará la carpeta /var/run/freeswitch con los permisos 0755, usuario y grupo propietario freeswitch. Ya se puede activar el script de inicio:
systemctl enable freeswitch
Created symlink from /etc/systemd/system/multi-user.target.wants/freeswitch.service to /etc/systemd/system/freeswitch.service.
Antes de iniciar el servicio con el script de inicio, se ejecuta en primer plano para averiguar si hay errores de configuración/instalación y para que se creen todos los archivos que FreeSWITCH necesita:
freeswitch -nonat -nf
las dos opciones significan respectivamente: no utilizar la detección de NAT y trabajar en primer plano. Muy probablemente aparecerán algunas lineas de error relacionadas con SQLite:
[ERR] switch_core_sqldb.c:587 NATIVE SQL ERR [no such table: channels]
esto es porque las tablas que utiliza FreeSWITCH se crean en SQLite la primera vez que se inicia el programa. Una vez que termine el flujo de LOG, para averiguar que el modulo más importante, mod_sofia, esté funcionando correctamente:
freeswitch@sip10.voztovoice.net> sofia status
Para parar/terminar FreeSWITCH:
freeswitch@sip10.voztovoice.net> shutdown
Ahora que se ha averiguado que todo está funcionando correctamente, se cambian los permisos de las carpetas y archivos relacionados con FreeSWITCH; este paso se realiza también para que las base de datos SQLite3 creadas al iniciar FreeSWITCH con usuario root, sean accesibles al usuario freeswitch que es él con que se inicia el programa.
chown -Rf freeswitch:freeswitch /etc/freeswitch/
chown -Rf freeswitch:freeswitch /usr/lib/freeswitch/
chown -Rf freeswitch:freeswitch /var/log/freeswitch/
chown -Rf freeswitch:freeswitch /var/run/freeswitch/
chown -Rf freeswitch:freeswitch /var/lib/freeswitch/
chown -Rf freeswitch:freeswitch /usr/share/freeswitch
Ahora podemos iniciar el programa utilizando el script inicio:
systemctl start freeswitch
averiguar que esté funcionando correctamente:
ps aux | grep freeswitch
freeswi+ 5700 1.4 7.5 831828 37600 ? Ssl 09:37 0:06 /usr/bin/freeswitch -nc -nf
y acceder a la consola:
fs_cli
salir de la consola:
freeswitch@sip10.voztovoice.net> ...
IMPORTANTE: son tres puntos seguidos
Es todo. Esta guía es parte del curso de FreeSWITCH MOOC oferto por VozToVoice
Comentarios recientes