Настройка 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
extensions.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 был в состоянии сделать звонок через CallCcentric, но именно в этот момент произошла катастрофа. Из-за faxdetect = yes в sip.conf, Asterisk обнаружил тональный сигнал факса принимающего аппарата и перешел на exten => fax,1,Goto(fax-rx,s,1)
, То есть было признано, что настройка канала для подключения к каналу Hylafax была частью контекста [from_cc].
Чтобы обойти это, я продублировал свою информацию Callcentric в sip.conf (callcentric_fax_out), но не дал ей callbackextension. Я изменил свой контекст Hylafax-Out, чтобы использовать этот новый SIP-peer (который был просто клоном старого, за исключением контекста). Это работало отлично - я мог отправлять факсы по этому новому одноранговому соединению, и, хотя звездочка обнаруживала шум факсимильного CNG, ей некуда было перенаправить вызов, и, таким образом, он не мешал. Однако именно с этой настройкой я заметил проблему.
Во время разговора (отправки факса) через callcentric_fax_out
peer, похоже, что входящие звонки отклоняются на callcentric
всматриваться. Глядя на sip debug, я получаю это:
<--- 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 для принтера и факса с работающим обнаружением входящих факсов. Если вы можете предоставить более простое решение, я весь слух.