«Факсы ходят через лес»

Немного экономии и здравого смысла не помешают...

Связка: 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

Hosted by uCoz