darle la capacidad a tu asterisk de manipular FAX
Se requiere:
Hylafax, puede ser descargado para RedHat o Centos Aqui:
ftp://ftp.hylafax.org/binary/linux/redhat/RPMS/i386/
IaxModem
http://iaxmodem.sourceforge.net/
Ademas de:
ghostscript y sharutils
En algunas instalaciones esta incluido, en otras las tendran que
incluir. si se tratara de CentOS, con yum install ghostscript sharutils
se puede descargar de internet e instalarlo en el servidor de FAX.
GNU/Linux siempre ha tenido la capacidad de enviar y recibir FAX, antes
del Boom el Vozip y de Asterisk, esto para GNU/Linux es cosa simple y
tenemos 2 opciones para realizarlo.
Conseguir un FAX/MODEM antiguo, algunos ni los han de conocer, son esas
cajas viejas con luces que hacían ruidos en la linea telefónica, algunos
nos conectamos con eso a Internet a una súper velocidad de 14,400 kbps,
hasta un celular sin 3G en puro EDGE es 10 veces mas rápido que eso, en
fin.
Como sera difícil conseguir un FAX/Modem de hardware, usaremos el
IAXMODEM, que es básicamente un programa que se comportara como módem y
usara el protocolo IAX para conectarse al asterisk todo en software
El Iaxmodem.tar.gz debe descomprimirse y compilarse, ya que viene en
código fuente, finalmente hay que copiar el programa de iaxmodem de
forma manual a la carpeta /usr/bin, cp iaxmodem /usr/bin
Se una vez con el ejecutable de iaxmodem, habra que configurarlo para
que sepa a que servidor IAX se conectara, en este caso nuestro asterisk.
Se crea el directorio /etc/iaxmodem y luego se crea el archivo
/etc/iaxmodem/ttyIAX donde se pondran las configuraciones
device /dev/ttyIAX
port 45699
refresh 300
server localhost
peername xxx
secret yyy
cidname Fax
cidnumber xxx
codec alaw
El asterisk se prepara para recibir la conexión de un nuevo dispositivo
IAX, que en este caso sera el software que la hara de MODEM
[xxx]
username=xxx
type=friend
secret=yyy
qualify=yes
notransfer=yes
host=dynamic
context=Tu-contexto
callerid=”Virtual Fax”
allow=all
Donde xxx es el usuario y extensión, donde yyy es la clave para esa
extensión.
Se puede automatizar el recibir FAX, pero esto es opcional, por ejemplo
cuando una maquina FAX llamada a nuestro Asterisk, ASterisk detectara
que es un FAX y lo reenviara inmediatamente a la extension de FAX sin
que la recepcionista tenga que mover un dedo
Dependiendo si usas Dahdi o Zapata, sabrás en que archivo debes colocar
esta linea
faxdetect=incoming
En tu extension.conf debes agregar la siguiente
exten => fax,1,Dial(IAX2/xxx)
Como explico, esto es opcional, si no lo agregas, simplemente la
recepcionista tendrá que transferir manualmente al a extensión de FAX
que de hecho es la forma común en prácticamente el 99% de las empresas.
Con esto Asterisk sabe que tiene un nuevo telefono IAX conectado.
Con lo anterior terminamos con Asterisk y su manejo de un FaxModem en
Software.
Lo siguiente, los que alguna vez ya enviaron y recibieron FAX lo deben
saber, por que esto ya no es nuevo.
Preparar Linux para manejar FAX y decirle cual es su FAX modem, solo que
en lugar de usar el FAX hardware físico, usara el IAXMODEM
Configurando el Hylafax
faxsetup
La mayoria de las preguntas que este programa hara se dejan en su
contenido default, salvo se quiera modificar alguna cosa.
Afinando la configuración en el archivo
/var/spool/hylafax/etc/FaxDispatch se le dice a HylaFAX a que correo
electrónico debe enviar los faxes recibidos
SENDTO=FaxMaster;
FILETYPE=pdf;
case “$DEVICE” in
ttyIAX) SENDTO=david@lastdragon.net;; # all faxes received on ttyS1
esac
Se puede afinar mas, pero con el FAxMaster y un solo correo electrónico
debería ser suficiente para la mayoria.
Finalmente hay que ligar la parte del sistema operativo que “piensa” que
tiene un FAX/MODEM de verdad con el Fax Virtual IAXMODEM.
Agregamos las siguientes 2 lineas en /etc/inittab
iax:2345:respawn:/usr/bin/iaxmodem ttyIAX &>
/var/log/asterisk/iaxmodem-ttyIAX
fax:2345:respawn:/usr/sbin/faxgetty ttyIAX
Reiniciamos todos los programas HylaFax, recargamos asterisk y el init.
telinit q
service hylafax restart
asterisk -rx reload
O tal vez simplemente sea mas cómodo un simple shutdown -r now y esperar
a que se reinicie todo el equipo.
Si todo salio como se espera, al marcar la extensión asignada al
iaxmodem, este debe dar todo de FAX y si recibe un FAX, lo codificara a
PDF y adjuntara al correo proveeido /var/spool/hylafax/etc/FaxDispatch
Enviar FAX
Enviar FAX es de hecho ya un proceso muy simple a partir de este punto.
El hecho lo anterior, ya también se esta en posibilidad de enviar faxes,
con el programa sendfax
por ejemplo:
sendfax -n -d 5511236741 miarchivo.pdf
Ese comando va a mandar el contenido del archivo “miarchivo.pdf” al
numero 5511236741.
El comando resuelve de hecho el problema, pero no se le puede pedir a un
usuario común que entre a una sesión de shell a un entorno tipo Unix a
enviar un FAX, por lo que hay que hacer un frontend
Hay varios metodos.
Crear un buzón de correo electrónico donde el numero telefónico sea el
correo por ejemplo 5511236741@miservidordefax.com
y que el pdf adjunto sea lo que
hay que enviar. El programa de esa forma construiría el comando sendfax
y lo enviaría.
Se lee fácil, todos sabemos enviar un correo electrónico y adjuntarle
archivos.
Otro método que es el que preferí, para mi gusto mas fácil de programar
ya que lo hice en exactamente 2:30 segundos.
Escribir una pagina WEB con 2 campos, un campo para el numero a marcar y
el otro para subir el archivo PDF, al darle submit o enviar, un script
en php se encargaría de construir y ejecutar el sendfax
Yo lo resolví con este segundo método y dejare el código de no mas de 10
lineas que resolvió el asunto de enviar un FAX. Esto sigue siendo fácil
para el usuario, una pagina WEB llenar campos y listo se envía el fax
Codigo para el Front End WEB
Archivo Enviar.html
Enviar FAX
Numero telefonico
Enviar Archivo PDF:
Nota: Tu archivo no debe pasar de 2MB
David Rivero: david@lastdragon.net
Archivo enviar.php
// $cmd = “sendfax ân âd “.$nfax.” “.$pdff;
$fdestino = $_FILES[’archivo’][’name’];
$forigen = $_FILES[’archivo’][’tmp_name’];
$nfax = $_POST[’nfax’];
$copiar = “cp “.$forigen.” “.$fdestino;
$enviarfax = “sendfax -n -d “.$nfax.” “.$fdestino;
system ($copiar);
system ($enviarfax);
echo “
Enviando….”;
?>
Fuente: http://www.lastdragon.net/?p=396
No hay comentarios:
Publicar un comentario