<span style="font-family: Arial, Helvetica, sans-serif; font-size: 10pt"><br />
<span style="font-family: tahoma,arial,sans-serif; font-size: 10pt;"><hr width="100%" size="2" align="center" />
<b>From</b>: "khalid touati" &lt;khalidtouati@gmail.com&gt;<br />
<b>Sent</b>: Tuesday, June 21, 2011 9:12 AM<br />
<b>To</b>: "Asterisk Users Mailing List - Non-Commercial Discussion" &lt;asterisk-users@lists.digium.com&gt;<br />
<b>Subject</b>: Re: [asterisk-users] Problem with ReceiveFAX app from FFA</span><br />
<br />
Ok, for the variables, I can retrieve some of them like the caller number and so on (I would assume that all the variables that last for duration of call are there), but I still think that I sould not use the h extension to continue after ReceiveFAX use, it's like not a lot of people use FFA, moreover very few came accross such an issue which is fine.<br />
<br />
&nbsp;<hr width="100%" size="2" align="center" />
<br />
<br />
<br />
<p>Here is a receivefax example. Note this is not a complete example just a snip. You have to use the "h" extension if you really want to make it all work. Don't fight it just do it. This is a standard process very similar to how you need to handle returns from "Dial" comands. </p>
<p>f/F option is a special patch written by Kevin @ digium and will not be in the distro unitl 10.x<br />
FAX-MASTER_CHK-FAILED(${CALLERID(number)) FAX-MASTER_DO-FAILED()&nbsp; are database storage macro that stores and get's failed fax attempts so I can force a roll back. Store the fax vars in a database on success and fail. This lets me notify the user for either case. </p>
<p>[fax_inbound_efax]<br />
exten =&gt; PFax,1,Set(SIP_CODEC=ulaw)<br />
exten =&gt; PFax,n,Set(l_faxoptions=f)<br />
exten =&gt; PFax,n,Set(l_faxhasfailed=${FAX-MASTER_CHK-FAILED(${CALLERID(number)},${p_CallSrcTrunk})})<br />
exten =&gt; PFax,n,GotoIf($[${l_faxhasfailed}&gt;0]?audioonly:tryt38)<br />
exten =&gt; PFax,n(audioonly),Set(l_faxoptions=F)<br />
exten =&gt; PFax,n(tryt38),Answer()<br />
exten =&gt; PFax,n,Wait(2)<br />
exten =&gt; PFax,n,Set(l_faxFile_Base=${STRFTIME(,,%Y%m%d-%H%M)}_${RAND(1)})<br />
exten =&gt; PFax,n,Set(l_faxFile_Path=/var/spool/fax_in/)<br />
exten =&gt; PFax,n,Set(l_faxFile_FullName=fax_${l_faxFile_Base}.tiff)<br />
exten =&gt; PFax,n,Set(l_faxFile=${l_faxFile_Path}${l_faxFile_FullName})<br />
exten =&gt; PFax,n,ReceiveFAX(${l_faxFile},${l_faxoptions})</p>
<p>exten =&gt; h,1,NoOp(Do Fax Hangup)<br />
exten =&gt; h,n,Goto(Do-${FAXOPT(status)},1)</p>
<p>exten =&gt; Do-SUCCESS,1,NoOp(Fax Success)<br />
exten =&gt; Do-SUCCESS,n,Goto(Do-Store,1)<br />
exten =&gt; Do-SUCCESS,n,NoOp(Return from System)</p>
<p>exten =&gt; Do-FAILED,1,NoOp(Fax Failed)<br />
exten =&gt; Do-FAILED,n,GotoIf($[${l_faxoptions}=f]?DoLogFallback:DoNoFallback)<br />
exten =&gt; Do-FAILED,n(DoLogFallback),Set(FAX-MASTER_DO-FAILED()=${CALLERID(number)},${p_CallSrcTrunk})<br />
exten =&gt; Do-FAILED,n(DoNoFallback),Goto(Do-Store,1)</p>
<p>exten =&gt; Do-Store,1,NoOp(Store Fax Data)<br />
exten =&gt; Do-Store,n,GotoIf($["${FAXOPT(rate)}"=""]?DoRate0:DoRate)<br />
exten =&gt; Do-Store,n(DoRate0),Set(l_storeRate=0)<br />
exten =&gt; Do-Store,n,Goto(DoDisplay)<br />
exten =&gt; Do-Store,n(DoRate),Set(l_storeRate=${FAXOPT(rate)})<br />
exten =&gt; Do-Store,n(DoDisplay),NoOp(DT = ${STRFTIME(,,%Y-%m-%d %H:%M:%S)})<br />
exten =&gt; Do-Store,n,NoOp(Fax Base = ${l_faxFile_Base})<br />
exten =&gt; Do-Store,n,NoOp(Switch ID = ${gbl_switchid})<br />
exten =&gt; Do-Store,n,NoOp(Account Code = ${gbl_actnumber})<br />
exten =&gt; Do-Store,n,NoOp(Line Code&nbsp; = ${gbl_actlineid})<br />
exten =&gt; Do-Store,n,NoOp(Caller ID Num = ${CALLERID(number)})<br />
exten =&gt; Do-Store,n,NoOp(Caller ID Name = ${CALLERID(name)})<br />
exten =&gt; Do-Store,n,NoOp(File Path = ${l_faxFile_Path})<br />
exten =&gt; Do-Store,n,NoOp(File Name = ${l_faxFile_FullName})<br />
exten =&gt; Do-Store,n,NoOp(opt emc = ${FAXOPT(ecm)})<br />
exten =&gt; Do-Store,n,NoOp(opt filename = ${FAXOPT(filename)})<br />
exten =&gt; Do-Store,n,NoOp(opt localstationid = ${FAXOPT(localstationid)})<br />
exten =&gt; Do-Store,n,NoOp(opt headerinfo = ${FAXOPT(headerinfo)})<br />
exten =&gt; Do-Store,n,NoOp(opt remotestationid = ${FAXOPT(remotestationid)})<br />
exten =&gt; Do-Store,n,NoOp(opt maxrate = ${FAXOPT(maxrate)})<br />
exten =&gt; Do-Store,n,NoOp(opt minrate = ${FAXOPT(minrate)})<br />
exten =&gt; Do-Store,n,NoOp(opt rate = ${l_storeRate})<br />
exten =&gt; Do-Store,n,NoOp(opt pages = ${FAXOPT(pages)})<br />
exten =&gt; Do-Store,n,NoOp(opt resolution = ${FAXOPT(resolution)})<br />
exten =&gt; Do-Store,n,NoOp(opt error = ${FAXOPT(error)})<br />
exten =&gt; Do-Store,n,NoOp(opt status = ${FAXOPT(status)})<br />
exten =&gt; Do-Store,n,NoOp(opt statusstr = ${FAXOPT(statusstr)})<br />
exten =&gt; Do-Store,n,"Run some kind of macro or storage/email script here"</p>
<br />
Good luck<br />
<br />
Bryant</span>