Страница 1 из 2
Как сделать автоматическую переадресацию
Добавлено: 13 апр 2014, 11:14
nfrolov
Здравствуйте! Помогите разобраться, я новенький в делах по астериск. Но просмотрев весь форум не нашел для себя нужного ответа. Так вот, есть работающий астериск с выходом в интернет и на аналоговую линию провайдера, все как положено. Мне нужно сделать следующее. При звонке на внутренний номер sip 3500 от тех же абонентов sip(аналогичные 4-х значные номера), чтобы вызов по истечение 10 секунд ожидания перенаправлялся на указанный мной в диалплане мобильный телефон, если я успеваю ответить в течение 10 секунд, то вызов не должен перенаправляться..
Есть в extensions.conf такой контекст:
[otdel]
exten => _35XX,1,Dial(SIP/${EXTEN})
exten => _XXXX,1,Dial(SIP/${EXTEN}@192.168.0.1,120)
exten => *7,1,PickUP()
exten => 3500,hint,SIP/3500
exten => 3500,1, Macro(stdexten,3500,SIP/3500)
sip.conf :
[3500]
type=friend
host=dynamic
username=3500
secret=3500
nat=no
canreinvite=yes
context=otdel
callerid="Lukoyanov" <3500>
call-limit=100
notifyringing=yes
limitonpeers=yes
;allow=all
;allow=ulaw
allow=alaw
callgroup=1
pickupgroup=1
language=ru
Какая команда должна быть и относительно какого контекста ее прописать, где?
Re: Как сделать автоматическую переадресацию
Добавлено: 13 апр 2014, 11:23
awsswa
макро - не показали
Re: Как сделать автоматическую переадресацию
Добавлено: 13 апр 2014, 12:54
nfrolov
Описание контекста stdexten на который ссылается Macro:
[stdexten]
exten => _X.,50000(stdexten),NoOp(Start stdexten)
exten => _X.,n,Set(LOCAL(ext)=${EXTEN})
exten => _X.,n,Set(LOCAL(dev)=${ARG1})
exten => _X.,n,Set(LOCAL(cntx)=${ARG2})
exten => _X.,n,Set(LOCAL(mbx)="${ext}"$["${cntx}" ? "@${cntx}" :: ""])
exten => _X.,n,Dial(${dev},20) ; Ring the interface, 20 seconds maximum
exten => _X.,n,Goto(stdexten-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => stdexten-NOANSWER,1,Voicemail(${mbx},u) ; If unavailable, send to voicemail w/ unavail announce
exten => stdexten-NOANSWER,n,NoOp(Finish stdexten NOANSWER)
exten => stdexten-NOANSWER,n,Return() ; If they press #, return to start
exten => stdexten-BUSY,1,Voicemail(${mbx},b)
; If busy, send to voicemail w/ busy announce
exten => stdexten-BUSY,n,NoOp(Finish stdexten BUSY)
exten => stdexten-BUSY,n,Return() ; If they press #, return to start
exten => _stdexten-.,1,Goto(stdexten-NOANSWER,1) ; Treat anything else as no answer
exten => a,1,VoicemailMain(${mbx}) ; If they press *, send the user into VoicemailMain
exten => a,n,Return()
Re: Как сделать автоматическую переадресацию
Добавлено: 13 апр 2014, 12:58
nfrolov
[macro-page];
exten => s,1,ChanIsAvail(${ARG1},s) ; s is for ANY call
exten => s,n,GoToIf([${AVAILORIGCHAN} = ""]?fail:autoanswer)
exten => s,n(autoanswer),Set(_ALERT_INFO="RA") ; This is for the PolyComs
exten => s,n,SIPAddHeader(Call-Info: Answer-After=0) ; This is for the Grandstream, Snoms, and Others
exten => s,n,NoOp() ; Add others here and Post on the Wiki!!!!
exten => s,n,Dial(${ARG1})
exten => s,n(fail),Hangup
Re: Как сделать автоматическую переадресацию
Добавлено: 13 апр 2014, 13:01
nfrolov
[demo]
include => stdexten
;
; We start with what to do when a call first comes in.
;
exten => s,1,Wait(1) ; Wait a second, just for fun
exten => s,n,Answer ; Answer the line
exten => s,n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,n(restart),BackGround(demo-congrats) ; Play a congratulatory message
exten => s,n(instruct),BackGround(demo-instruct) ; Play some instructions
exten => s,n,WaitExten ; Wait for an extension to be dialed.
exten => 2,1,BackGround(demo-moreinfo) ; Give some more information.
exten => 2,n,Goto(s,instruct)
exten => 3,1,Set(LANGUAGE()=fr) ; Set language to french
exten => 3,n,Goto(s,restart) ; Start with the congratulations
exten => 1000,1,Goto(default,s,1)
;
; We also create an example user, 1234, who is on the console and has
; voicemail, etc.
;
exten => 1234,1,Playback(transfer,skip) ; "Please hold while..."
; (but skip if channel is not up)
exten => 1234,n,Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)}))
exten => 1234,n,Goto(default,s,1) ; exited Voicemail
exten => 1235,1,Voicemail(1234,u) ; Right to voicemail
exten => 1236,1,Dial(Console/dsp) ; Ring forever
exten => 1236,n,Voicemail(1234,b) ; Unless busy
;
; # for when they're done with the demo
;
exten => #,1,Playback(demo-thanks) ; "Thanks for trying the demo"
exten => #,n,Hangup ; Hang them up.
;
; A timeout and "invalid extension rule"
;
exten => t,1,Goto(#,1) ; If they take too long, give up
exten => i,1,Playback(invalid) ; "That's not valid, try again"
;
; Create an extension, 500, for dialing the
; Asterisk demo.
;
exten => 500,1,Playback(demo-abouttotry); Let them know what's going on
exten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default) ; Call the Asterisk demo
exten => 500,n,Playback(demo-nogo) ; Couldn't connect to the demo site
exten => 500,n,Goto(s,6) ; Return to the start over message.
Re: Как сделать автоматическую переадресацию
Добавлено: 13 апр 2014, 13:20
nfrolov
В процессе поиска ответов, натолкнулся вот на такой кусочек кода в сети:
exten => xxxx,1,Dial(SIP/xxxx,10,)
exten => xxxx,2,Set(CALLERID(all)=xxxx)
exten => xxxx,3,Dial(Zap/g2/8930xxxxxxx,240,)
exten => xxxx,4, Goto(s-${DIALSTATUS},1)
Работоспособен ли он при моих настройках, если, да, то в какое место его можно вставить в файле extensions.conf относительно контекста otdel.
Re: Как сделать автоматическую переадресацию
Добавлено: 13 апр 2014, 15:10
ded
[otdel]
exten => _35XX,1,Dial(SIP/${EXTEN},,t)
exten => 3500,1,Dial(SIP/${EXTEN},10,t)
exten => 3500,2,Dial(Zap/g2/89301234567) ; это если у вас аналоговая линия через устаревший канал Zap, в группу FXO портов, которая объединяется в g2.
А если соверменный DAHDI, то
exten => 3500,2,Dial(DAHDI/1/89301234567) ; при условии, что первый порт FXO и есть DAHDI.
Вам бы книжку почитать, про будущее телефонии. Чужим умом далеко не уехать на копипасте.
Re: Как сделать автоматическую переадресацию
Добавлено: 13 апр 2014, 15:41
nfrolov
Спасибо, уже приобрел книжку, только начинаю вникать. В контексте global описана переменная TRUNK=DAHDI/G2 ; Trunk interface.
Значит действительно будет:
exten => 3500,2,Dial(DAHDI/1/89301234567) ;?
Как узнать zap или dahdi?
Re: Как сделать автоматическую переадресацию
Добавлено: 13 апр 2014, 15:50
ded
Не знаю как будет!
Мы на разных языках говорим, хотя слова одни и те же.
Если есть TRUNK=DAHDI/G2 то в строке
exten => 3500,2,Dial(DAHDI/1/89301234567)
эта переменная никак не вызывается. Зачем её упоминать?
Если есть TRUNK=DAHDI/G2, то он работает? Есть группа портов FXO, числом 2 или больше, объединённая в G2?
nfrolov писал(а):Как узнать zap или dahdi?
Обратитесь к системному администратору.
Избавьте от техучёбы, плз!
Re: Как сделать автоматическую переадресацию
Добавлено: 13 апр 2014, 15:53
nfrolov
да, есть группа портов FXO.