«Факсы ходят через лес»
Немного экономии и здравого смысла не помешают...
Связка: Asterisk <--sip--> Cisco 5300 <--E1--> Гор. АТС
Как и все люди которые хотят с экономить на всем что только можно у «Нас» родилась идея сделать факс сервер на Нашем предприятии дабы не покупать «дорогой» картридж для антиквариат факса что на службе у секретаря верно отпахавший почти десять лет замена картриджа ровна покупки двух а то и трех новых факсов и так в путь!
Что нам необходимо :
Asterisk ветки 1.6 ( у меня работает на 1.6.2.19 )
Дополнительно :
Apache , PHP ( Для Веб морды отправки факсов )
Первое с чем столкнулся это с упорной непробиваемостью факсов на сборке AsteriskNOW , (не помогало не пере сборка asterisk не обновление) по этому пошел проверенным путем поставил fedora (к стати не наблюдалось проблемм как в 8 версии так и в 14 ) далее устанавливаем «звездочку» ( из репазитория через yum тоже работает ) скачиваем исходники и собираем asterisk.
Когда все готово добавим в систему поддержку факса ( fax for Asterisk )
Digium дает «холяву» только на один канал факса но этого мне достаточно ибо физический аппарат тоже один (смысл собственно в этом заменить груду пыли с кнопочками на виртуальный «аппарат» )
и так идем на сайт digium.com «покупаем» бесплатную лицензию на один канал, (необходимо зарегестрироваться на сайте ) затем вам на почту приходит ключ лицензии в текстовом виде (не потеряйте его поможет если пару тройку раз придется менять систему, после третей активации ключ приказал долго жить пришлось «покупать» новый :)
и так открываем терминал под root и делаем так :
# cd /tmp # wget http://downloads.digium.com/pub/register/x86-32/register # chmod +x register # ./register |
Откроется программа регистрации (консольная) выбирайте 1 затем 9 и введите код полученный по почте после это го заполните данные (не обязательно писать все досконально я например ограничился по одному символу на каждый параметр такие как ваш город компания телефон и т.д.)
если все прошло успешно то в конце будет сообщение что ключ лицензии щаписан в /var/lib/asterisk/licenses/ваш_ключ.lic
Далее необходимо скачать следующий инструмент который определит какие модули вам подайдут лучше всего ( хотя не обязательно так как он просто тестирует систему на различных процессорах и подберет оптимальный у меня к примеру вообще загнулся тест на четвертом шаге слишком чахлый CPU я не стал тестировать а просто скачал версию generic):
# wget http://downloads.digium.com/pub/telephony/fax/benchfax/x86-32/benchfax-1.1.0-x86_32 -O benchfax # chmod +x benchfax # ./benchfax |
После этого если все прошло нормально запомните результат тестирования ( это самый наименьший то есть скорость обработки факса в милисекундах ) и посетите эту вот страничку : http://www.digium.com/en/docs/FAX/faa-download.php
на которой выбераем систему и подходящие модули (которые нам подобрал benchfax) , после этого необходимо распаковать скачанные архивы и скопировать содержимое в /usr/lib/asterisk/modules/ нас интересуют только файлы res_fax.so res_fax_digium.so так же в архивах имеются conf файлы их можно скопировать в /etc/asterisk/
Далее необходимо перезапустить сервер asterisk так: # service asterisk restart или так # asterisk -rx 'core restart now' а затем можно выполнить команду в CLI и поматреть что то вроде иэтого ддолжно появиться:
*CLI> fax show capabilities Registered FAX Technology Modules: Type : DIGIUM Description : Digium FAX Driver Capabilities : SEND RECEIVE T.38 G.711 MULTI-DOC 1 registered modules |
Теперь можно подготовить настройки для приема и отправки факса и так первым делом мы подкрутим канал SIP в файле sip.conf.
В нем необходимо включить (если за коментирован то раскоментировать) параметр t38pt_udptl : t38pt_udptl = yes, maxdatagram=4400
А так же указать куда будут поступать входящие звонки ( по умолчанию в секции [general] параметр context = default ) поменяйте на нужный контекст например «incoming-fax», на этом правка файла закончене переходим к файлу диалплана extensions.conf
[local] include => outgoing-fax ; Этот контекст для исходящих факсов по локальному каналу
|
[incoming-fax] exten => Номер Факса,1,Dial(Local/fax@softfax) exten => Номер Факса,n,Hangup()
|
[outgoing-fax] exten => _X.,1,Dial(SIP/${EXTEN}@XXX.XXX.XXX.XXX) ; IP адресс шлюза (в моем случае Cisco ) exten => s,2,Hangup()
|
[send-fax] exten => s,1,Answer() exten => s,n,NoOp(Sending fax!) exten => s,n,SendFax(${PICTURE},d) exten => s,n,Hangup() exten => s,n,GotoIf($["${FAXOPT(status)}" != "SUCCESS" ]?finish) exten => s,n,NoOp(${PICTURE} is deleted!) exten => s,n,System(rm ${PICTURE})
|
[softfax] exten => fax,1,NoOp(getting fax from ${CALLERID(NUM)}) exten => fax,n,Set(GLOBAL(GDT)=${STRFTIME(${EPOCH},,%y-%m-%d_%H-%M)}) exten => fax,n,Set(FAXFILE=/var/spool/asterisk/fax/${GDT}-${CALLERID(NUM)}.tiff) exten => fax,n,ReceiveFax(${FAXFILE}) exten => fax,n,Hangup() exten => h,1,NoOp(fax recive completed!) exten => h,n,GotoIf($["${FAXOPT(status)}" != "SUCCESS" ]?finish) exten => h,n,System(echo "FAX from ${CALLERID(NUM)}" | mail -s "FAX from ${CALLERID(NUM)}" -a ${FAXFILE} Ваш емайл ) exten => h,n(finish),NoOp(finish fax working!)
|
Добавив эти контексты в файл extensions.conf исходящие и входящие факсы мы научим ходить через наш сервер и сообщать о входящем факсе на e-mail.
Простой веб интерфейс можете скачать здесь «Факс CheMix»1
Примечание: 1: Убедитесь что папка /var/spool/asterisk/fax существует если ее нет то создайте ее 2: Если все настроено а звонки не проходят провертье что порт 5060 udp открыт на firewall 3: Так же убедитесь что папка /var/spool/asterisk/outgoing имеет права записи для apache ( это для веб интерфейса) 4: Чтобы работал веб интерфейс убедитесь что в системе установлен и работает apache и php |
1Простой веб интерфейс для отправки и просмотра входящих факсов, по умолчанию пароль и логин для входа «user» скопируйте содержимое архива в /var/www/html/fax и создайте в этом каталоге символьную ссылку на каталог /var/spool/asterisk/fax