Switchvox - How do you send a fax through an h extension?

Switchvox - How do you send a fax through an h extension?

If you want to implement fax storing and forwarding methods, you may encounter the issue where Asterisk is unable to generate a new calls from the h extensions. Since the h extension is executed just before the channel destruction, it prevents any new calls from being placed.

In order to workaround this issue, you can call a script from theSystemapplication to generate a call file. When Asterisk reads this call file, a new call will be placed.

The script 

#!/bin/bash 
# $1 CALL ID: Used to name the filename
# $2 PEER: Used to set the PEER in which the call will be placed  
# $3 DID : Number dialed on the peer 
# $4 FAX IMAGE: Tiff image of the fax 
# $5 ECM: Set if ECM is going to be enabled or disabled 
# $6 MIN RATE : Sets Fax min speed 
# $7 MAX RATE  Sets Fax max speed 

if [ "$#" -ne "7" ]; then exit 1; fi 
echo "channel: $2/$3" > /tmp/$1.call 
echo "application: SendFax" >> /tmp/$1.call 
echo "data: $4" >> /tmp/$1.call 
echo "setVar=FAXID=$1" >> /tmp/$1.call 
echo "setVar=FAXOPT(ecm)=$5" >> /tmp/$1.call 
echo "setVar=FAXOPT(minrate)=$6" >> /tmp/$1.call 
echo "setvar=FAXOPT(maxrate)=$7" >> /tmp/$1.call 
chmod 777 /tmp/$1.call 
mv /tmp/$1.call /var/spool/asterisk/outgoing/ 
exit 0 

Examples 

  • Within extensions.conf, here's an example of how you would tell Asterisk to run this script: 

exten => h,1,System (/path/to/file/fax.sh ${EPOCH} SIP/PROVIDER ${varDID} ${varNumber} ${varFILE} yes 2400 14400)

  • From the terminal, you would like to run the following command for testing purposes:

./fax.sh $(date +%s) SIP/PROVIDER 1234567890 fax.tiff yes 2400 14400