PDF file into TIFF format using following shell command:-

gs -dNOPAUSE -q -sDEVICE=tiffg4 -dBATCH -sOutputFile=/tmp/filename.pdf /tmp/fax/filename.tiff


The command which is used to send or receive fax are as follows:-

ReceiveFAX

SendFAX


You can detect whether the call is a fax call or not by configuring faxdetect = both in chan_dahdi.conf, It will auto route the call to fax extension. example for receiving fax:-



  exten => _X.,1,NoOp(hello world)
  exten => _X.,n,wait(6)
  exten => fax,1,Verbose(got a Fax on ${EXTEN})
  exten => fax,n,NoOp(**** FAX RECEIVE ****)
  exten => fax,n,Set(GLOBAL(FAXCOUNT)=$[ ${GLOBAL(FAXCOUNT)} + 1 ])
  exten => fax,n,Set(FAXCOUNT=${GLOBAL(FAXCOUNT)})
  exten => fax,n,Set(FAXFILE=fax-${FAXCOUNT}-rx.tif)
  exten => fax,n,Set(GLOBAL(LASTFAXCALLERNUM)=${CALLERID(num)})
  exten => fax,n,Set(GLOBAL(LASTFAXCALLERNAME)=${CALLERID(name)})
  exten => fax,n,NoOp(**** SETTING FAXOPT ****)
  exten => fax,n,Set(FAXOPT(ecm)=yes)
  exten => fax,n,Set(FAXOPT(headerinfo)=MY FAXBACK RX)
  exten => fax,n,Set(FAXOPT(localstationid)=1234567890)
  exten => fax,n,Set(FAXOPT(maxrate)=14400)
  exten => fax,n,Set(FAXOPT(minrate)=2400)
  exten => fax,n,NoOp(FAXOPT(ecm) : ${FAXOPT(ecm)})
  exten => fax,n,NoOp(FAXOPT(headerinfo) : ${FAXOPT(headerinfo)})
  exten => fax,n,NoOp(FAXOPT(localstationid) : ${FAXOPT(localstationid)})
  exten => fax,n,NoOp(FAXOPT(maxrate) : ${FAXOPT(maxrate)})
  exten => fax,n,NoOp(FAXOPT(minrate) : ${FAXOPT(minrate)})
  exten => fax,n,NoOp(**** RECEIVING FAX : ${FAXFILE} ****)
  exten => fax,n,ReceiveFAX(/var/spool/asterisk/fax/${FAXFILE})

Example for sending fax:-
exten => _X.,1,NoOp(hello world)
exten => _X.,n,wait(6)
exten => _X.,n,Set(FAXFILE=${TIFF_2_SEND})
exten => _X.,n,NoOp(**** SETTING FAXOPT ****)
exten => _X.,n,Set(FAXOPT(ecm)=yes)
exten => _X.,n,Set(FAXOPT(headerinfo)=${TAGLINE})
exten => _X.,n,Set(FAXOPT(maxrate)=14400)
exten => _X.,n,Set(FAXOPT(minrate)=2400)
exten => _X.,n,NoOp(**** SENDING FAX : ${FAXFILE} ****)
exten => _X.,n,SendFAX(${FAXFILE},dfzs)
exten => h,1,NoOp(FaxStatus : ${FAXSTATUS})
exten => h,1,NoOp(FAXOPT(ecm) : ${FAXOPT(ecm)})
exten => h,n,NoOp(FAXOPT(filename) : ${FAXOPT(filename)})
exten => h,n,NoOp(FAXOPT(headerinfo) : ${FAXOPT(headerinfo)})
exten => h,n,NoOp(FAXOPT(localstationid) : ${FAXOPT(localstationid)})
exten => h,n,NoOp(FAXOPT(maxrate) : ${FAXOPT(maxrate)})
exten => h,n,NoOp(FAXOPT(minrate) : ${FAXOPT(minrate)})
exten => h,n,NoOp(FAXOPT(pages) : ${FAXOPT(pages)})
exten => h,n,NoOp(FAXOPT(rate) : ${FAXOPT(rate)})
exten => h,n,NoOp(FAXOPT(remotestationid) : ${FAXOPT(remotestationid)})
exten => h,n,NoOp(FAXOPT(resolution) : ${FAXOPT(resolution)})
exten => h,n,NoOp(FAXOPT(status) : ${FAXOPT(status)})
exten => h,n,NoOp(FAXOPT(statusstr) : ${FAXOPT(statusstr)})
exten => h,n,NoOp(FAXOPT(error) : ${FAXOPT(error)})
exten => h,n,NoOp(DNIS: ${RECEIVER})