Назад | Перейти на главную страницу

Настройка Hylafax для работы с Asterisk через одного SIP-провайдера

Я устанавливаю УАТС на базе Asterisk 1.8, и в рамках требований мне нужно предусмотреть возможность отправки и получения факсов. Цель «общей картины» - установить факсимильный принтер на каждом компьютере конечного пользователя Windows XP (или более поздней версии) и заставить пользователя печатать на нем, запрашивать номер факса и отправлять электронное письмо этому пользователю, когда отправка будет завершена. . Я также хочу иметь возможность получать факсы (отправляя их на общий адрес электронной почты).

sip.conf:

[general]
t38pt_udptl=yes

context=from_sip
allowoverlap=no
realm=zzzz.com

udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0

srvlookup=yes
recordhistory=yes

faxdetect=yes

localnet=192.168.0.0/255.255.0.0
externhost=place.no-ip.com
externrefresh=180
nat=yes
directmedia=no
canreinvite=no
directrtpsetup=no

[callcentric_fax_out]
type=peer
host=callcentric.com
secret=secret
defaultuser=user_num
fromuser=user_num
fromdomain=callcentric.com
nat=yes
canreinvite=no

[callcentric]
type=peer
host=callcentric.com
secret=secret
defaultuser=user_num
fromuser=user_num
fromdomain=callcentric.com
nat=yes
canreinvite=no
callbackextension=s
context=from_cc
insecure=port,invite


;other sip devices below

extension.conf:

[general]

[globals]

[from_sip]
exten => s,1,Playback(cannot-complete-temp-error)
exten => s,n,Hangup()

[from_cc]
exten => s,1,Answer()
exten => s,n,Ringing()
exten => s,n,Wait(3)
exten => s,n,Authenticate(31337)
exten => s,n,DISA(no-password,from_office)
exten => fax,1,Goto(fax-rx,s,1)

[fax-rx]
exten => s,1,Answer()
exten => s,n,Wait(1)
exten => s,n,Set(FAXFILE=/var/spool/asterisk/fax/${UNIQUEID}.tif)
exten => s,n,ReceiveFAX(${FAXFILE})
exten => h,1,System(/usr/bin/mailfax.sh ${FAXFILE} "${CALLERID(name)}" "${CALLERID(num)}" IncomingFax@domain.com MailFax@domain.com MailFax ${FAXSTATUS})

[hylafax-out]
exten => _1XXXXXXXXXX,1,Gosub(call_via_callcentric_fax_out,${EXTEN},1)
exten => _XXXXXXX,1,Gosub(call_via_callcentric_fax_out,${EXTEN},1)

[call_via_callcentric]
exten => _1XXXXXXXXXX,1,Dial(SIP/${FILTER(0-9,${EXTEN})}@callcentric,30,KTr)
exten => _XXXXXXXXXX,1,Dial(SIP/1${FILTER(0-9,${EXTEN})}@callcentrice,30,KTr)
exten => _XXXXXXX,1,Dial(SIP/1516${FILTER(0-9,${EXTEN})}@callcentric,30,KTr)

[call_via_callcentric_fax_out]
exten => _1XXXXXXXXXX,1,Dial(SIP/${FILTER(0-9,${EXTEN})}@callcentric_fax_out,30,KTr)
exten => _XXXXXXXXXX,1,Dial(SIP/1${FILTER(0-9,${EXTEN})}@callcentrice_fax_out,30,KTr)
exten => _XXXXXXX,1,Dial(SIP/1516${FILTER(0-9,${EXTEN})}@callcentric_fax_out,30,KTr)

[from_office]
exten => 500,1,Playback(demo-abouttotry); Let them know what's going on
exten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default,TK)     ; Call the Asterisk demo
exten => 500,n,Playback(demo-nogo)      ; Couldn't connect to the demo site

С этим диалпланом и настройкой SIP я могу отлично принимать факсы. Теперь я хотел использовать Hylafax и IAXModem для отправки факсов, что настроено правильно. Используемый входящий контекст - [hylafax-out]. Изначально я просто перешел к своему обычному контексту вызова с помощью exten => _1XXXXXXXXXX,1,Gosub(call_via_callcentric,${EXTEN},1). Мониторинг сервера Asterisk с помощью asterisk -rvvvvvv действительно показал, что hylafax может выполнять вызов через callcentric, но именно в этот момент произошла катастрофа. Поскольку в sip.conf указано faxdetect = yes, Asterisk обнаружила тональный сигнал факса принимающего устройства и перешла к exten => fax,1,Goto(fax-rx,s,1). То есть было обнаружено, что настройка канала для подключения к каналу hylafax была частью контекста [from_cc].

Чтобы обойти это, я продублировал свою информацию о Callcentric в sip.conf (callcentric_fax_out), но не дал ей callbackextension. Я изменил свой контекст hylafax-out, чтобы использовать этот новый узел sip (который был просто клоном старого без контекста). Это сработало отлично - я мог отправлять факсы через это новое одноранговое соединение, и, хотя звездочка обнаруживала шум факсимильного CNG, ей некуда было перенаправить вызов и, следовательно, не было помех. Однако именно с этой настройкой я заметил проблему.

Во время разговора (отправки факса) по callcentric_fax_out peer, похоже, что входящие звонки отклоняются на callcentric сверстник. Глядя на отладку sip, я получаю следующее:

<--- SIP read from UDP:204.11.192.35:5060 --->
CANCEL sip:s@69.123.165.187:5060 SIP/2.0
v: SIP/2.0/UDP 204.11.192.35:5060;branch=z9hG4bK-9bf9ce47c01ef721aff04119c7f831ba
f: "WIRELESS" <sip:1516zzzzzzz@66.193.176.35>;tag=3501265591-800738
t: <sip:1516aaaaaaa@ss.callcentric.com>
i: 62793081-3501265591-800709@msw2.telengy.net
CSeq: 1 CANCEL
Max-Forwards: 15
l: 0

<------------->
--- (8 headers 0 lines) ---

<--- Transmitting (NAT) to 204.11.192.35:5060 --->
SIP/2.0 481 Call leg/transaction does not exist
Via: SIP/2.0/UDP 204.11.192.35:5060;branch=z9hG4bK-9bf9ce47c01ef721aff04119c7f831ba;received=204.11.192.35;rport=5060
From: "WIRELESS" <sip:1516zzzzzzz@66.193.176.35>;tag=3501265591-800738
To: <sip:1516aaaaaaa@ss.callcentric.com>;tag=as6091b90b
Call-ID: 62793081-3501265591-800709@msw2.telengy.net
CSeq: 1 CANCEL
Server: Asterisk PBX 1.8.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Length: 0

Я предполагаю, что Asterisk запуталась, поскольку эти одноранговые узлы используют IP-адрес.

Если у кого-то есть совет, как мне поступить, я был бы очень признателен. Опять же, моя конечная цель - это просто рабочий шлюз Windows Printer to Fax с работающим обнаружением входящих факсов. Если вы можете предложить более простое решение, я все слышу.