FreePBX with Hylafax and Avantfax on Debian Jessie
I recently had to install a fax2mail and pcfax solution for outbound faxes using a FreePBX. Thee most convenient way to do this is using Hylafax, as it has some decent clients for sending faxes like the Winprint HylaFAX Reloaded Windows printer driver.
For managing and searching inbound faxes, Avantfax is a nice solution that not only covers sending Fax2mail (that could also be done with FreePBX directly with just a few settings), but also has a fax archive which can be made searchable using OCR.
So here is how I did it:
1) Install iaxmodem
apt-get install iaxmodem hylafax-server vi /etc/iaxmodem/ttyIAX0
device /dev/ttyIAX0 owner uucp:uucp mode 660 port 4570 refresh 60 server 127.0.0.1 peername 71 secret 111password codec ulaw cidname Fax cidnumber 4311234567 nojitterbuffer
2) Create extension in FreePBX:
Here we assume extension number 71
Applications / Extensions / Add New IAX2 Extension
secret 111password notransfer yes context from-internal host dynamic type friend port 4570 qualify yes disallow all allow alaw deny 0.0.0.0/0.0.0.0 permit 0.0.0.0/0.0.0.0 requirecalltoken no
3) Setup hylafax with iaxmodem
chown uucp:uucp /etc/iaxmodem/ttyIAX0 /etc/init.d/iaxmodem start faxsetup
Do you want to run faxaddmodem to configure a modem [yes]? Serial port that modem is connected to [ttyS0]? ttyIAX0 Country code [1]? 43 Area code [415]? 1 Phone number of fax modem [+1.999.555.1212]? +43.1.1234567 Local identification string (for TSI/CIG) ["NothingSetup"]? Long distance dialing prefix [1]? 0 International dialing prefix [011]? 00 Dial string rules file (relative to /var/spool/hylafax) [etc/dialrules]? Tracing during normal server operation [1]? Tracing during send and receive sessions [11]? Protection mode for received facsimile [0600]? Protection mode for session logs [0600]? Protection mode for ttyS0 [0600]? Rings to wait before answering [1]? Modem speaker volume [off]? Command line arguments to getty program ["-h %l dx_%s"]? Pathname of TSI access control list file (relative to /var/spool/hylafax) [""]? Pathname of Caller-ID access control list file (relative to /var/spool/hylafax) [""]? Tag line font file (relative to /var/spool/hylafax) [etc/lutRS18.pcf]? Tag line format string ["From %%l|%c|Page %%P of %%T"]? Time before purging a stale UUCP lock file (secs) [30]? Hold UUCP lockfile during inbound data calls [Yes]? Hold UUCP lockfile during inbound voice calls [Yes]? Percent good lines to accept during copy quality checking [95]? Max consecutive bad lines to accept during copy quality checking [5]? Max number of pages to accept in a received facsimile [25]? Syslog facility name for ServerTracing messages [daemon]? Set UID to 0 to manipulate CLOCAL [""]? Use available priority job scheduling mechanism [""]? The non-default server configuration parameters are: CountryCode: 43 AreaCode: 1 FAXNumber: +43.1.1234567 LongDistancePrefix: 0 InternationalPrefix: 00 DialStringRules: etc/dialrules SessionTracing: 11 RingsBeforeAnswer: 1 SpeakerVolume: off GettyArgs: "-h %l dx_%s" LocalIdentifier: "NothingSetup" TagLineFont: etc/lutRS18.pcf TagLineFormat: "From %%l|%c|Page %%P of %%T" MaxRecvPages: 25 Are these ok [yes]? Now we are going to probe the tty port to figure out the type of modem that is attached. This takes a few seconds, so be patient. Note that if you do not have the modem cabled to the port, or the modem is turned off, this may hang (just go and cable up the modem or turn it on, or whatever). Probing for best speed to talk to modem: 38400 OK. About fax classes: The difference between fax classes has to do with how HylaFAX interacts with the modem and the fax protocol features that are used when sending or receiving faxes. One class isn't inherently better than another; however, one probably will suit a user's needs better than others. Class 1 relies on HylaFAX to perform the bulk of the fax protocol. Class 2 relies on the modem to perform the bulk of the fax protocol. Class 2.0 is similar to Class 2 but may include more features. Class 1.0 is similar to Class 1 but may add V.34-fax capability. Class 2.1 is similar to Class 2.0 but adds V.34-fax capability. HylaFAX generally will have more features when using Class 1/1.0 than when using most modems' Class 2 or Class 2.0 implementations. Generally any problems encountered in Class 1/1.0 can be resolved by modifications to HylaFAX, but usually any problems encountered in Class 2/2.0/2.1 will require the modem manufacturer to resolve it. Use Class 1 unless you have a good reason not to. This modem looks to have support for Class 1.0 and 1. How should it be configured [1.0]? Hmm, this looks like a Class 1.0 modem. Product code (ATI0) is "spandsp". Other information (ATI3) is "www.soft-switch.org". DTE-DCE flow control scheme [default]? Modem manufacturer is "Unknown". Modem model is "Unknown". Using prototype configuration file class1.0... There is no prototype configuration file for your modem, so we will have to fill in the appropriate parameters by hand. You will need the manual for how to program your modem to do this task. In case you are uncertain of the meaning of a configuration parameter you should consult the config(5) manual page for an explanation. Note that modem commands must be specified exactly as they are to be sent to the modem. Note also that quote marks (") will not be displayed and will automatically be deleted. You can use this facility to supply null parameters as "". Finally, beware that the set of parameters is long. If you prefer to use your favorite editor instead of this script you should fill things in here as best you can and then edit the configuration file "/var/spool/hylafax/etc/config.ttyIAX0" after completing this procedure. Command to enter Class 1 [AT+FCLASS=1.0]? Command to stop and wait prior to sending PPM [AT+FTS=7]? Command to stop and wait prior to sending TCF [AT+FTS=7]? Command to stop and wait prior to sending EOP [AT+FTS=9]? Extra bytes in a received HDLC frame [4]? Maximum time to wait for OK after aborting a receive (ms) [200]? Maximum wait for initial identification frame (ms) [40000]? Command to ensure silence after receiving HDLC and before sending [AT+FRS=7]? The modem configuration parameters are: Class1Cmd: AT+FCLASS=1.0 Class1PPMWaitCmd: AT+FTS=7 Class1TCFWaitCmd: AT+FTS=7 Class1EOPWaitCmd: AT+FTS=9 Class1FrameOverhead: 4 Class1RecvAbortOK: 200 Class1RecvIdentTimer: 40000 Class1SwitchingCmd: AT+FRS=7 Class1TCFMaxNonZero: 10 Class1TCFMinRun: 1000 Are these ok [yes]? Creating new configuration file /var/spool/hylafax/etc/config.ttyIAX0... Creating fifo /var/spool/hylafax/FIFO.ttyIAX0 for faxgetty... done. Done setting up the modem configuration. Checking /var/spool/hylafax/etc/config for consistency... ...everything looks ok; leaving existing file unchanged. Don't forget to restart hylafax in order to run faxgetty on this new modem line. /var/spool/hylafax/config Do you want to run faxaddmodem to configure another modem [yes]? no You do not appear to be using faxgetty to notify the HylaFAX scheduler about new modems and/or their status. This means that you must use the faxmodem program to inform the new faxq process about the modems you want to have scheduled by HylaFAX. Beware that if you have modems that require non-default capabilities specified to faxmodem then you should read faxmodem(8) manual page and do this work yourself (since this script is not intelligent enough to automatically figure out the modem capabilities and supply the appropriate arguments). Should I run faxmodem for each configured modem [yes]? /usr/sbin/faxmodem ttyIAX0 Done verifying system setup. /var/spool/hylafax
4) Setup avantfax
cd /usr/src wget http://downloads.sourceforge.net/project/avantfax/avantfax-3.3.5.tgz tar -xzvf avantfax-3.3.5.tgz rm avantfax-3.3.5.tgz cd avantfax-3.3.5/ vi debian-prefs.txt
ROOTMYSQLPWD=[your DB root pw] HTTPDUSER=asterisk HTTPDGROUP=asterisk
Here I set user of HTTPD to asterisk, as running FreePBX with a user other than asterisk usually is causing troubles. Of course, this needs to be adapted to your host enironment
./debian-install.sh mv /etc/apache2/sites-enabled/000-default /etc/apache2/sites-available/002-avatfax.conf vi /etc/apache2/sites-available/002-avatfax.conf
<VirtualHost *:80> DocumentRoot /var/www/avantfax ServerName my.faxdomain.com ErrorLog ${APACHE_LOG_DIR}/avantfax-error_log CustomLog ${APACHE_LOG_DIR}/avantfax-access_log common <Directory "/var/www/avantfax"> AllowOverride All <Directory> </VirtualHost>
a2ensite 002-avatfax
service apache2 reload
faxadduser -p changepasswd fax
5) Enable and install tesseract OCR for avantfax
apt-get install tesseract-ocr tesseract-ocr-deu tesseract-ocr-deu-frak tesseract-ocr-eng tesseract-ocr-fra vi /var/www/avantfax/includes/local_config.php
define('ENABLE_OCR_SUPPORT', true);
6) Configure Avantfax
Admin menu -> Configure Modems -> ttypIAX0 -> Contact:
Write e-mail address where incoming mails need to be forwarded to
With these simple steps, I was able to get FreePBX running with Hylafax and Avantfax web interfae.
Comments
Hey, thanks for the guide. I’m having a hard time finding where exactly Apache is serving Avantfax though. All the defaults I’ve tried haven’t worked. 127.0.0.1/avantfax etc.
Hm. Been at it for a few hours now, still no luck. Very frustrating. Tried changing the ServerName, adding ServerAlias’s without success. Where the hell is Apache serving the AvantFax web pages? I’ve tried to access them everywhere.
I tried your method but after that my pbx gui is not opening anymore.
Trackbacks