четверг, 27 января 2011 г.

Факс сервер на Asterisk

Факс сервер на Asterisk

Это решение отличается от факса по умолчанию во FreePBX, использующего rxfax и txfax. Вместо этого, с помощью HylaFax, вы получите полнофункциональный факс-сервер корпоративного класса.
  • CentOS 5.X
  • Asterisk должен быть установлен.
  • IAXmodem требует SPANDSP
  • HylaFax имеет зависимости:
    • libtiff-3.5.5 или выше
    • ghostscript-5.50 или выше
    • ghostscript-fonts-5.50 или выше
    • libtiff-devel
    • zlib-devel
Скачать Hylafax
Вопросы при FaxSetup:
Should an entry be added for the FaxMaster to /etc/aliases )yes(? yes
Users to receive fax-related mail )root? ( root 
HylaFAX configuration parameters are:
1 Init script starts faxq: yes
2 Init script starts hfaxd yes
3 Start old protocol: no
4 Start paging protocol: no
Are these ok yes? yes
Скачать Iaxmodem
-Прочтите README из IAXmodem для установки.
-В завершении установки, скопируйте бинарник iaxmodem в /usr/local/sbin
Создайте файл /etc/iaxmodem/ttyIAX0
device /dev/ttyIAX0   
owner uucp:uucp
mode 660
port 4570  #уникальный порт для каждого устройства!
refresh 300
server 127.0.0.1
peername iaxmodem0  # это IAX экстеншн в Asterisk!
secret 12345  # пароль экстеншена
cidname Fax1
cidnumber 78123216111
codec alaw
Настройте IAX экстеншн в Asterisk.
iax.conf
[iaxmodem0]
type=friend
username=iaxmodem0
context=modembank
secret=12345
host=127.0.0.1
qualify=yes
disallow=all
allow=ulaw;
trunk=no
requirecalltoken=no
Теперь, когда, IAXmodem сконфигурирован, научим Hylafax обращаться к нему. В исходниках IAXmodem есть файл config.ttyIAX. Скопируйте его в /var/spool/hylafax/etc/ изменяя название для каждого модема - config.ttyIAX0, config.ttyIAX1 и т.д.
Чтобы Hylafax начал принимать факсы, надо запустить IAXmodem и ttyIAX устройство. Вручную это можно сделать командами:
/usr/local/sbin/iaxmodem ttyIAX0

faxgetty /dev/ttyIAX0
В случае если появиться сообщение об отсутствии libiax.so.0 и libspandsp.so.1 :
ln /usr/local/lib/libiax.so.0.0.0  /lib/libiax.so.0
 ln /usr/local/lib/libspandsp.so.1.0.0  /lib/libspandsp.so.1
Если все работает, напишите в /etc/inittab
iax1:2345:respawn:/usr/local/sbin/iaxmodem ttyIAX0
iax2:2345:respawn:/usr/local/sbin/iaxmodem ttyIAX1
mo1:2345:respawn:/usr/local/sbin/faxgetty ttyIAX0
mo2:2345:respawn:/usr/local/sbin/faxgetty ttyIAX1
  • Первые две строчки запускают два IAXmodem-а.
  • Последние две - позволяют получать факсы через эти модемы.
Командой /sbin/init q перезапустите inittab.
Теперь когда все работает, настройте маршрутизацию DID в Asterisk.
exten => 78123216111,1,Dial(IAX2/iaxmodem0/${EXTEN},10,r)
где ${EXTEN} переменная $CALLID4, получаемая Hylafax в /var/spool/hylafax/etc/FaxDispatch:
SENDTO=root;
FILETYPE=pdf;

case "$CALLID4" in
78123216111)
SENDTO="smirnov@neotek.ru"
;;
esac
или привяжемся к девайсу:
## and/or by device
SENDTO=root;
FILETYPE=pdf;

case "$DEVICE" in
  ttyIAX0) SENDTO=smirnov@neotek.ru;;
esac

распечатаем принятый факс на принтере
case "$DEVICE" in
        ttyIAX0)
                SENDTO=smirnov@neotek.ru   
                PRINTER=HP1200;;
esac
Добавьте в конец файла /var/spool/hylafax/bin/faxrcvd
# If $PRINTER not empty, then print $FILE with $PRINTER
        if [ -n "$PRINTER" ]; then
            $FAX2PS $FILE | lpr -P$PRINTER
        fi

Отправка факсов

Тестовая отправка факса командой- sendfax -n -d <faxnumber> <file.txt>:
# sendfax -n -d 8123216111 /etc/issue.net
We should see this in the CLI:

 -- Accepting AUTHENTICATED call from 127.0.0.1:
       > requested format = alaw,
       > requested prefs = (),
       > actual format = alaw,
       > host prefs = (alaw),
       > priority = mine
    -- Executing Answer("IAX2/iaxmodem0", "") in new stack
    -- Executing Dial("IAX2/iaxmodem0", "SIP/123456/8123216111") in new
 stack
    -- Called 123456/8123216111
    -- SIP/123456-0818f630 is making progress passing it to IAX2/iaxmode
m-3
    -- SIP/123456-0818f630 answered IAX2/iaxmodem0
    -- parse_srv: SRV mapped to host my-voip-provider.com, port 5060
  == Spawn extension (fax-out, 8123216111, 2) exited non-zero on 'IAX2/i
axmodem0'
    -- Executing Hangup("IAX2/iaxmodem0", "") in new stack
  == Spawn extension (fax-out, h, 1) exited non-zero on 'IAX2/iaxmodem0
'
    -- Hungup 'IAX2/iaxmodem0'
Используйте команду faxstat -s для проверки:
# faxstat -s
HylaFAX scheduler on localhost.localdomain: Running
Modem ttyIAX (177): Running and idle
Modem ttyIAX1 (166): Running and idle

JID  Pri S  Owner Number       Pages Dials     TTS Status
35   127 B   root 177           0:0   0:12         Blocked by concurrent cal
с помощью Winprint Hylafax.
Скачайте Winprint Hylafax
Установите Winprint Hylafax на компьютер.
Установите новый принтер:

При выборе порта для принтера - создать новый порт -Winprint Hylafax

Имя порта: по дефолту
Принтер: Apple Laser Writer # рекомендуют
Имя принтера: «Winprint Hylafax»
В свойствах установленного принтера, выбираем вкладку «Порты»

Конфигурируем порт

Чтобы Hylafax разрешил соединение, добавьте IP адрес машины на которой установлен Winprint Hylafax в файл: /var/spool/hylafax/etc/hosts.hfaxd. Поле password можно оставить пустым, Поле user должно быть заполнено.
При выборе печати документа через Apple Laser Write (или что там у Вас будет), появиться диалоговое окно:

введите номер телефона и ОК.

Комментариев нет:

Отправить комментарий