Debian Asterisk 1.4 FreePBX AvantFax

­

Improvisa :: Informática :: Debian Asterisk 1.4 FreePBX AvantFaxEste nuevo manual surge de ver el gran exito obtenido en nuestra priemera entrega sobre Asterisk, el manual Debian Asterisk FreePBX RDSI RTB ha día de hoy a recibido 29130 lecturas, todo un record en Improvisa, y solo superado por otras dos artículos, Amigurumi y Hack de una Wep.

Improvisa :: Informática :: Debian Asterisk 1.4 FreePBX AvantFaxEn esta nueva entrega queremos compartir con vosotros este Howto, Manual o Guía sobre como montar sobre Debian un Asterisk 1.4 con Freepbx y soporte avanzado para envio y recepcion de Faxes con Hylafax y AvantFax y de esta forma montar una centralita telefónica más actual ­que la utilizada en el anterior documento, ya que pasaremos de utilizar Asterisk 1.2 a Asterisk 1.4 y la nueva rama aplicativa llamada Dahdi en vez de utilizar el antiguo Zaptel.

Improvisa :: Informática :: Debian Asterisk 1.4 FreePBX AvantFaxImprovisa :: Informática :: Debian Asterisk 1.4 FreePBX AvantFaxAsterisk, para el que no lo conozca, es un aplicativo para GNU/Linux con licencia GPL, en el que se basará nuestro guía  "Debian Asterisk 1.4 FreePBX AvantFax", que proporciona todas las caracteristicas de una centralita telefónica, en la cual podremos conectar el numero de teléfonos que necesitemos y crear las distintas entradas y salidas que necesitemos para nuestras llamadas. Los porotocolos y hardware utilizados cada día son más amplios, pudiendo a día de hoy realizar videoconferencias, llamadas sobre canales sip, iax2, mgcp. Esta nueva centralita será capaz de manejar si lo netesitamos canales primarios (haste 30 lineas por tajeta pci, solo teneis que multiplicar :-O).

La unión de Asterisk, Debian, Hylafax y Avantfax harán que la nueva centralita que creemos tenga todo lo necesario para la utilización en cualquier empresa o para nuestra casa dandonos la posibilidad de crear listas negras (por fin podremos quitarnos a esos comerciales),  rangos de tiempo en los que recibir llamadas, recepcionistas automáticas, y un largo etcetera que ya iremos viendo.

Sin más pasaremos a crear nuestra centralita basa en Debian, Asterisk 1.4, FreePBX y AvantFax
­

­

­­

­ACLARACIONES INICIALES:

Para el código que veréis en el howto utilizo lo siguiente: código que tecleo ( NEGRITA CURSIVA ).

Para el código que muestra la pantalla ( CURSIVA ).
­
Este manual compilara asterisk, dahdi, dahdi tools y todos los paquetes necesarios para la reación de la centralita. Dahdi incopora un montón de drivers para con­troladoras.

OJO a los Saltos de Linea

INST­ALACIÓN DEL SISTEMA OPERATIVO:

La instalación del sistema operativo será la estándar, a día de hoy utilizaremos Debian Lenny.

INSTALACIÓN Y CONFIRUACIÓN DE PAQUETES VARIOS:

De primeras y­ en casi todos los servidores que instalo suelo instalar una serie de paquetes, asi que hagamoslo:

improvisa:~# apt-get install gpm ssh vi­m ntpdate tcpdump iptraf

Una vez instaldos estos paquetes entraremos por ssh a la centralita Asterisk 1.4 llamada Improvisa y reconfiguraremos los locales de Debian Lenny:

improvisa:~# dpkg-reconfigure locales

Seleccionaremos es_ES.UTF-8 UTF-8 y es_ES@euro ISO-8859-15 y como predeterminado es_ES@euro.

Saldremos de la sesión ssh y volveremos a entrar.

Si utilizais a Vim como editor de texto tendremos que editar el archivo de configuraciíon de VIM, si utilizais editor otro pues hacedlo al gusto.

improvisa:~# vi /etc/vim/vimrc

Descomentaremos las lineas:

syntax on
set background=dark

y debajo de esta añadiremos la linea:

set noai

Guardaremos y cerraremos.

 

DESCARGA DE PAQUETES NECESARIOS

Descargaremos ahora los paquetes necesarios para la instalción de Asterisk 1.4 sobre Debian con FreePBX y servidor de Fax con Hylafax y AvantFax.

Nos moveremos a /usr/src/ y alli descargaremos todo lo necesario, las versiones iran cambiando a medida que vayais utilizando este manual, si quereis intentar con nuevo software ya sabeis que estareis experimentando, con las versiones que yo pongo en este manual funciona a la perfección. Descarguemos:

improvisa:~# cd /usr/src/

Descargaremos el sistema base de Asterisk, la versión será la 1.4.25.1, estable a este momento

improvisa:/usr/src# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.25.1.tar.gz

Es hora de dejar en nuetro directorio una copia de los drivers para nuestra centralita, el paquete Dahdi se encargará de dar soporte a nuestra tarjetas Openvox, tarjetas de digium y un sinfin de nuevas tarjetas.

improvisa:/usr/src# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-2.2.0-rc5.tar.gz

El paquete Dahdi tools es, sin duda, necesario para nuestra instalación, no es obligatorio pero nos ayudara muichisimo en la configuracíon de los drivers en el sistema asterisk, es decir nos ayudará a que Debian se entere que tiene pinchado y a que Asterisk 1.4 se entere de lo que tiene que utilizar.

improvisa:/usr/src# wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-tools-2.2.0-rc3.tar.gz

Asterisk Addons nos agregará al sistema un par de nuevos codecs y un par de aplicaciones.

improvisa:/usr/src# wget  http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.4.8.tar.gz

AGX’s Asterisk Extra AddOns trae muchísimas aplicaciones adicionales algunas de ellas necesarias para nuestros propositos como por ejemplo nvfaxdetect para asterisk 1.4, asi que a descargarlo

improvisa:/usr/src# wget http://surfnet.dl.sourceforge.net/sourceforge/agx-ast-addons/agx-ast-addons-1.4.17.5.tar.bz2

Si no nos funciona el link, descargadlo con Subversion:

improvisa:/usr/src# svn co https://agx-ast-addons.svn.sourceforge.net/svnroot/agx-ast-addons agx-ast-addons

Necesitaremos una versión especial de la libreria spandsp, es la que mejor reconoce los tonos de fax. La versión es muy antigua pero no falla, cosa que si ocurre con las anteriores y posteriores.

improvisa:/usr/src# wget http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.6pre12.tgz 

Ahora le toca el turno la aplicación PHP que nos ayudará y nos simplificará de manera asombrosa la creacion y modificación de todos los parametros que nuestra nueva centralita irá necesitando.

improvisa:/usr/src# wget http://mirror.freepbx.org/freepbx-2.5.1.tar.gz

Avantfax es de lo último que configuraremos pero como ahora es cuando estamos descargando pues lo bajaremos de su página ofical también. Avantfax es un sistema web programado en PHP para el envio y recepción de faxes el cual nos ayudará un montón desubicando la recepcion y el envio de faxes ya que por web podremos hacerlo desde culaquier parte del mundo y sin levantarnos.

improvisa:/usr/src# wget http://switch.dl.sourceforge.net/sourceforge/avantfax/avantfax-3.1.6.tgz

COMPILACIÓN DE DAHDI, DAHDI TOOLS, ASTERISK, ASTERISK ADDONS, AGX EXTRA ADDONS

Para compilar todos los paquetes que nos hemos bajado necesitaremos instalar previamente algunos paquetes básicos, como por ejemplo las cabeceras de nuestro kernel, gcc y algo más asi que adelante:

improvisa:/usr/src# apt-get install linux-headers-`uname -r` build-essential

Empezaremos compilando los drivers para que Debian reconozca nuestra tarjeta, Openvox en mi caso, y podamos pasar de nuestra lineas analogicas RTB a nuestro nuevo sistema Voz Ip, en el proceso de compilación el sistema se encargará de descargar automáticamente los firmwares actuales correspondoentes a las tarjetas que detecte en nuestro sistema.

Descomprimiremos y compilaremos:

improvisa:/usr/src# tar -xvzf dahdi-linux-2.2.0-rc5.tar.gz

improvisa:/usr/src# cd dahdi-linux-2.2.0-rc5

improvisa:/usr/src/dahdi-linux-2.2.0-rc5# make clean

improvisa:/usr/src/dahdi-linux-2.2.0-rc5# make

improvisa:/usr/src/dahdi-linux-2.2.0-rc5# make install

Cuando el proceso termine debe decirnos algo asi:

###################################################
###
### DAHDI installed successfully.
### If you have not done so before, install the package
### dahdi-tools.
###
###################################################

Ahora pasaremos a hacer lo mismo con Dahdi Tools, que nos ayudará a configurar el driver en nuestro Debian:

improvisa:/usr/src# tar -xvzf dahdi-tools-2.2.0-rc3.tar.gz

improvisa:/usr/src# cd dahdi-tools-2.2.0-rc3

Antes de lanzar los comandos comandos make necesitamos instalar un par de paquetes, sino nos saldrán errores del tipo:

Install ncurses to use the menu interface!

o

configure: error: *** termcap support not found

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# apt-get install libncurses5-dev libnewt-dev

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# make distclean

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# make clean

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# ./configure

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# make menuselect

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# make

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# make install

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# make config

Una vez realizada la compilación de las herramientas para Dahdi, generaremos la configuración para la tarjeta, utilizando la herramienta dahdi_genconf, nunca antes de reiniciar el demonio de dahdi:

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# /etc/init.d/dahdi restart

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# dahdi_genconf

Nos dará un error ya qu intenta generar la configuración para asterisk y ocmo no lo encuentra no s lo dará, pero ha hecho lo que queremos y es crear el archivo /etc/dahdi/system.conf. Comprobaremos con la herramienta dahdi_cfg que lo ha hecho bien:

improvisa:/usr/src/dahdi-tools-2.2.0-rc3# dahdi_cfg -vvvvvvvvvvvv
DAHDI Tools Version – 2.2.0-rc2

DAHDI Version: 2.2.0-rc5
Echo Canceller(s): MG2
Configuration
======================

Channel map:

Channel 01: FXS Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 01)
Channel 02: FXS Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 02)

2 channels to configure.

Setting echocan for channel 1 to mg2
Setting echocan for channel 2 to mg2

Perfecto ha generado bien el archivo y la configuracion de dahdi ha sido exitosa, pasemos a compilar asterisk 1.4

Para realizar la compilación de Asterisk 1.4 debemos aclarar un par de cosas y saber que vamos a necesitar en nuestra máquina de producción. Asterisk 1.4 podrá tener canales de muchos tipos por ejemplo, un canal gtalk, una canal h323 pero para ello debemos ir instalando paquetes de debian, yo os dejo un ejemplo para instalar el canal gtalk y de esa forma Asterisk 1.4 pueda tener un trunk contra gtalk.

improvisa:/usr/src# tar -xvzf asterisk-1.4.25.1.tar.gz

improvisa:/usr/src# cd asterisk-1.4.25.1

improvisa:/usr/src/asterisk-1.4.25.1# make distclean

improvisa:/usr/src/asterisk-1.4.25.1# make clean

improvisa:/usr/src/asterisk-1.4.25.1# ./configure

Con el comando configure, elproceso de instalación de Asterisk 1.4 va examinado que tenemos en el equipo instalado, para que de esa forma cuando seleccionemos con el menuselect nos habilite o deshabilite la seleccion de paquetes según tengamos soporte o no. Es en el menuselect donde averiguaremos que paquetes necesitamos instalar para cada aplicativo que queramos añadir a Asterisk 1.4 Nosostros en nuestro ejemplo hemos dicho que queremos habilitar Gtalk, una vez terminado el comando ./configure, podremos lanzar el siguiente:

improvisa:/usr/src/asterisk-1.4.25.1# make menuselect

               **************************************************
                    Asterisk Module and Build Option Selection
                **************************************************

                                Press ‘h’ for help.

                          —> 1.  Applications
                               2.  Call Detail Recording
                               3.  Channel Drivers
                               4.  Codec Translators
                               5.  Format Interpreters
                               6.  Dialplan Functions
                               7.  PBX Modules
                               8.  Resource Modules
                               9.  Voicemail Build Options
                               10. Compiler Flags
                               11. Module Embedding
                               12. Core Sound Packages
                               13. Music On Hold File Packages
                               14. Extras Sound Packages

Navegaremos para ir viendo las opciones que podemos ir habilitando y las que nos interesan para nuestra nueva centralita. En nuestro ejemplo nos moveremos hasta 3.  Channel Drivers y veremos lo siguiente:

                       **************************************************
                            Asterisk Module and Build Option Selection
                        **************************************************

                                        Press ‘h’ for help.

                                       [*] 1.  chan_agent
                                       XXX 2.  chan_alsa
                                       [*] 3.  chan_dahdi
                                       [ ] 4.  chan_features
                                       XXX 5.  chan_gtalk
                                       XXX 6.  chan_h323
                                       [*] 7.  chan_iax2
                                       [*] 8.  chan_local
                                       [*] 9.  chan_mgcp
                                       XXX 10. chan_misdn
                                       XXX 11. chan_nbs
                                           … More …

                                 Gtalk Channel Driver
                                 Depends on: iksemel(E), res_jabber(M)
                                 Can use: gnutls(E)

Si os fijais al situaros encima de cada uno de los paquetes que queremos instalar nos salen en la parte de abajo las dependencias que tiene (siempre y cuando nos salgan las XXX), por ejemplo para añadir el canal Gtalk necesitaremos iksemel o res_jabber, asi que manos a la obra, buscaremos en los repositorios de Debian si tenemos iksemel o algo parecido, para salirnos del menuselect pulsaremos escape un par de veces:

improvisa:/usr/src/asterisk-1.4.25.1# apt-cache search iksemel
libiksemel-dev – C library for the Jabber IM platform
libiksemel-utils – utilities from the iksemel library
libiksemel3 – C library for the Jabber IM platform

Ahí lo tenemos, el paquete es libiksemel-dev, acordaros que para todas las compilaciones necesitaremos los -dev. Instalemos el paquete y volvamos a lanzar el proceso de compilación:

improvisa:/usr/src/asterisk-1.4.25.1# apt-get install libiksemel-dev

improvisa:/usr/src/asterisk-1.4.25.1# make clean

improvisa:/usr/src/asterisk-1.4.25.1# ./configure

improvisa:/usr/src/asterisk-1.4.25.1# make menuselect

Nos iremos a la lista de canales a habilitar y veremos que ya podemos habilitar o deshabilitar el canal gtalk:

                         **************************************************
                            Asterisk Module and Build Option Selection
                        **************************************************

                                        Press ‘h’ for help.

                                       [*] 1.  chan_agent
                                       XXX 2.  chan_alsa
                                       [*] 3.  chan_dahdi
                                       [ ] 4.  chan_features
                                       [*] 5.  chan_gtalk
                                       XXX 6.  chan_h323
                                       [*] 7.  chan_iax2
                                       [*] 8.  chan_local
                                       [*] 9.  chan_mgcp
                                       XXX 10. chan_misdn
                                       XXX 11. chan_nbs
                                           … More …

                                 Gtalk Channel Driver
                                 Depends on: iksemel(E), res_jabber(M)
                                 Can use: gnutls(E)

Perfecto ahora solo falta que peguemos un repaso a todos los paquetes y sleccionemos lo que queremos,  aconsejo que repasemos y habilitemos los siguientes aplicativos speexdsp (codec libre de pequeño tamaño), gtalk, music on hold en todos los formatos, repasar las "Compiler flags" y tenerlas presentes por si una vez terminemos de instalar nos hace falta recompilar con alguna de ellas, por ejemplo si vemos que no nos detecta bien los tonos de marcado (DTMF Tones) podemos habilitar la opción RADIO_RELAX. Sobre las voces en castellano, podéis probarlas pero son una verdadera pena, solo deciros que en es te manual, más adelante, castellanizaremos asterisk 1.4 con las voces de Voip Novatos, voces profesionales y nos las de la rama oficial de Asterisk. No seleccioneis el channel h323 ya que más adelante Asterisk Addons instalrá el que funciona OK.

Una vez que tenemos todo seleccionado como queremos, debemos salvar las opciones marcadas del Menuselect pulsando "x" para guardar y salir una vez hecho terminaremos de compilar:

improvisa:/usr/src/asterisk-1.4.25.1# make

­improvisa:/usr/src/asterisk-1.4.25.1# make install

­improvisa:/usr/src/asterisk-1.4.25.1# make samples

Podemos comprobar que asterisk ya nos empieza a funcionar, aunque no este configurado:

improvisa:/usr/src/asterisk-1.4.25.1# asterisk

­improvisa:/usr/src/asterisk-1.4.25.1# asterisk -rvvvvvvvvv

Asterisk 1.4.25.1, Copyright (C) 1999 – 2008 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistr­ibute it under
certain conditions. Type ‘core show license’ for details.
=========================================================================
  == Parsing ‘/etc/asterisk/asterisk.conf’: Found
  == Parsing ‘/etc/asterisk/extconfig.conf’: Found
Connected to Asterisk 1.4.25.1 currently running on improvisa (pid = 29054)
Verbosity is at least 9
    — Remote UNIX connection
improvisa*CLI> exit

improvisa:/usr/src/asterisk-1.4.25.1# kill -9 `pidof asterisk`

Como podéis ver ya nos medio funciona asterisk, todavia nos falta mucho por configurar pero ya tenemos una parte del trabajo adelantada. Sigamos ahora con la instalación de Asterisk Addons, y los paquetes necesarios para ello.

Asterisk Addons nos agregará aplicaciones para que asterisk se pueda comunicar con mysql, es decir mysql será una dependencia, y como encima lo necesitaremos a la hora de instalar freepbx, pues lo instalaremos ahora, además como ya dije arriba necesitaremos los -dev asi que instalaremos libmysqlclient15-dev para cumplir las dependencias del paquete.

improvisa:/usr/src# apt-get install mysql-server libmysqlclient15-dev

Nos pedirá que le demos la contraseña para el usuario root dentro de mysql. Ahora si vayamos a compilar las Asterisk Addons:

improvisa:/usr/src# tar -xvzf asterisk-addons-1.4.8.tar.gz

improvisa:/usr/src# cd asterisk-addons-1.4.8

improvisa:/usr/src/asterisk-addons-1.4.8# make clean

improvisa:/usr/src/asterisk-addons-1.4.8# ./configure

improvisa:/usr/src/asterisk-addons-1.4.8# make menuselect

improvisa:/usr/src/asterisk-addons-1.4.8# make

improvisa:/usr/src/asterisk-addons-1.4.8# make install

improvisa:/usr/src/asterisk-addons-1.4.8# make samples

Perfecto, ya tenemos habilitado el canal h323 para video conferencias ahora instalaremos un monton de aplicaciones que vienen en AGX Extra Addons  para Asterisk 1.4 y sobre todo una que la necesitaremos para la detección de faxes, pero antes debemos cumplir una de las dependencias que necesita para detectar los faxes y es instalar la libreria spandsp, y como no para que este bucle de dependencias siga delante necesitaremos resolver las dependencias de spandsp:

improvisa:/usr/src#  apt-get install libtiff4-dev

improvisa:/usr/src# tar -xvzf spandsp-0.0.6pre12.tgz   

improvisa:/usr/src# cd spandsp-0.0.6

improvisa:/usr/src/spandsp-0.0.6# ./configure

improvisa:/usr/src/spandsp-0.0.6# make

improvisa:/usr/src/spandsp-0.0.6# make install

Muy bien ya tenemos spandsp 0.0.6 pre 12 instalado, comencemos el proceso de instalcaion de AGX Extra Addons  para Asterisk 1.4:

improvisa:/usr/src# bzip2 -dc agx-ast-addons-1.4.17.5.tar.bz2 | tar -xv

improvisa:/usr/src# cd agx-ast-addons

Debemos instalar cmake, un conjunto de aplicaciones para compilar que utiliza el script build.sh que nos instalará AGX Extra Addons  para Asterisk 1.4

improvisa:/usr/src/agx-ast-addons# apt-get install cmake

improvisa:/usr/src/agx-ast-addons# ./build.sh

Como podemos ver nos ha metido las siguientes aplicaciones en el sitio adecuado:

Install the project…
— Install configuration: "Debug"
— Installing: /usr/lib/asterisk/modules/app_devstate.so
— Installing: /usr/lib/asterisk/modules/app_nv_backgrounddetect.so
— Installing: /usr/lib/asterisk/modules/app_nv_faxdetect.so
— Installing: /usr/lib/asterisk/modules/app_pickup2.so
— Installing: /usr/lib/asterisk/modules/app_txfax.so
— Installing: /usr/lib/asterisk/modules/app_rxfax.so
— Installing: /usr/lib/asterisk/modules/func_devstate.so
— Installing: /usr/lib/asterisk/modules/app_valetparking.so
successfully compiled and installed

La que nosotros necesitamos es app_nv_faxdetect.so

Hemos terminado de compilar casi todo, pasemos a realizar configuraciones:

CONFIGURACIÓN DAHDI Y ASTERISK Y ALGUNAS COMPROBACIONES:

Si os acordais cunado utilizamos la herramienta dahdi_genconf al principio de la guia nos daba un error porque no encontraba asterisk instalado, ahora que ya lo tenemos instalado podemos volver a lanzar el comando y que genere como debe la configuracion de dahdi en asterisk 1.4, informaros que todavía nos falta realizar un par de cambios en unos ficheros para que asterisk reconozca los canales dahdi, con lo cual esas comprobaciones las haremos luego:

improvisa:/# dahdi_genconf

improvisa:/# asterisk

improvisa:/# asterisk -rvvvvv

Comprobemos que la aplicación NVFaxDetect está instalada

improvisa*CLI> show application NVFaxDetect

  -= Info about application ‘NVFaxDetect’ =-                                                     

[Synopsis]
Detects fax sounds on all channel types (IAX and SIP too)

[Description]
  NVFaxDetect([waitdur[|options[|sildur[|mindur[|maxdur]]]]]):
This application listens for fax tones (on IAX and SIP channels too)
for waitdur seconds of time. In addition, it can be interrupted by digits,
or non-silence. Audio is only monitored in the receive direction. If
digits interrupt, they must be the start of a valid extension unless the
option is included to ignore. If fax is detected, it will jump to the
‘fax’ extension. If a period of non-silence greater than ‘mindur’ ms,
yet less than ‘maxdur’ ms is followed by silence at least ‘sildur’ ms
then the app is aborted and processing jumps to the ‘talk’ extension.
If all undetected, control will continue at the next priority.
      waitdur:  Maximum number of seconds to wait (default=4)
      options:
        ‘n’:  Attempt on-hook if unanswered (default=no)
        ‘x’:  DTMF digits terminate without extension (default=no)
        ‘d’:  Ignore DTMF digit detection (default=no)
        ‘f’:  Ignore fax detection (default=no)
        ‘t’:  Ignore talk detection (default=no)
      sildur:  Silence ms after mindur/maxdur before aborting (default=1000)
      mindur:  Minimum non-silence ms needed (default=100)
      maxdur:  Maximum non-silence ms allowed (default=0/forever)
Returns -1 on hangup, and 0 on successful completion with no exit conditions.

For questions or comments, please e-mail support@newmantelecom.com.

The ‘show application’ command is deprecated and will be removed in a future release. Please use ‘core show application’ instead.

improvisa*CLI> exit

Perfecto continuemos con FreePBX

INSTALACIÓN DE FREEPBX

Para instalar FreePBX necesitaremos instalar un montón de paquetes, que segun vayais utilizando este manual es posible que vayan cambiando las versiones, asi que ya sabeis intentad utilizar las de este manual y si no ir uno a uno instalando los paquetes necesarios pàra que FreePBX y Aserisk 1.4 convivan.

Descomprimiremos y comenzaremos a instalar paquetes necesarios:

improvisa:~# cd /usr/src/

improvisa:/usr/src# tar -xvzf freepbx-2.5.1.tar.gz

improvisa:/usr/src# cd freepbx-2.5.1

Editaremos el sources.list de nuestro apt para que recoja de los repositorios de debian multimedia, ya que necesitamos el paquete lame y no se encuentra en los repossitorios oficiales de debian.

improvisa:/usr/src/freepbx-2.5.1# vi /etc/apt/sources.list

Y añadimos al final del archivo las dos siguientes lines:

deb http://oktan.ls.fi.upm.es/debian-multimedia/ stable main
deb-src http://oktan.ls.fi.upm.es/debian-multimedia/ stable main

improvisa:/usr/src/freepbx-2.5.1# apt-get  update

Nos dará error debido a que no hemos instaladola keys del repositorio, para ello instalamos debian-multimedia-keyring pasando del Aviso de autenticaión:

improvisa:/usr/src/freepbx-2.5.1# apt-get install debian-multimedia-keyring
Leyendo lista de paquetes… Hecho                                                                 
Creando árbol de dependencias                                                                      
Leyendo la información de estado… Hecho                                                          
Se instalarán los siguientes paquetes NUEVOS:                                                      
  debian-multimedia-keyring                                                                        
0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados.                              
Necesito descargar 14,3kB de archivos.                                                             
Se utilizarán 65,5kB de espacio de disco adicional después de esta operación.                      
AVISO: ¡No se han podido autenticar los siguientes paquetes!                                       
  debian-multimedia-keyring                                                                        
¿Instalar estos paquetes sin verificación [s/N]? s

Habremos conseguido instalar las key que verifican que los paquetes que descargaremos de ese repositorio son oficiales

Ahora actualizaremos los repositorios:

improvisa:/usr/src/freepbx-2.5.1# apt-get update

Y a instalar:

­improvisa:/usr/src# apt-get install libxml2-dev apache2 libapache2-mod-php5  php5 php-pear php5-mysql php5-gd bison libncurses5-dev libaudiofile-dev curl sox php-db lame libssl-dev

Editaremos el archivo /etc/php5/apache2/php.ini y buscaremos la linea

upload_max_filesize = 2M

y la cambiaremos por

upload_max_filesize  =40M

Tambien dejaremos a Off en este archivo la opcion magic_quotes_gpc

magic_quotes_gpc = Off

Crearemos un grupo y un usuario llamados asterisk con los siguientes comandos:

improvisa:/usr/src/freepbx-2.5.1# groupadd asterisk

improvisa:/usr/src/freepbx-2.5.1# useradd -c "asterisk PBX" -d /var/lib/asterisk -g asterisk asterisk

Crearemos el directorio /var/run/asterisk:

improvisa:/usr/src/freepbx-2.5.1# mkdir /var/run/asterisk

Ahora editaremos la configuración de asterisk para que utilice el directorio que acabamos de crear como directorio de ejecución:

improvisa:/usr/src/freepbx-2.5.1# vi /etc/asterisk/asterisk.conf

La linea a cambiar es la que dice

astrundir => /var/run

y la debemos dejar así:

astrundir => /var/run/asterisk

Ahora instalremos unos cuantos paquetes perl necesarios para FreePBX y Asterisk con los siguientes comandos:

improvisa:/usr/src/freepbx-2.5.1# perl -MCPAN -e ‘install YAML’

Contesaremos a todo que si hasta que nos deje de nuevo en la consola

improvisa:/usr/src/freepbx-2.5.1# perl -MCPAN -e "install IPC::Signal"

improvisa:/usr/src/freepbx-2.5.1# perl -MCPAN -e "install Net::Telnet"

improvisa:/usr/src/freepbx-2.5.1# perl -MCPAN -e "install Proc::WaitStat"

Ahora crearemos las bases de datos necesarias para que FreePBX vaya llenando las tablas con nuestras configuraciones y luego pase a los archivos de asterisk lo necesario para su funcionamiento, recordad que los passwords que pedirán estos comandos son los que pusimos en la instalación de mysql-server

improvisa:/usr/src/freepbx-2.5.1# mysqladmin create asteriskcdrdb -p

improvisa:/usr/src/freepbx-2.5.1# mysql –user=root –password=TU_PASSWORD asteriskcdrdb < /usr/src/freepbx-2.5.1/SQL/cdr_mysql_table.sql

improvisa:/usr/src/freepbx-2.5.1# mysqladmin create asterisk -p

improvisa:/usr/src/freepbx-2.5.1# mysql –user root -p asterisk < /usr/src/freepbx-2.5.1/SQL/newinstall.sql

improvisa:/usr/src/freepbx-2.5.1# mysql –user root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 38
Server version: 5.0.51a-24 lenny1 (Debian)

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.

mysql> GRANT ALL PRIVILEGES on asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY ‘TU_PASSWORD_ASTERISK’;
Query OK, 0 rows affected (0.02 sec)

mysql> GRANT ALL PRIVILEGES on asterisk.* TO asteriskuser@localhost IDENTIFIED BY ‘TU_PASSWORD_ASTERISK’;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

Perfecto ya tenemos creadas las bases de datos con sus tablas y sus datos, ahora debemos decirle a apache2 que se ejecute como el usuario que creamos llamado asterisk y que pertenezca al grupo llamado tambien asterisk, para ello editaremos el archivo /etc/apache2/envvars y sustituiremos www-data por asterisk.

improvisa:/usr/src/freepbx-2.5.1# vi /etc/apache2/envvars

Lo dejaremos así:

# envvars – default environment variables for apache2ctl

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk
export APACHE_PID_FILE=/var/run/apache2.pid

Reinciamos apache2:

improvisa:/usr/src/freepbx-2.5.1# /etc/init.d/apache2 restart

Antes de lanzar la instalación de FreePBX, debemos asegurarnos que asterisk está funcionando:

improvisa:/usr/src/freepbx-2.5.1# kill -9 `pidof asterisk`

improvisa:/usr/src/freepbx-2.5.1# asterisk

Y ahora si, podemos instalar FreePBX para Asterisk 1.4, rellenando como mejor nos parezca, yo dejo las opciones por defecto que me va pidiendo salvo los passwords que para todo utilizo el mismo y el directorio donde se quedará el portal FreePBX que yo lo cambio de /var/www/html a /var/www/freepbx:

improvisa:/usr/src/freepbx-2.5.1# ./install_amp                                  
Checking for PEAR DB..OK                                                         
Checking for PEAR Console::Getopt..OK                                            
Checking user..OK                                                                
Checking if Asterisk is running..running with PID: 29968..OK                     
Checking for /etc/amportal.conf../etc/amportal.conf does not exist, copying default
Creating new /etc/amportal.conf                                                   
Enter your USERNAME to connect to the ‘asterisk’ database:                        
 [asteriskuser]                                                                   
Enter your PASSWORD to connect to the ‘asterisk’ database:                        
 [amp109]  TU_PASSWORD                                                              
Enter the hostname of the ‘asterisk’ database:                                    
 [localhost]                                                                      
Enter a USERNAME to connect to the Asterisk Manager interface:                    
 [admin]                                                                          
Enter a PASSWORD to connect to the Asterisk Manager interface:                    
 [amp111] TU_PASSWORD                                                              
Enter the path to use for your AMP web root:                                      
 [/var/www/html]                                                                  
/var/www/freepbx                                                                  
Created /var/www/freepbx                                                          
Enter the IP ADDRESS or hostname used to access the AMP web-admin:                
 [xx.xx.xx.xx]                                                                    
Enter a PASSWORD to perform call transfers with the Flash Operator Panel:         
 [passw0rd] TU_PASSWORD                                                            
Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]?
 [extensions]                                                                         
Enter directory in which to store AMP executable scripts:                             
 [/var/lib/asterisk/bin]                                                              

Created /var/lib/asterisk/bin
Enter directory in which to store super-user scripts:
 [/usr/local/sbin]

………………………..

Ahora podemos probar si lanza todo bien ejecutando el scrip amportal:

improvisa:/usr/src/freepbx-2.5.1# amportal restart

STOPPING ASTERISK

STOPPING FOP SERVER
SETTING FILE PERMISSIONS
Permissions OK

STARTING ASTERISK
Asterisk Started

STARTING FOP SERVER
FOP Server Started

Podemos comprobar visitando la página web de nuestra nueva centralita abriendo un navegador y entrando en la dirección http://xxx.xxx.xxx.xxx/freepbx

Aprovecharemos y actualizaremos FreePBX, entrad en FreePBX Administration de ahí os moveis a Module Admin, pulsad en Check for updates Online, y luego pinchad en Download All y Upgrade All y luego Process, repetir el proceso varias veces veces hasta que no quede nada por actualizar.

Una vez tenemos todo actualizado, nos iremos al directorio de configuración de Asterisk 1.4 y cambiaremos un par de cosas:

improvisa:~# cd /etc/asterisk/

improvisa:/etc/asterisk# mv chan_dahdi.conf chan_dahdi.conf.ORIGINAL

improvisa:/etc/asterisk# cp chan_dahdi.conf.template chan_dahdi.conf

Reiniciaremos amportal para que Asterisk 1.4 reconozca la tarjeta Openvox con los drivers de Dahdi:

improvisa:~# amportal restart

improvisa:~# asterisk -rvvvv

improvisa*CLI> dahdi show channels
   Chan Extension  Context         Language   MOH Interpret
 pseudo            default                    default
      1            from-pstn       en         default
      2            from-pstn       en         default

improvisa*CLI> exit

Para que podamos sacar llamadas por los canales Dahdi necesitaremos editar el archivo /etc/amportal.conf

improvisa:~# vi /etc/amportal.conf

Bscad la linea comentada que pone

# ZAP2DAHDICOMPAT=true|false

y justo encima pegad esta:

ZAP2DAHDICOMPAT=true

Para que ese bloque quede así:

…………….
# FOPDISABLE=true|false # DEFAULT VALUE false
# Disables FOP in interface and retrieve_conf.  Usefull for sqlite3 or if you don’t want FOP.

ZAP2DAHDICOMPAT=true
# ZAP2DAHDICOMPAT=true|false
# DEFAULT VALUE: false
# If set to true, FreePBX will check if you have chan_dadhi installed. If so, itwill
# automatically use all your ZAP configuration settings (devices and trunks) and
# silently convert them, under the covers, to DAHDI so no changes are needed. The
# GUI will continue to refer to these as ZAP but it will use the proper DAHDI channels.
# This will also keep Zap Channel DIDs working.
…………….

De esta forma FreePBX sabrá configurar Asterisk para que utilize los canales Dahdi con la nueva nomenclatura y no con la antigua.

Reiniciad amportal:

improvisa:~# amportal restart­

Para que Asterisk 1.4 y FreePBX se inicien cuando encendamos el equipo tendremos que realizar lo siguiente:

improvisa:~#  vi /etc/init.d/inicia_asterisk.sh

Y añadiremos lo siguiente:

#!/bin/bash
/usr/local/sbin/amportal start

Demosle permisos de ejecución:

improvisa:~#  chmod a x /etc/init.d/inicia_asterisk.sh

Ahora crearemos un enlace simbólico para que al inicio del sistema llame al script que acabamos de crear:

improvisa:~# ln -s /etc/init.d/inicia_asterisk.sh /etc/rc2.d/S92inicia_asterisk

Ya esta, continuemos con la castellanización­

CASTELLANIZACIÓN DE ASTERISK 1.4

­Para dejar Asteisk 1.4 en español debemos hacer lo siguiente, supongo que habreis probado las voces, sino lo habeis hecho todavia, es hora de añadir una extensión SIP con FreePBX y utilizar un SoftPhone como este de SNOM para "loguearnos" contra la centralita y empezar a llamar por ejemplo al contestador que nos hablará.Si habéis instalado las de la rama oficial os dareis cuenta de lo que hablaba cuando decía que eran una mierda.

Gracias a la recomendacion de Olaf, ahora mismo subo a la zona de descargas las voces en castellano, las que yo tengo no son de Digium, son de las siguientes personas que pagaron por ello y gracias a

La forma de castellanizar es muy fácil, es la siguiente:

Yo utilizo las voces profesionales que gente sin ánimo de lucro pagaron a Voces en la Red para que todos poamos disfrutar de un set de voces profesionales para Asterisk 1.2 1.4, esta gente han sido:

– ­Alberto Sagredo Castro (­­http://www.voipnovatos.es) como propietario del copyright. que además libero las voces para uso y disfrute de todos….
– Capa Tres Soluciones Tecnológicas, S.L. http://www.capatres.com.
– Cyber Espacio Vigo, S.L.
– David Prieto.
– Javier Vidal.
– Jose Manuel Uceda.
– Juan Ignacio Acosta.
– Juan Manuel Vioque.
– Julian Jose Menéndez.
– MicroAlcarria, S.L. http://www.microalcarria.com.
– Peopletel, S.A. http://www.peoplecall.com.
– Risk Soluciones Inalámbricas, S.L. ­http://www.riskinformatica.com.
– Servitux. http://www.servitux.es.
– Silvia Gallego.
– TiendaVozIP.com. http://www.tiendavozip.com.

Bajo todo el pack en todos los formatos de la zona de descargas de improvisa:

improvisa:~# cd /usr/src/

improvisa:/usr/src# wget https://www.improvisa.com/descargas/voces_asterisk_1_4.tar.gz

Descomprimimos las voces:

improvisa:/usr/src# tar -xvzf voces_asterisk_1_4.tar.gz

Si habéis descargado las voces de la rama oficial en la instalación de asterisk, si seleccionasteis los core sounds en español en el make menuselect debemos renombrar el directorio de voces a otro nombre:

improvisa:/usr/src# mv /var/lib/asterisk/sounds/es/ /var/lib/asterisk/sounds/es_RAMA_OFICIAL

improvisa:/usr/src# mv /usr/src/es/ /var/lib/asterisk/sounds/es/

Cambiaremos los permisos:

improvisa:/usr/src# cd /var/lib/asterisk/sounds/es/

improvisa:/var/lib/asterisk/sounds/es# chmod 775 * -R

improvisa:/var/lib/asterisk/sounds/es# chown asterisk:asterisk -R *

Crearemos unos links simbólicos para que asterisk sepa donde tiene todo, si es que utiliza el sistema antiguo de nomneclatura, el de asterisk 1.2. que sepais que se puede cambiar si queremos usarlo o no editando el archivo /etc/astereisk/asterisk.conf cambiando la variable languageprefix a yes o no :

improvisa:/var/lib/asterisk/sounds# ln -s /var/lib/asterisk/sounds/es/dictate/ /var/lib/asterisk/sounds/dictate/es

improvisa:/var/lib/asterisk/sounds# ln -s /var/lib/asterisk/sounds/es/digits /var/lib/asterisk/sounds/digits/es

improvisa:/var/lib/asterisk/sounds# ln -s /var/lib/asterisk/sounds/es/followme /var/lib/asterisk/sounds/followme/es

improvisa:/var/lib/asterisk/sounds# ln -s /var/lib/asterisk/sounds/es/letters /var/lib/asterisk/sounds/letters/es

improvisa:/var/lib/asterisk/sounds# ln -s /var/lib/asterisk/sounds/es/phonetic/ /var/lib/asterisk/sounds/phonetic/es

improvisa:/var/lib/asterisk/sounds# ln -s /var/lib/asterisk/sounds/es/silence/ /var/lib/asterisk/sounds/silence/es

Una vez puestas las voces en su sitio y creados los links simbolicos, debemos modificar los archivos de cada uno de los protocolos que utilizará nuestro Asterisk 1.4

Comencemos con el protocolo SIP

improvisa:/var/lib/asterisk/sounds# vi /etc/asterisk/sip_general_custom.conf

y añadiremos la linea

language=es

Ahora con IAX2:

improvisa:/var/lib/asterisk/sounds# vi /etc/asterisk/iax_general_custom.conf

y añadiremos la linea

language=es

Ahora el archivo de configuración de Dahdi:

improvisa:/var/lib/asterisk/sounds# vi /etc/dahdi/system.conf

Modificaremos las lineas que pone 

loadzone        = us
defaultzone     = us

por

loadzone        = es
defaultzone     = es

Ahora el archivo de Dahdi para Asterik:

improvisa:/etc/asterisk# vi /etc/asterisk/chan_dahdi.conf

Y sustituimos:

language=en

por

language=es

Reiniciaremos amportal y dahdi:

improvisa:/var/lib/asterisk/sounds# amportal stop

improvisa:/var/lib/asterisk/sounds# /etc/init.d/dahdi restart

improvisa:/var/lib/asterisk/sounds# amportal start

Y ya deberiamos tener nuestras voces en castellano.

Hasta aquí la instalación de Asterisk si quereis implantar el servicio de Fax continuad.­

INSTALACIÓN DE HYLAFAX, IAXMODEM

Si no quereis soporte para Fax podéis pasar de este apartado.

Pasaremos ahora a configurar el servidor de fax, para ello nos basaremos en un artículo ya expuesto en Improvisa, es el que dejamos en el serial de Trucos de Asterisk, la entrega número 3 en concreto, empezaremos instalando Hylafax:

improvisa:~# apt-get install hylafax-server

Ahora añadiremos una extensión en nuestra centralita, entramos en FreePBX y añadimos una nueva extensión tipo IAX2:

User Extension: 401

Display Name: Fax

secret: 401

Ya está no toco nada más de la configuración de la extensión, ahora lo único decirle a FreePBX que detecte los Faxes, para ello entraremos en el apartado Inbound Routes y crearemos una, en mi caso todas las llamadas entrantes se comportarán de la misma forma (any DID/any CID), vosotros podéis hacerlo según vuestras necesidades, pero en cada una de la rutas entrantes que deseemos que el fax sea localizado debemos tocar lo siguiente:

General Settings –> Fax Machine –> Extension ……. –> 401
General Settings –> Fax Machine –> Mail ……. –> Vacio
General Settings –> Fax Machine –> Mail ……. –> Vacio

Inbound Routes –> any DID / any CID –> Fax Handling –> Fax Extension –> 401
Inbound Routes –> any DID / any CID –> Fax Handling –> Fax Mail –> Vacio
Inbound Routes –> any DID / any CID –> Fax Handling –> Fax Detection Type –> NVFax
Inbound Routes –> any DID / any CID –> Fax Handling –> Pause after answer –> 4

De esta forma el fax que entre por cualquier linea será enrutado a nuestra extension de Fax, la 401.

Ahora configuraremos IAXMODEM, el modem visrtual que se conectará a nuestra extension de Asterisk:

improvisa:~# apt-get install iaxmodem

Crearemos el archivo que contendrá la configuración del nuevo modem:

improvisa:~# vi /etc/iaxmodem/ttyIAX

Añadiremos lo siguiente:

device /dev/ttyIAX
owner asterisk:asterisk
mode 660
port 45699
refresh 300
server 127.0.0.1
peername 401
secret 401
cidname IAX Modem 1
cidnumber 401
codec slinear

Guardar y comprobar que funciona:

improvisa:~# iaxmodem ttyIAX
[2009-06-24 16:02:05] Modem started
[2009-06-24 16:02:05] Setting device = ‘/dev/ttyIAX’
[2009-06-24 16:02:05] Setting owner = ‘asterisk:asterisk’
[2009-06-24 16:02:05] Setting mode = ‘660’
[2009-06-24 16:02:05] Setting port = 45699
[2009-06-24 16:02:05] Setting refresh = 300
[2009-06-24 16:02:05] Setting server = ‘127.0.0.1’
[2009-06-24 16:02:05] Setting peername = ‘401’
[2009-06-24 16:02:05] Setting secret = ‘401’
[2009-06-24 16:02:05] Setting cidname = ‘IAX Modem 1’
[2009-06-24 16:02:05] Setting cidnumber = ‘401’
[2009-06-24 16:02:05] Setting codec = slinear
[2009-06-24 16:02:05] Opened pty, slave device: /dev/pts/3
[2009-06-24 16:02:05] Removed old /dev/ttyIAX
[2009-06-24 16:02:05] Created /dev/ttyIAX symbolic link
[2009-06-24 16:02:05] Registration completed successfully.

Perfecto, se ha registrado a la perfección, pulsad ctrl c para salir.

* NOTA: Si observamos después de la instalación, en las pruebas que el fax se comporta de manera extraña, cuelga entes de recibir los faxes, no descuelga, probad con el codec ulaw en el archivo de configuracion de iaxmodem: /etc/iaxmodem/ttyIAX

 

Hagamos ahora que Hylafax utilice iaxmodem creando el archivo de configuación:

improvisa:~# vi /etc/hylafax/config.ttyIAX­­­

­

Poniendo en el archivo vacio el siguiente contenido, modificando segun vuestras necesidades el nombre de la empresa lo códigos telefónicos….:

 # $Id: iaxmodem,v 1.1 2006/04/02 23:18:30 darren Exp $

#
# prototype config for the IAXmodem softmodem which uses
# the spandsp soft-DSP library
#

#
CountryCode:            0034
AreaCode:               959
FAXNumber:              267758
LongDistancePrefix:     00
InternationalPrefix:    00
DialStringRules:        etc/dialrules
ServerTracing:          1
SessionTracing:         11
RecvFileMode:           0600
LogFileMode:            0600
DeviceMode:             0600
RingsBeforeAnswer:      1
SpeakerVolume:          off
GettyArgs:              "-h %l dx_%s"
LocalIdentifier:        TUEMPRESA
TagLineFont:            etc/lutRS18.pcf
TagLineFormat:          "From %%l|%c|Page %%P of %%T"
MaxRecvPages:           50
#

#
#
# Modem-related stuff: should reflect modem command interface
# and hardware connection/cabling (e.g. flow control).
#
ModemType:              Class1          # use this to supply a hint

#
# The modem is taken off-hook during initialization, and then
# placed back on-hook when done to prevent glare.
#
ModemResetCmds:         "ATH1
AT VCID=1"       # enables CallID display
ModemReadyCmds:         ATH0

Class1AdaptRecvCmd:     AT FAR=1
Class1TMConnectDelay:   400             # counteract quick CONNECT response
Class1RMQueryCmd:       "!24,48,72,96"  # V.17 fast-train recv doesn’t work well

CallIDPattern:          "NMBR="
CallIDPattern:          "NAME="
CallIDPattern:          "ANID="
CallIDPattern:          "NDID="
# Uncomment these if you really want them, but you probably don’t.
#CallIDPattern:          "DATE="
#CallIDPattern:          "TIME="

Hagamos ahora que el proceso que lanza IAXMODEM y el proceso que se encarga de recoger los faxes de el modem no se paren nunca, es decir que si se "caen" se recuperen solos, para ello editaremos el archivo /etc/inittab y añadiremos un par de lineas al final.

iax:2345:respawn:/usr/bin/iaxmodem ttyIAX&> /var/log/iaxmodem-ttyIAX
T0:2345:respawn:/usr/sbin/faxgetty ttyIAX&> /var/log/faxgetty-ttyIAX

Digamosle a ahora a Hylafax que debe hacer con los faxes que llegan creando el archivo /etc/hylafax/FaxDispatch

improvisa:~# vi /etc/hylafax/FaxDispatch

Y pongamos el siguiente contenido:

FILETYPE=pdf;
SENDTO=tumail@tudominio.com;

Reiniciemos el servicio Hylafax, cuando reinicieis daros cuenta que sincronizará los ficheros que hemos creado en /etc/hylafax con los que hylafax utiliza en realidad /var/spool/hylafax

improvisa:~# /etc/init.d/hylafax restart

Ahora obligaremos al sistema a volver a leer el archivo /etc/inittab sin tener que reiniciar utilizando el siguiente comando:

improvisa:~# kill -HUP 1

Despues de realizar estos dos pasos de reinicio podemos comprobar con el comando ps aux que tenemos lanzados los 4 procesos correspondientes a los servicios de fax:

improvisa:~# ps aux

…………………
…………………
…………………
uucp      4723  0.0  0.2   6520  1200 ?        S<s  09:54   0:00 /usr/sbin/faxq
uucp      4727  0.0  0.2   4720  1516 ?        S<   09:54   0:00 /usr/sbin/hfaxd -d -i 4559
uucp      4737  0.0  0.1   3132  1024 pts/2    Ss   09:54   0:00 /usr/bin/iaxmodem ttyIAX
uucp      4738  0.0  0.3   5132  1832 ?        Ss   09:54   0:00 /usr/sbin/faxgetty ttyIAX

Podemos comprobar en la consola de Asterisk 1.4 que el modem IAXMODEM ha iniciado sesion contra su extensión:

improvisa:~# asterisk -rvvvvvv
Asterisk 1.4.25.1, Copyright (C) 1999 – 2008 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type ‘core show license’ for details.
=========================================================================
  == Parsing ‘/etc/asterisk/asterisk.conf’: Found
  == Parsing ‘/etc/asterisk/extconfig.conf’: Found
Connected to Asterisk 1.4.25.1 currently running on improvisa (pid = 4795)
Verbosity is at least 6
improvisa*CLI> iax2 show peers
Name/Username    Host                 Mask             Port          Status
401              127.0.0.1       (D)  255.255.255.255  40870         OK (2 ms)
1 iax2 peers [1 online, 0 offline, 0 unmonitored]

Ahli lo tenemos la extension 401 monitorizada con un estado de OK.

Antes de hacer la prueba para recibir un fax contaros que Debian en su instalación por defecto viene con el sistema de corre Exim, el cual viene configurado de tal forma que no permite sacar correos al exterior, yo me olvido de Exim e instalo Postfix para poder enviar mails desde el  propio servidor hacia el mundo exterior. Total, que si quereis configuraros otra servicio de correo, como por ejemplo Exim, lo dejo en vuestra manos, yo aquí en el manual lo haré con Postfix y os contaré como lo configuro:

improvisa:~# apt-get install postfix

En la instalción nos preguntará que Tipo genérico de configuración de correo queremos utilizar, decidle Sitio de Internet, el nombre dejad el que sea que lo cambiaremos ahora.

Editemos los archivos de configuración de Postfix para que envie mails y los servidores a los que mandemos los mails nos permitan la recepción, uya que si no lo configuramos bien muchos nos tomarán como spammers.

improvisa:~# vi /etc/mailname

Y cambiad lo que haya por un dominio real en internet que vosotros utilizeis, yo he puest:

improvisa.com 

Con esto conseguiremos que los mails salgan con el usuario que lo manda, por ejemplo FaxMaster y como dominio utilice el que acabamos de poner en /etc/mailname

Editemos ahora /etc/postfix/main.cf

improvisa:~# vi /etc/postfix/main.cf

y buscad la linea que comienza con myhostname y sustituid lo que tenga por el mismo dominio que habéis utilizado en /etc/mailname/ en mi ejemplo:

myhostname = improvisa.com

Guardad, salir y reiniciar postfix:

improvisa:~# /etc/init.d/postfix restart

Mandemonos un mail desde la consola para probar lo haremos con el siguiente código:

improvisa:~# echo "Prueba desde la nueva centralita" | mail -s "Asunto: Prueba" tu_usuario@tu_dominio
­

Podéis ver más comandos para mandaros al mail információn desde la consola en otro documento que publicamos en Improvisa hace tiempo, se llama Enviar mail desde consola.

Aseguraos que os llega al mail que habéis indicado, mirar la carpeta de "No deseado" o "Spam" por si las moscas, si aun así no os llega mirad el log de Postfix que os dará información, el log es /var/log/mail.log, si abris otra consola contra el servidor y en ella poneis tail -f /var/log/mail.log y desde la otra que tenemos intentaremos enviar de nuevo el mail con el comando que hemos utilizado arriba.

Ahora si, si quereis podéis probar a mandaros un fax y os debería llegar al correo electronico que pusimos en el archivo FaxDispatch.

INSTALACIÓN DE AVANTFAX

Pasemos ahora a instalar AvantFax que nos permitirá tener mejor organizada la recepción de faxes y nos facilitará enormemente el envio de los mismos.

­Antes de instalar Avantfax debemos cumplir sus dependecias, como nos dice su página de instalación, si comenzais el manual aquí pasando de la instalcion de la centralita repasad la página de instalación de Avantfax para cumplir todas sus dependencias ya que en el rtanscurso de este manual se han ido cumpliendo muchas de ellas. Pongamonos manos a la obra y a instalar paquetes necesarios:

improvisa:~# apt-get install imagemagick ghostscript netpbm libungif4-dev sudo cups expect libmagic-dev php5-dev

Si el paquete smbclient, dependecia de Cups, os pregunta por vuestro grupo de trabajo contestadle como tengais en vuestros lugares de instalación y lo mismo con la pregutna de si Samba debe utlizar el Wins proveniente del dhcp, rellenad pero no es improtante para nuestros propositos.

Instalaremos ahora paquetes que necesita php previa actualizacion de los repositorios:

improvisa:~# pecl channel-update pear.php.net

improvisa:~# pecl install fileinfo

improvisa:~# pear install MDB2_driver_mysql

improvisa:~# pear install Mail

improvisa:~# pear install Mail_Mime

improvisa:/usr/src/avantfax-3.1.6# pear install Net_SMTP

Descomprimamos Avantfax y realicemos los ultimos ajustes para que nos funcione:

improvisa:~# cd /usr/src/

improvisa:/usr/src# tar -xvzf avantfax-3.1.6.tgz

improvisa:/usr/src# cd avantfax-3.1.6

improvisa:/usr/src/avantfax-3.1.6# cp -r avantfax/ /var/www/

Demosle permisos al usuario con el que se ejecuta Apache, recordad que lo cambiamos en su momento de www-data a asterisk, para que funcionase FreePBX:

improvisa:/usr/src/avantfax-3.1.6# chown asterisk:asterisk -R /var/www/avantfax/

improvisa:/usr/src/avantfax-3.1.6# chmod -R 777 /var/www/avantfax/tmp /var/www/avantfax/faxes

Crearemos unos enlaces simbólicos que necesita AvantFax:

improvisa:/usr/src/avantfax-3.1.6# ln -s /var/www/avantfax/includes/faxrcvd.php /var/spool/hylafax/bin/faxrcvd.php

improvisa:/usr/src/avantfax-3.1.6# ln -s /var/www/avantfax/includes/dynconf.php /var/spool/hylafax/bin/dynconf.php

improvisa:/usr/src/avantfax-3.1.6# ln -s /var/www/avantfax/includes/notify.php /var/spool/hylafax/bin/notify.php

Ahora modificaremos el archivo de configuración del modem IAXMODEM en Hylafax:

improvisa:/usr/src/avantfax-3.1.6# vi /etc/hylafax/config.ttyIAX

y añadiremos justo al final lo siguiente:

#
## AvantFAX configuration
#
FaxrcvdCmd:     bin/faxrcvd.php
DynamicConfig:  bin/dynconf.php
UseJobTSI:      true

Otra vez lo mismo:

improvisa:/usr/src/avantfax-3.1.6# vi /etc/hylafax/config

Añadiendo esto al final del contenido del mismo:

#
## AvantFAX configuration
#
NotifyCmd:      bin/notify.php

Debemos ahora cambiar la caratula utilixzada por HylaFax por la que trae AvantFax:

improvisa:/usr/src/avantfax-3.1.6# mv /usr/bin/faxcover /usr/bin/faxcover.old

improvisa:/usr/src/avantfax-3.1.6# ln -s /var/www/avantfax/includes/faxcover.php /usr/bin/faxcover

Editaremos el archivo que crea el usuario de la base de datos que necesita AvantFax para cambiar lapassword que utiliza por la nuestra:

improvisa:/usr/src/avantfax-3.1.6# vi /usr/src/avantfax-3.1.6/create_user.sql

Y cambiar la clave d58fe49 por la vuestra, yo como os he dicho arriba utilizo la misma para todo.

Ahora crearemos la base de datos y usuarios de la base de datos que utilizará AvantFax:

improvisa:/usr/src/avantfax-3.1.6# mysql -uroot -p < /usr/src/avantfax-3.1.6/create_user.sql

improvisa:/usr/src/avantfax-3.1.6# mysql -uavantfax -pTU_PASSWORD avantfax < create_tables.sql

­Ahora necesitaremos crear un usuario en Hylafax para que el usuario que ejecuta Apache, acordaros que lo cambiamos de www-data por asterisk, pueda enviar los faxes:

improvisa:/usr/src/avantfax-3.1.6# faxadduser -a TU_PASSWORD asterisk

Si hechamos un ojo al archivo/etc/hylafax/hosts.hfaxd veremos que se ha creado nuestro usuario:

improvisa:/usr/src/avantfax-3.1.6# vi /etc/hylafax/hosts.hfaxd
# hosts.hfaxd
# This file contains permissions and password for every user in
# the system.
#
# For more information on this biject, please see its man page
# and the commands faxadduser and faxdeluser.
localhost:21::
^asterisk@:::/1Ry021hA0I1E

Existe un problema con este archivo y es que el usuario que utiliza Avantfax debe estar en primer lugar asi que debeis dejarlo asi:

# hosts.hfaxd
# This file contains permissions and password for every user in
# the system.
#
# For more information on this biject, please see its man page
# and the commands faxadduser and faxdeluser.
^asterisk@:::/1Ry021hA0I1E

localhost:21::

Guardad y salir

Reinciemos Hylafaxm, acordaros que sincronizará los archivos de configuración:

improvisa:/usr/src/avantfax-3.1.6# /etc/init.d/hylafax restart

Ahora debemos modificar el archivo de configuración de AvantFax para que recoja los datos que queremos:

improvisa:/usr/src/avantfax-3.1.6# cd /var/www/avantfax/includes/

improvisa:/var/www/avantfax/includes# cp local_config-example.php local_config.php

improvisa:/var/www/avantfax/includes# vi local_config.php

Realizar los siguientes cambios en el archivo:

AFDB_PASS –> TU_PASSWORD

FAXRMPWD –> TU_PASSWORD

FAXMAILUSER –> faxmaster

WWWUSER –> asterisk

ADMIN_EMAIL –> tu_mail

dft_config_lang –> es

Añadiremos un par de tareas al cron para que borre archivos temporales de subidas y otra para que cree la agenda telefonica:

improvisa:/var/www/avantfax/includes# vi /etc/cron.d/avantfax

y añadiremos esto:

# Cada hora par actualizar la agenda
0 * * * * /var/www/avantfax/includes/phb.php
# Una vez al día para borrar temporales
0 0 * * * /var/www/avantfax/includes/avantfaxcron.php -t 2

Editaremos ahora el archivo /etc/sudoers para permitir a AvantFax reiniciar la máquina por si falla algo. Para guardar el archivo /etc/sudoers debemos guardarlo con wq! en vim ya que se inicia como solo lectura, si utlizas otro editor te aconsejo que utilices visudo

improvisa:/var/www/avantfax/includes# vi /etc/sudoers

Y añadiremos al final

asterisk ALL = NOPASSWD: /sbin/reboot, /sbin/halt, /usr/sbin/faxdeluser, /usr/sbin/faxadduser -u * -p * *

Si no quereis que desde AvantFax se pueda reiniciar el equipo, no añadais los comandos /sbin/reboot, /sbin/halt

Ya podemos entrar en la suite AvantFax, abrir un explorador web y navegar hasta la dirección http://xxx.xxx.xxx.xxx/avantfax El usuario es admin y la password es password, la cual os pedira que la cambieis nada más entrar, cambiadla de nuevo por la que lleveis utilizando todo el rato.

Necesitaremos crear una categoria al menos y un modem en la suite de AvantFax, para ello pinchad en el ordenadorcito que hay debajo de la palabra Configuración al lado de un logo de SuperMan, somos SuperAdmins 🙂 y en el desplegable iros hasta Categorias de Faxes y cread una que se llame por ejemplo Trabajo, ahora iremos en el desplegable a Configurar Modems y allí crearemos el nuestro con los siguientes datos:

Dispositivo –> ttyIAX
Alias –> Fax
Contacto –> Vacio
Impresora –> Vacio
Categoría –> Trabajo

Si os fijais al entrar en http://xxx.xxx.xxxx.xxx/avantfax/inbox.php ya nos sale Fax [Disponible] Todo lo nuevo que nos llegue o enviemos ya podremos hacerlo desde AvantFax, la creación de usuarios os la dejo a vosotros, investigad un poquitin 😉

Si quereis que los faxes recibidos antes de instalar AvantFax estén en la suite debéis teclear los siguientes comandos:

improvisa:/var/www/avantfax/includes# cd /var/spool/hylafax

improvisa:/var/spool/hylafax# for i in `ls recvq/*`; do bin/faxrcvd.php $i ttyIAX; done

Si quereis que los faxes enviados antes de la instalcaion de AvabtFax pasen a estar en AvantFax teclead los siguientes comandos:

improvisa:/var/spool/hylafax# cd /var/spool/hylafax

improvisa:/var/spool/hylafax# for i in `ls doneq/q*`; do bin/notify.php $i done:30; done

Antes de probar si podéis enviar faxes, no olvideis que teneis que crear los trunks de salida en FreePBX y alguan Outbound Route, es decir rutas salientes. En el caso de este ejemplo, ya que tengo dos módulos instalados en mi tarjeta OpenVox:

FreePBX –> Setup –> Trunks –> Add Zap Trunk (DAHDI compatibility mode) –> Zap Identifier (trunk name) –> g0

FreePBX –> Setup –> Trunks –> Add Zap Trunk (DAHDI compatibility mode) –> Zap Identifier (trunk name) –> g1

FreePBX –> Setup –> Outbound Routes –> Add Route –> Route Name –> TU_TELEFONO

FreePBX –> Setup –> Outbound Routes –> Add Route –> Dial Patterns –> . (el punto dejara salir cualquier cosa)

FreePBX –> Setup –> Outbound Routes –> Add Route –> Trunk Sequence –> g0

FreePBX –> Setup –> Outbound Routes –> Add Route –> Trunk Sequence –> g1

Con eso cualquier llamada saldrá por uno de los dos módulos que tenemos en nuestra tarjeta.

INSTALACIÓN DE PHPMYADMIN

Phpmyadmin es una suite para manejar mysql desde la web, muy comoda para nuestro futuros propositos y poder saber que esta pasndo en Asterisk 1.4 con Freepbx y Avantfax, no es necesario instalarlo pero es posible que más adelante lo necesitemos:

improvisa:/var/spool/hylafax# apt-get install phpmyadmin

Cuando nos pregunte que servidor web utilizamos decidle apache2.

Una vez instalado editemos el archivo de configuración, ya que si nos dará al entrar en la página web http://xxx.xxx.xxx.xxx/phpmyadmin  el error:

El archivo de configuración ahora necesita salvoconducto (una frase secreta) (blowfish_secret).

Editemos la configuración 

improvisa:/var/spool/hylafax# vi /etc/phpmyadmin/config.inc.php

Buscad la linea

//$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;

y sustituidla por, fijaros que esta va descomentada:

$cfg[‘Servers’][$i][‘auth_type’] = ‘http’;

Necesitamos crear el archivo del que sacará el usuario y la contraseña:

improvisa:/var/spool/hylafax# htpasswd -c -m /etc/phpmyadmin/htpasswd.setup TUSUARIO

Ahora si podéis navegar hasta la dirección http://xxx.xxx.xxx.xxx/phpmyadmin  y meter vuestro usuario y contraseña.

AGRADECIMIENTOS:

Pues ya sólo queda dar las gracias a los colaboradores de este documentos que como siempre se lo curran un montón ayudando:

Alberto Salgredo de VoIP para Novatos de donde hemos sacado las voces para castellanizar asterisk 1.4, gracias por el curre 😉

Juan Carlos Valero de Capatres que para lo único que hablamos es para que me solucione problemas, mil gracias sigue asi 😉

Alfonso de MicroAlcarria si no es por el todo esto del linux para mi no hubiese tenido sentido, mil gracias Alfonso 😉

Angel Manuel de Doctores del PC que me pica y pica para que siga investigando y cacharreando y al final montando estos documentos, mil gracias Cels, trabajar contigo es un placer 😉

A los creadores de debian, asterisk, dahdi, freepbxhylafax, ­­avantfax, spandsp, y el largusimo etcetera de creadores de software libre que nos hacen la vida mucho más fácil.

A vosotros que juntos mejoraremos este manual y que haceis que Improvisa pueda seguir sacando buenas guías, howtos, manuales, o como querais llamarlo.

­­

Print Friendly, PDF & Email
Comentarios

    Warning: Use of undefined constant type - assumed 'type' (this will throw an Error in a future version of PHP) in /home/improvisa_com/web/improvisa.com/public_html/wp-content/themes/grassland/comments.php on line 38
  • Juanmi dice:

    Si en la instalación de AvantFax, al ejecutar el siguiente comando:

    improvisa:~# pear install Mail_Mime

    pear/Mail_Mime requires PEAR Installer (version >= 1.6.0), installed version is 1.4.11
    pear/Mail_mimeDecode requires PEAR Installer (version >= 1.6.0), installed version is 1.4.11
    pear/Mail_mimeDecode requires package "pear/Mail_Mime" (version >= 1.4.0, excluded versions: 1.4.0)
    No valid packages found
    install failed

    Debemos actualizar PEAR de la siguiente forma:

    improvisa:~# pear upgrade –force PEAR

    warning: pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.11
    downloading PEAR-1.8.1.tgz …
    Starting to download PEAR-1.8.1.tgz (290,382 bytes)
    ……………………………………………………done: 290,382 bytes
    downloading Archive_Tar-1.3.3.tgz …
    Starting to download Archive_Tar-1.3.3.tgz (18,119 bytes)
    …done: 18,119 bytes
    Validation Error: This package.xml requires PEAR version 1.5.4 to parse properly, we are version 1.4.11
    Parsing of package.xml from file "/tmp/pear/cache/package2.xml" failed
    Download of "pear/Archive_Tar" succeeded, but it is not a valid package archive
    Error: cannot download "pear/Archive_Tar"
    downloading Structures_Graph-1.0.2.tgz …
    Starting to download Structures_Graph-1.0.2.tgz (30,947 bytes)
    …done: 30,947 bytes
    downloading Console_Getopt-1.2.3.tgz …
    Starting to download Console_Getopt-1.2.3.tgz (4,011 bytes)
    …done: 4,011 bytes
    downloading XML_Util-1.2.1.tgz …
    Starting to download XML_Util-1.2.1.tgz (17,729 bytes)
    …done: 17,729 bytes
    upgrade ok: channel://pear.php.net/XML_Util-1.2.1
    upgrade ok: channel://pear.php.net/Console_Getopt-1.2.3
    upgrade ok: channel://pear.php.net/Structures_Graph-1.0.2
    upgrade ok: channel://pear.php.net/PEAR-1.8.1
    PEAR: Optional feature webinstaller available (PEAR’s web-based installer)
    PEAR: Optional feature gtkinstaller available (PEAR’s PHP-GTK-based installer)
    PEAR: Optional feature gtk2installer available (PEAR’s PHP-GTK2-based installer)
    To install use "pear install pear/PEAR#featurename"

  • Juanmi dice:

    ­

    Para crear una portada personalizada de fax para AvantFax yo he utilizado el programa tgif:

    apt-get install tgif

    Una vez instalado, generamos con el la portada como queramos añadiendo cajetines de texto con las variables que necesitemos. Las variables a utilizar serán las siguientes:

    XXXX-to
    XXXX-to-company
    XXXX-to-location
    XXXX-to-voice-number
    XXXX-to-fax-number
    XXXX-regarding
    XXXX-from
    XXXX-from-company
    XXXX-from-location
    XXXX-from-voice-number
    XXXX-from-fax-number
    XXXX-page-count
    XXXX-todays-date
    XXXX-comments0
    XXXX-comments1
    …..
    …..
    XXXX-comments30

    Una vez la tengamos diseñada, simplemente le daremos a Imprimir en formato Latex, EPS.

    Moveremos el archivo original:

    mv /var/www/avantfax/images/cover.ps /var/www/avantfax/images/cover.p.ORIGINAL

    Y ahora subiremos el nuevo al servidor, yo lo he hecho con scp:

    scp /home/juanmi/cover.ps.eps root@centralita:/var/www/avantfax/images/cover.ps

    Fijaros bien en que al final hay que renombrarlo a PS

    Saludos.­

    ­

  • shambala dice:

    antes que nada una excelente guia, sol oque tengo un problema con el freepbx, mas bien con el FOP cuando quiero entrar me marcar esto : Firefox no puede encontrar el servidor en xx.xx.xx.xx. ya en el amportal.conf cambie la ip por ladel server perno ni asi

  • Juanmi dice:

    Pues a mi me ha funcionado a la perfección, teines que entrar a la página con lo mismo que has configurado en amportal.conf

    Por ejemplo mi amportal.conf:

    AMPWEBADDRESS=centralita.guadawireless.net

    y en Iceweasel pongo:

    http://centralita.guadawireless.net/freepbx/admin/panel.php

     Saludos y bienvenido 😉