I am having troubles with sending faxes. I hope someone can help me work out a better method.
Basically we have a special address that our users can send to. It winds up on our Asterisk server which runs a Python script that parses the message for attachments and the phone number from the recipient address. The attachments are converted to TIFF and stored in a folder with various information encoded into the file name such as phone number and retry information. That all works fine. A separate process picks up the files and sends them using an AMI script like this: Action: Originate Channel: SIP/provider/%(destination)s Context: LocalSets CallerID: Vybe Consulting Inc Fax Service <6475551212> Exten: sendfax Priority: 1 Timeout: 30000 Variable: faxfile=%(faxfile)s Variable: uid=%(uid)s Variable: destination=%(destination)s Variable: sender_name=Vybe Consulting Inc Fax Service Variable: sender_num=6475551212 It then renames the file encoding the next retry time and incrementing the number of retries. The same script checks for files in a success folder and sends the users a confirmation message that the fax was sent. The files are moved into the success folder by Asterisk using this dialplan: sendfax,1,Verbose(0,FAX ${faxfile} to ${destination}) same => n,Set(FAXOPT(headerinfo)=${sender_name}) same => n,Set(FAXOPT(localstationid)=${sender_num}) same => n,SendFax(${faxfile},d) same => n,Set(STATUS=Status: ${FAXOPT(status)}) same => n,Set(STATUS=${STATUS}\nRemote ID: ${FAXOPT(remotestationid)}) same => n,Set(STATUS=${STATUS}\nMaxrate: ${FAXOPT(maxrate)}) same => n,Set(STATUS=${STATUS}\nMinrate: ${FAXOPT(minrate)}) same => n,Set(STATUS=${STATUS}\nECM: ${FAXOPT(ecm)}) same => n,Set(STATUS=${STATUS}\nnumber of pages: ${FAXOPT(pages)}) same => n,Set(STATUS=${STATUS}\nRate: ${FAXOPT(rate)}) same => n,Set(STATUS=${STATUS}\nResolution: ${FAXOPT(resolution)}) same => n,GotoIf($["${FAXOPT(status)}" = "SUCCESS"]?faxok) same => n,Set(STATUS=${STATUS}\nError: ${FAXOPT(error)}) same => n(faxok),Verbose(0,FAX ${destination} Status (S): ${STATUS}) same => n,Set(FAXNAME=${CUT(faxfile,/,6)}) same => n,Set(FILE(/fax_status/${FAXNAME})=${STATUS}) same => n,GotoIf($["${FAXOPT(status)}" != "SUCCESS"]?faxfail) same => n,System(/bin/mv '${faxfile}' '/fax_success/${FAXNAME}') same => n,Set(CDR(userfield)=${destination}) same => n,Verbose(0,FAX to ${destination} charged to ${uid}) same => n(faxfail),Verbose(0,FAX ${destination} Status (F): ${STATUS}) same => n,Hangup() My problem is that if the faxes get too big it starts sending it again before the previous one has finished. I can't raise the retry limit too far because sometimes the receiver is busy and we have to retry in a reasonable time. Is there a way to get a token from the AMI script that I can use to determine later if Asterisk is still busy with the fax before I try sending it again? Or, am I approaching this all wrong? Is there a better method of doing this? I am running Asterisk 13.19.0 on NetBSD/amd64 7.1.0. -- D'Arcy J.M. Cain Vybe Networks Inc. http://www.VybeNetworks.com/ IM:da...@vex.net VoIP: sip:da...@vybenetworks.com -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- Check out the new Asterisk community forum at: https://community.asterisk.org/ New to Asterisk? Start here: https://wiki.asterisk.org/wiki/display/AST/Getting+Started asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users