Created
July 12, 2019 18:25
-
-
Save warewolf/30f140d52e9ef943a21efdb03a7221ac to your computer and use it in GitHub Desktop.
fax interception asterisk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; set dahdi-channels.conf's fax line to use this context | |
[fax-intercept] | |
include => from-internal | |
; expects "immediate=yes" on dahdi line | |
exten => s,1,Answer() | |
; emulate dialtone while reading the number being dialed | |
same => n,ReadExten(FAXOUT,dial,${CONTEXT},i,30) | |
same => n,Verbose(10,Dialing fax to ${FAXOUT}) | |
same => n,Ringing() | |
; It takes ~ 4 seconds to dial a 10 digit number from the fax | |
same => n,Wait(5) | |
; normal calls continue here | |
same => n,GoTo(${CONTEXT},${FAXOUT},1) | |
; fax interception - dahdi hijacking the call starts here | |
exten => fax,1,Verbose(5,Sending fax to ${FAXOUT}) | |
same => n,Verbose(10,**** FAX RECEIVE ****) | |
same => n,Set(__FAXFILE=outgoing-${FAXOUT}-${STRFTIME(,,%C%y%m%d%H%M)}.tif) | |
same => n,Verbose(10,**** SETTING FAXOPT ****) | |
same => n,Set(FAXOPT(ecm)=yes) | |
same => n,Set(FAXOPT(maxrate)=14400) | |
same => n,Set(FAXOPT(minrate)=2400) | |
same => n,Verbose(10,FAXOPT(ecm) : ${FAXOPT(ecm)}) | |
same => n,Verbose(10,FAXOPT(headerinfo) : ${FAXOPT(headerinfo)}) | |
same => n,Verbose(10,FAXOPT(localstationid) : ${FAXOPT(localstationid)}) | |
same => n,Verbose(10,FAXOPT(maxrate) : ${FAXOPT(maxrate)}) | |
same => n,Verbose(10,FAXOPT(minrate) : ${FAXOPT(minrate)}) | |
same => n,Verbose(10,**** FAX RECEIVE FILE : ${FAXFILE} ****) | |
same => n,ReceiveFAX(/var/spool/asterisk/fax/${FAXFILE}) | |
same => n,Hangup() | |
exten => h,1,Verbose(10,**** FAX RECEIVE COMPLETE ***) | |
; This needs to be global otherwise the Originate context doesn't know the fax filename | |
same => n,Set(GLOBAL(FAXFILE)=${FAXFILE}) | |
same => n,GoToIf(Len(${FAXFILE})>0?RelayFax:FaxHangup) | |
same => n(RelayFax),Verbose(10,Relaying fax to ${FAXOUT}) | |
; send this to the upstream PBX that actually has a SIP trunk to the PSTN | |
same => n,Originate(SIP/${FAXOUT}@UPSTREAM_PBX,exten,fax-relay,start,1) | |
same => n,Verbose(10,Originate status ${ORIGINATE_STATUS}) | |
same => n(FaxHangup),Verbose(10,Hanging up on Fax) | |
same => n,Hangup() | |
[fax-relay] | |
exten => start,1,Verbose(10,*** FAX RELAY ***) | |
same => n,Verbose(10,Fax file is ${FAXFILE}) | |
same => n,SendFax(/var/spool/asterisk/fax/${FAXFILE}) | |
same => n,Verbose(10,Fax relay status: ${FAXSTATUS}) | |
exten => h,1,Verbose(10,(Reached hangup fallthrough) | |
same => n,Hangup |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment