sábado, 6 de diciembre de 2014

Implementación de una centralita telefonica con asterisk y freepbx

(Para el curso cos115 del 2014)
Instalación de Linux en una memoria SD
Utilizaremos una memoria sd de 8Gb para la instalación
Se descargará la imagen del sitio web de raspbian (Distribución linux escogida para la instalación del software que correrá la centralita)
clip_image002
Desde la terminal se ejecutará el siguiente comando
Se descargará el archivo 2014-09-09-wheezy-raspbian.zip
Luego se ejecutará desde una terminal
#unzip 2014-09-09-wheezy-raspbian.zip
y se copiará la imagen hacia la memoria microSD
#dd if= 2014-09-09-wheezy-raspbian.img /dev/mmcblk0
Donde 2014-09-09-wheezy-raspbian.img es la imagen descomprimida y /dev/mmcblk0 es la memoria microSD en donde instalaremos el sistema operativo
dd no muestra ningún mensaje de error pero si todo salió bien se podrá ver algo como lo siguiente:
clip_image004
Luego insertamos la sd en la raspberry pi y deberá iniciar sin problemas
Para conectarnos vía ssh hacia la raspberry pi es necesario habilitar el servidor de ssh

y contar con un cliente ssh (en linux es probable que se encuentre instalado, en windows se puede utilizar putty)

Para conectarnos utilizaremos el comando
$ ssh pi@10.42.0.62
En donde pi es el usuario con el que iniciaremos sesion y 10.42.0.62 es la dirección ip de la raspberry.
Nos saldrá el siguiente mensaje
clip_image006
Aceptamos que si y veremos lo siguiente con lo cual todos los comandos que ejecutemos en esta consola serán ejecutados en la raspberry pi.
clip_image008
Instalación del software necesario para asterisk (librerías y soporte de hardware)
Primero necesitaremos descargar todo el software necesario para la instalación
Como son asterisk, freepbx, la librería dahdi, la libreria ss7 (libss7), la libreria pri (libpri)
Estas sirven para que la centralita se pueda comunicar con otro hardware de pbx dedicado asi como tener salida a la red de telefonia publica
Crearemos una carpeta en donde estará descargado todo el software que no instalemos desde los repositorios de debian
$mkdir software
clip_image010
Luego nos dirigimos al sitio web de asterisk en la sección de descargas podremos ver listadas las librerías y el software necesario para instalar
clip_image012
cambiamos al directorio donde guardaremos las descargas con $cd software y realizamos la descarga del software
DAHDI
$wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
clip_image014
Libss7
$wget http://downloads.asterisk.org/pub/telephony/libss7/libss7-2.0.0.tar.gz
clip_image016
Libpri
$wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
clip_image018
Asterisk (versión 11 por cuestiones de estabilidad)
$wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz
clip_image020
Descomprimimos el software descargado con
DAHDI
$ tar -xzvf dahdi-linux-complete-current.tar.gz
Libss7
tar -xzvf libss7-1.0-current.tar.gz
Libpri
$ tar -xzvf libpri-1.4-current.tar.gz
Asterisk
$ tar -xzvf asterisk-11-current.tar.gz
movemos los archivos descomprimidos a la carpeta donde se encuentran las fuentes
moviendo las fuentes al directorio de fuentes /usr/local/src
# mv dahdi-linux-complete-2.10.0.1+2.10.0.1/ /usr/local/s
sbin/ share/ src/
# mv dahdi-linux-complete-2.10.0.1+2.10.0.1/ /usr/local/src/
# mv asterisk-11.14.1/ /usr/local/src/
# mv libpri-1.4.15/ /usr/local/src/
# mv libss7-1.0.2/ /usr/local/src/
root@raspberrypi:/home/pi/software# ls /usr/local/src/
asterisk-11.14.1 dahdi-linux-complete-2.10.0.1+2.10.0.1 libpri-1.4.15 libss7-1.0.2
Compilación DAHDI
Es posible que al querer compilar DAHDI no se encuentren disponibles las fuentes del kernel para la versión instalada de raspbian.
Por cuestiones de compatibilidad y ciertos errores que se dan al compilar DAHDI con el kernel instalado por defecto se utilizará el kernel 3.6 de linux y su respectivo código fuente con:
apt-get install linux-image-3.6-trunk-rpi linux-headers-3.6-trunk-rpi
editar el archivo /boot/config.txt
agregar las siguientes líneas al final del archivo
kernel=vmlinuz-3.6-trunk-rpi
initramfs initrd.img-3.6-trunk-rpi followkernel
Reiniciar la raspberry pi para que cargue este kernel 3.6
cambiarse al directorio /usr/local/src/dahdi-linux-complete-2.10.0.1+2.10.0.1
ejecutar los comandos
# make
# make install
# make config
compilación libpri (Es necesario antes haber instalado la libreria DAHDI)
cambiarse al directorio /usr/local/src/libpri-1.4.15/
ejecutar
# make
# make install
compilación librería libss7-1.0.2
cambiarse al directorio /usr/local/src/libss7-2.0.0/
ejecutar
# make
# make install
compilación asterisk
instalamos dependencias para compilación de asterisk
# apt-get install libsqlite3-dev libxml2-dev libncurses5-dev
iniciamos sesión como root o adquirimos permisos de root con sudo su
Nos movemos al directorio donde se encuentran las fuentes de asterisk
#cd /usr/local/src/asterisk-11.14.1/
se ejecuta el comando make
# make
y luego make install
# make install
Seguido de make config
# make config
clip_image022
Make config se encarga de agregar asterisk al inicio del sistema modificando los scripts rc.d
Instalación de freepbx
Freepbx es una interfaz gráfica web para configurar asterisk
Se obtiene la direccion de descarga a partir del sitio web de freepbx (http://www.freepbx.org/)
clip_image024
desde la raspberry se descarga el freepbx (Versión 2.11 por razones de estabilidad)
pi@raspberrypi ~/software $ wget http://mirror.freepbx.org/freepbx-2.11.0.40.tgz
clip_image026
se instalan los requerimientos de freepbx (un servidor apache, mysql y)
sudo apt-get install apache2 mysql-server php5 php5-cli php5-mysql php-pear libapache2-mod-php5 php5-gd php5-curl mysql-client
se agrega usuario de asterisk
Creamos el usuario para asterisk y asignamos los permisos necesarios
adduser asterisk --disabled-password --gecos "Asterisk User"
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk
mkdir /var/www/html
chown -R asterisk. /var/www/
Luego creamos las bases de datos de asterisk
# mysql -u root -p
create database asteriskcdrdb;
create database asterisk;
agregamos los permisos de acceso a la base de datos
mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'cos215';
mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'cos215';
Creamos la base de datos de asteriskcdrdb en base a los archivos de ejemplo de SQL de freepbx
mysql -u asteriskuser -pcos215 asteriskcdrdb < usr/local/src/freepbx/SQL/cdr_mysql_table.sql
Creamos la base de datos de asterisk en base a los archivos de ejemplo de SQL de freepbx
mysql -u asteriskuser -pcos215 asterisk < usr/local/src/freepbx/SQL/newinstall.sql
ejecutamos ./install_amp y seguimos las instrucciones
clip_image028
clip_image030
Freepbx funcionando
Si todo ha salido bien se tendrá asterisk funcionando y freepbx también para acceder a la interfaz de freepbx solo se tiene que poner la ip del dispositivo
y se verá la siguiente interfaz
clip_image032
Poniéndolo en español
Seleccionamos Advanced settings en el menu settings
clip_image034
Nos dirigimos a la sección GUI Behavior
clip_image036
y ponemos Show Language setting en true y guardamos haciendo click en la icono verde de cheque save
clip_image038
Se podra ver un menú de idiomas a la par de la opción de logout
clip_image040
Al seleccionar Spanish la interfaz cambiará a español (nota: la traducción al español de freepbx parece ser un tanto incompleta)
clip_image042
Creando extensiones
Seleccionamos Extensiones en Applications
clip_image044
Se mostrará una pantalla para añadir una extensión, para nuestro ejemplo crearemos una extensión utilizando SIP pero si desea crear una extensión IAX2 solo tiene que seleccionarlo del menú.
clip_image046
Las siguientes configuraciones sirven tanto si selecciono SIP o IAX.
Agregamos el número de la extensión y el nombre a mostrar
clip_image048
Y en la sección de dispositivo seleccionamos la contraseña para la extensión en la sección secret
clip_image050
Todos los demás valores se dejan con los valores por defecto. Finalmente seleccionamos enviar.
clip_image052
Podremos ver el numero y nombre de la extensión abajo del cuadro de cerrar sesión
clip_image054
INSTALANDO CLIENTES
Para revisar el funcionamiento de las extensiones creadas en asterisk por medio de FreePBX ocuparemos programas como EKIGA y ZOIPER que sirven para hacer videoconferencias, llamadas por VOIP entre otros.
Para instalar EKIGA en Debian se procede de la siguiente manera:
EKIGA se encuentra en los repositorios de debian por lo que ejecutamos lo siguiente en consola:
# aptitude install ekiga
Nos aparecera lo siguiente:
#Se instalarán los siguiente paquetes NUEVOS:
ekiga libcapi20-3{a} libodbc1{a} libopal3.10.4{a} libpt2.10.4{a}
Se ELIMINARÁN los siguientes paquetes:
gnash-common{u} libboost-program-options1.49.0{u}
libboost-thread1.49.0{u} libmozjs24d{u} xulrunner-24.0{u}
0 paquetes actualizados, 5 nuevos instalados, 5 para eliminar y 1 sin actualizar.
Necesito descargar 16,0 MB de ficheros. Después de desempaquetar se liberarán 23,0 MB.
¿Quiere continuar? [Y/n/?]
Presionamos Y y continuamos la instalación.
Una vez instalado habrimos EKIGA
Cuando es primera vez nos aparecera la siguiente ventana:
clip_image056
Presionamos adelante en toda la configuración. Habrán opciones que pedirá usuario y contraseña para los servicios que posee EKIGA en Internet pero podemos decirle que no los necesitamos.
Así lucirá la ventana de EKIGA:
clip_image058
Para agregar una cuenta SIP Editar->Cuentas:
clip_image060
Luego Cuentas-> Añadir Una cuenta SIP
Llenamos con los datos correspondientes de la extensión, y luego click en Aceptar, no olvidar que en servidor de registro se pone la direccion ip de la central telefonica para este caso 192.168.0.102
clip_image062
Si el servidor esta de asterisk esta correctamente configurado en la columna Estado aparece como Registrado.
clip_image064
Realice estos mismos pasos en cada máquina cliente, es decir una por extensión.
Para poder realizar llamadas escriba (en la pantalla principal de Ekiga) la extensión destino y haga clic en el icono del teléfono (verde). El cliente destino debe aceptar la llamada para que haya comunicación.
clip_image066
Por el momento Ekiga no soporta el protocolo IAX por lo que si creamos este tipo de extensiones debemos usar como cliente a Zoiper (que ademas soporta SIP tambien).
Para agregar la cuenta IAX nos dirigimos a Settings -> Create new account, en el nuevo menú seleccione, como tipo de cuenta, IAX y haga clic en NEXT. LLene el formulario con sus credenciales y vuelva hacer clic en NEXT y nuevamente en NEXT, si todo marcho bien su cuenta habrá sido verificada y agregada.
clip_image068
Referencias