- Комментировать
- 186935 reads
Метки: Asterisk, FreePBX
чтобы настроить прием факса на email в Астериске надо многое сделать:
начать надо с проверки версии установленных в системе пакетов, выглядеть это должно примерно так:
asterisk.i386 1.8.15-0.cert1.1_centos5 installed
asterisk-addons-core.i386 1.8.15-0.cert1.1_centos5 installed
asterisk-addons-mysql.i386 1.8.15-0.cert1.1_centos5 installed
asterisk-core.i386 1.8.15-0.cert1.1_centos5 installed
asterisk-dahdi.i386 1.8.15-0.cert1.1_centos5 installed
asterisk-devel.i386 1.8.15-0.cert1.1_centos5 installed
asterisk-doc.i386 1.8.15-0.cert1.1_centos5 installed
asterisk-sounds-core-en-gsm.noarch 1.4.21-1_centos5 installed
asterisk-sounds-core-en-ulaw.noarch 1.4.21-1_centos5 installed
asterisk-sounds-extra-en-gsm.noarch 1.4.11-1_centos5 installed
asterisk-sounds-moh-opsound-ulaw.noarch 0.0-4_centos5 installed
asterisk-voicemail.i386 1.8.15-0.cert1.1_centos5 installed
asterisknow-version.noarch 2.0.0-4_centos5 installed
[root]# yum list installed |grep tiff
libtiff.i386 3.8.2-18.el5_8 installed
libtiff-devel.i386 3.8.2-18.el5_8 installed
[root]#
обязательно asterisk-devel libtiff.
сделать прохождение t38 кодека (t38pt_udptl = yes)
и убрать факсдетект (faxdetect=no) в конфигурации sip.
теперь нужно проверить установлен ли модуль spandsp.so в системе:
Module Description Use Count
res_fax.so Generic FAX Applications 1
res_fax_spandsp.so Spandsp G.711 and T.38 FAX Technologies 2
2 modules loaded
если показывает что Spadsp не загружен, значит скорее всего его нет.
Выйти из этой ситуации можно двумя путями:
1. Пересобрать из исходников Астериск с поддержкой факса (ставится в меню конфигуре).
2. Собрать динамическую библиотеку libspandsp.so из исходников.
остановлюсь на втором варианте, так как его я и реализовывал на своей системе:
1. идем сюда http://soft-switch.org/ и читаем как собрать и установить сие чудо,
устанавливается просто, понадобится
libgcc.i386 4.1.2-54.el5 installed
а дальше все как обычно, проверяем whereis spandsp.so или libspandsp.so.
2. далее надо сделать из библиотеки модуль для астериска, берем res/res_fax_spandsp.c
из подходящих нам исходников, у меня был
res_fax_spandsp.c?revision=370667 и выполняем для него такие операции...
3.
-c -o res_fax_spandsp.o res_fax_spandsp.c
4.
res_fax_spandsp.o
5. кладем получившийся модуль res_fax_spandsp.so в каталог модулей астериска -
у меня он /usr/lib/asterisk/modules
6. убеждаемся что
autoload=yes
7. делаем amportal restart
8. проверяем подключился ли модуль.
далее переходим к dial plan.
1. правим extensions_custom.conf
у меня он выглядит следующим образом брал отсюда
http://asterisk-system.ru/asterisk/nastraivaem-asterisk-1-8-na-priem-i-o...
чтобы изнутри звонить было не на 666, любой можете указать вместо 5000
exten => 5000,n,Goto(fax-rx,receive,1)
контекст для custom dectination
exten => fax,1,NoOp(-------------------Call from ${CALLERID(number)} to ${EXTEN}------------------)
exten => fax,n,Goto(fax-rx,receive,1)
контекст принимающий факс
exten => receive,1,NoOP(------------------- FAX from ${CALLERID(number)} ------------------)
exten => receive,n,Answer()
exten => receive,n,Wait(2)
exten => receive,n,Set(FILENAME=fax-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(number)})
exten => receive,n,Set(FAXFILE=/var/spool/asterisk/fax/receive/${FILENAME}.tif)
exten => receive,n,Set(FAXOPT(headerinfo)=Received by ${CALLERID(number)} ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M)})
exten => receive,n,Set(FAXOPT(localstationid)=OFFICE)
exten => receive,n,Set(FAXOPT(maxrate)=14400)
exten => receive,n,Set(FAXOPT(minrate)=2400)
exten => receive,n,NoOp(FAXOPT(ecm) : ${FAXOPT(ecm)})
exten => receive,n,NoOp(FAXOPT(headerinfo) : ${FAXOPT(headerinfo)})
exten => receive,n,NoOp(FAXOPT(localstationid) : ${FAXOPT(localstationid)})
exten => receive,n,NoOp(FAXOPT(maxrate) : ${FAXOPT(maxrate)})
exten => receive,n,NoOp(FAXOPT(minrate) : ${FAXOPT(minrate)})
exten => receive,n,NoOp(**** RECEIVING FAX : ${FAXFILE} ****)
exten => receive,n,ReceiveFAX(${FAXFILE})
exten => receive,n,Hangup()
exten => h,1,NoOP(------------------- FAX from ${CALLERID(number)} ------------------)
exten => h,n,NoOP(------------------- STATUS ${FAXSTATUS} ${FAXERROR} ------------------)
exten => h,n,system(path-to-/fax-process.pl --to mail@addr --from mail@addr --subject "Fax prineat s ${URIENCODE(${CALLERID(number)})} ${URIENCODE(${CALLERID(name)})}" --attachment ${FILENAME}.pdf --type application/pdf --file ${FAXFILE});
скачать скрипт fax-process.pl: