fbpx

Esto más que un post es una serie de notas que tomamos cuando implementamos un proyecto de central telefónica utilizando una Raspberry pi con FreePBX

Una Centralita Telefónica permite gestionar llamadas telefónicas internas en una empresa, y compartir las líneas de acceso a la red pública entre varios usuarios, para permitir que estos realicen y reciban llamadas desde y hacia el exterior de la empresa, trabaja internamente con el protocolo IP y utiliza la infraestructura de comunicaciones de datos (WAN y LAN).

Los elementos utilizados son:

  • Raspberry Pi 3 B ($75.99 kit de desarrollo)
  • Módem 3G – Huawei E153-u ($30)
  • Softphone: Liphone y Zoiper
  • Teléfono IP Grandstream  ($112)
  • Asterisk
  • Freepbx
  • Raspbx

COSTO TOTAL:  $221.99

 

A continuación, se detallan los pasos a seguir:

Instalación de Asterisk y FreePBX.

Versión utilizada: 13.

Los comandos utilizados aquí deben ejecutarse con privilegios root.

  1. Habilitar los inicios de sesión como root por medio de ssh:

sed -i ‘s/PermitRootLogin without-password/PermitRootLogin yes/’ /etc/ssh/sshd_config

service sshd restart

  1. Actualizar el sistema:

apt-get update && apt-get upgrade -y

  1. Instalar dependencias:

apt-get install -y build-essential linux-headers-`uname -r` openssh-server apache2 mysql-server\

mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear php5-gd curl sox\

libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3\

libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev\

libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev\

libspandsp-dev sudo libmyodbc subversion

Nota: No establecer contraseña en mysql

  1. Reiniciar el servidor

reboot

  1. Instalar los requisitos Legacy Pear:

 

pear install Console_Getopt

 

  1. Descargar los archivos fuente de Asterisk:

 

cd /usr/src

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

wget -O jansson.tar.gz https://github.com/akheron/jansson/archive/v2.7.tar.gz

wget http://www.pjsip.org/release/2.4/pjproject-2.4.tar.bz2

 

  1. Compilar e instala pjproject:

cd /usr/src

tar -xjvf pjproject-2.4.tar.bz2

rm -f pjproject-2.4.tar.bz2

cd pjproject-2.4

CFLAGS=’-DPJ_HAS_IPV6=1′ ./configure –enable-shared –disable-sound –disable-resample –disable-video –disable-opencore-amr

make dep

make

make install

  1. Compilar e instala jansson

cd /usr/src

tar vxfz jansson.tar.gz

rm -f jansson.tar.gz

cd jansson-*

autoreconf -i

./configure

make

make install

 

  1. Compilar e instala Asterisk

cd /usr/src

tar xvfz asterisk-13-current.tar.gz

rm -f asterisk-13-current.tar.gz

cd asterisk-*

contrib/scripts/get_mp3_source.sh

contrib/scripts/install_prereq install

./configure

make menuselect

 

Se le pedirá en el punto que elija qué módulos crear. La mayoría de ellos ya estarán habilitados, pero si desea tener soporte para MP3 (por ejemplo, para Música en espera), debe activar manualmente ‘format_mp3’ en la primera página.

debian-2.png

Después de seleccionar ‘Guardar y salir’, puede continuar.

 

  1. El siguiente comando instala un archivo de sonido base de baja calidad de forma predeterminada. Esto es adecuado si se encuentra en un sistema pequeño y poco potente (como un Rasberry Pi)

make

make install

make config

ldconfig

update-rc.d -f asterisk remove

 

  1. Crea el usuario de Asterisk y establece los permisos del archivo base:

useradd -m asterisk

chown asterisk. /var/run/asterisk

chown -R asterisk. /etc/asterisk

chown -R asterisk. /var/{lib,log,spool}/asterisk

chown -R asterisk. /usr/lib/asterisk

rm -rf /var/www/html

 

  1. Hacer modificaciones a Apache.

sed -i ‘s/\(^upload_max_filesize = \).*/\120M/’ /etc/php5/apache2/php.ini

cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig

sed -i ‘s/^\(User\|Group\).*/\1 asterisk/’ /etc/apache2/apache2.conf

sed -i ‘s/AllowOverride None/AllowOverride All/’ /etc/apache2/apache2.conf

a2enmod rewrite

service apache2 restart

 

  1. Configurar ODBC:

Edite /etc/odbcinst.ini y agregue lo siguiente. Tenga en cuenta que este comando supone que está instalando en una máquina nueva y que el archivo está vacío. Si no se trata de una máquina recién instalada, verifique manualmente el contenido del archivo, en lugar de simplemente copiar y pegar las líneas a continuación. El ‘EOF’ no entra en el archivo, simplemente señala al comando ‘cat’ que ha terminado de pegar.

cat >> /etc/odbcinst.ini << EOF

[MySQL]

Description = ODBC for MySQL

Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so

Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so

FileUsage = 1

EOF

 

Es posible que deba verificar estas rutas, si no está en una máquina x86_64. Puede usar el comando `find / -name libmyodbc.so` para verificar la ubicación

Edite o cree /etc/odbc.ini y agregue la siguiente sección. Tenga en cuenta que, de nuevo, este comando supone que está instalando en una máquina nueva, y el archivo está vacío. Verifique manualmente el contenido de los archivos si este no es el caso.

cat >> /etc/odbc.ini << EOF

[MySQL-asteriskcdrdb]

Description=MySQL connection to ‘asteriskcdrdb’ database

driver=MySQL

server=localhost

database=asteriskcdrdb

Port=3306

Socket=/var/run/mysqld/mysqld.sock

option=3

EOF

 

  1. Descargue e instale FreePBX.

cd /usr/src

wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz

tar vxfz freepbx-13.0-latest.tgz

rm -f freepbx-13.0-latest.tgz

cd freepbx

./start_asterisk start

./install -n

Configuración de FreePBX.

 

Para acceder a la configuración de FreePBX, abrimos el navegador y digitamos la ip asignada al raspberry pi. Si es la primera ves que accedemos debemos establecer un usuario y una contraseña para proteger la administración. Al terminar, visualizaremos la página de inicio similar a esta:

 

Agregar una extensión SIP.

  1. Seleccionar del menú «Applications» la opción «Extensions».

  1. Hacer click en «Add New Chain_SIP Extension».

  1. Completar los campos de la pestaña «General»: User Extension, Display Name y Secret.
  • User Name: Es el número de extensión que se asignará.
  • Display Name: Es el nombre que se mostrará  al hacer una llamada, en este caso aparecerá «Administración».
  • Secret: Es la contraseña asignada al dispositivo para la cuenta SIP.

 

  1. Guardar los cambios dando click en «Submit». Se pueden crear las cuestas SIP que sean necesarias siguiendo el mismo proceso.

Para las cuentas IAX se añaden las extensiones forma similar.

Conectar servidores a través de una troncal SIP.

Tomando en cuenta como ejemplo la siguiente estructura se ha configurado la conexión entre troncales:

Central 2.
  1. Seleccionamos del menú el botón «Connectivity» y luego la opción «Trunks».
  2. Seleccionamos «Add SIP (chan_sip) Trunk»:

 

  1.  Asignar nombre a la troncal «Trunk Name» en la pestaña «General».

  1. En la pestaña «SIP Settings» se agregar lo siguiente:

La dirección de «host» se refiere a la ip del servidor de la otra central, es decir, la central 1.

  1. Establecer una ruta de salida desde «Connectivity» seleccionando «Outbound Routes».
  2. Añadir una nueva ruta y asignarle un nombre en «Route Name». Seleccionar la troncal ya creada (cip2) en el campo «Trunk Sequence for Matched Routes».

 

  1. Establecer los patrones de marcado desde la pestaña «Dial Patterns», en el ejemplo sería de la siguiente manera:

 

Lo anterior significa que cuando alguna extensión de la central 1 marque el número como 8000-8999 y los números comienzan con 56, la llamada se desviará a la central 1 a través de la troncal SIP cip2.

  1. La configuración de la central 1 es similar según los datos de la estructura inicial.

Configuración de módem 3G para salida de llamadas a la PSTN.

Nota: Para conectar el módem a la raspberry se debe utilizar un concentrador USB con alimentación externa ya que consume mucha energía lo que podría afectar el rendimiento de la placa si se conecta directamente a uno sus puertos.

  1. En primer lugar debemos estar seguros que el módem esté desbloqueado para cualquier red (en nuestro caso se uso un módem Huawei E153-u) y tenga habilitada la opción para hacer llamadas, para saber si tiene habilitada las llamadas de voz se puede usar el siguiente programa:

https://www.dc-unlocker.com/downloads/DC_unlocker_software.

  1. A continuación ejecutar en consola el comando: install-dongle
  2. En la instalación se requerirá datos relacionados al número de asignado al chip utilizado.
  3. Cuando termine la instalación, conectar el módem al concentrador  y ejecutar el comando:

asterisk –rx “dongle show devices”

Esto mostrará la información del dispositivo conectado, similar a esto:

raspbx-status-dongle

  1. Una vez reconocido el módem, se debe crear una nueva troncal en FreePBX. Esta vez crear una  «Custom Trunk» desde Connectivity/Trunks. Añadir un nombre a la troncal:

  1. En la pestaña «custom setting» en «Custom Dial String» escribir:

dongle/dongle0/$OUTNUM$

  1. Después se debe configurar una nueva ruta de salida.

  1. También se deben establecer los patrones de marcado, dependerá del formato del país en el que se encuentra:

Enviar los cambios al servidor y aplicar cambios para guardar las configuraciones.

Configurar softphone y videollamadas.

En este post se ha utilizado y configurado el software Linphone para hacer llamadas dentro de la red con dispositivos móviles, en nuestro caso con dispositivos Android,  y computadoras.

  1. Descargar Linphone de Google Play:

  1. Agregamos una nueva cuenta SIP:

  1. Configuramos según el servidor, en este caso:
  • Nombre de usuario: Es la extensión que ocupará el dispositivo.
  • Contraseña: es el campo «Secret» configurado en FreePBX.
  • Dminio*: Es la ip al servidor, en este post es la ip de la raspberry y el puerto 5160
  • Transporte: Protocolo a usar para las llamadas.

 

  1. Si todo va bien, el dispositivo se registrará y estará listo para hacer llamadas:

 

  1. Para habilitar las videollamadas, seleccionar Configuración y en la opción Vídeo:

  1. Habilitar la opción «Iniciar Videollamadas» y seleccionar el códec VP8:

  1. En FreePBX realizar los siguientes cambios en «Settings/Asterisk SIP Settings» y en la pestaña «Chain SIP Settings»: