یکی از روش های رایج در دریافت فکس، ارسال فکس های دریافتی و ارسال آن ها از طریق ایمیل به کاربر مورد نظر می باشد. برای انجام این کار در FreePBX، ابتدا از ماژول user management کاربری را که می خواهید امکان دریافت فکس داشته باشد، انتخاب کنید؛ از قسمت فکس Enable را yes کنید. سپس در قسمت User Details ایمیلی را که می خواهید فکس به آن ایمیل شود را وارد کنید. اما به صورت پیش فرض بعد از ارسال فکس از طریق ایمیل، فایل فکس از روی سرور حذف می گردد که در ادامه روش جلوگیری از این عمل را آموزش می دهیم. پس اگر بخواهیم فکس فقط در سیستم ذخیره شود و دیگر ارسال نشود یک ایمیل غیر معتبر وارد می کنیم.
بعد از این مرحله با استفاده از ماژول Inbound Route، یک مسیر ورودی تعریف کرده و در قسمت DID شماره ی داخلی فکس را وارد می کنیم. سپس به قسمت فکس رفته و گزینه ی detect fax را yes می کنیم. و در آخر در قسمت destination fax گزینه ی fax recipient و سپس داخلی فکس را انتخاب می کنیم. از این پس اگر تشخیص داده شود که تماس از نوع فکس است، آن تماس به مقصد تعریف شده هدایت و برای آن کاربر ایمیل می شود.
حال برای ذخیره کردن فکس و جلوگیری از حذف آن، مراحل زیر را نجام دهید.
فایل extension_override_freepbx.conf را باز می کنیم و context زیر را در آن کپی می کنیم:
[ext-fax]
include => ext-fax-custom
exten => 3,1,Set(FAX_FOR=fax (3))
exten => 3,n,Noop(Receiving Fax for: ${FAX_FOR}, From: ${CALLERID(all)})
exten => 3,n,Set(FAX_ATTACH_FORMAT=pdf)
exten => 3,n,Set([email protected])
exten => 3,n(receivefax),Goto(s,receivefax)
exten => s,1,Macro(user-callerid,)
exten => s,n,Noop(Receiving Fax for: ${FAX_RX_EMAIL} , From: ${CALLERID(all)})
exten => s,n(receivefax),StopPlaytones
exten => s,n,ReceiveFAX(${ASTSPOOLDIR}/fax/${UNIQUEID}.tif,f)
exten => s,n,ExecIf($["${FAXSTATUS:0:6}"="FAILED" && "${FAXERROR}"!="INIT_ERROR"]?Set(FAXSTATUS=”FAILED: error: ${FAXERROR} statusstr: ${FAXOPT(statusstr)}”))
exten => s,n,Hangup
exten => h,1,GotoIf($[${STAT(e,${ASTSPOOLDIR}/fax/${UNIQUEID}.tif)} = 0]?failed)
exten => h,n(process),GotoIf($[${LEN(${FAX_RX_EMAIL})} = 0]?noemail)
exten => h,n(delete_opt),Set(DELETE_AFTER_SEND=false)
exten => h,n,System(${ASTVARLIBDIR}/bin/fax2mail.php –remotestationid “${FAXOPT(remotestationid)}” –to “${FAX_RX_EMAIL}” –dest “${FROM_DID}” –callerid ‘${STRREPLACE(CALLERID(all),’,\\’)}’ –file ${ASTSPOOLDIR}/fax/${UNIQUEID}.tif –exten “${FAX_FOR}” –delete “${DELETE_AFTER_SEND}” –attachformat “${FAX_ATTACH_FORMAT}”)
exten => h,n(end),Macro(hangupcall,)
exten => h,n(noemail),Noop(ERROR: No Email Address to send FAX: status: [${FAXSTATUS}], From: [${CALLERID(all)}])
exten => h,n,Macro(hangupcall,)
exten => h,process+101(failed),Noop(FAX ${FAXSTATUS} for: ${FAX_RX_EMAIL} , From: ${CALLERID(all)})
exten => h,n,Macro(hangupcall,)
;–== end of [ext-fax] ==–;
پس از ذخیره این کانتکست، سرور را یک بار راه اندازی مجدد می کنیم. از این پس فکس ها در مسیر زیر ذخیره می شوند:
var/spool/asterisk/fax/