VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Оригинация звонка

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Menjoy
Сообщения: 65
Зарегистрирован: 13 фев 2012, 12:09

Оригинация звонка

Сообщение Menjoy »

Добрый день сообществу ;)
Продолжаю работу с AMI.
С оригинацией на мобильные номера все хорошо, в поле Exten команды Originate пишем например 80296667788 и все отлично проходит и дозванивается. А вот проблема возникла с дозвоном на городские номера, по правилу набора (предоставленному админом) номер нужно набирать как 92223344# или 9#2223344#, если посылаю такой номер в поле Exten до абонента не дозваниваюсь.
Пробовал варианты с 9w2223344,9p2223344 и т.п. Подскажите, как сделать правильно?
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Оригинация звонка

Сообщение Vlad1983 »

оторвать руки админу, от места из которого они сейчас растут и пришить к плечам.
ЛС: @rostel
Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: Оригинация звонка

Сообщение Sfinx »

Если хотите стать профессионалом - вычеркните из лексикона словосочетание "не дозваниваюсь", в худшем случае конкретно указывайте причину отбоя, а в лучшем - оперируйте SIP response кодами. Для этого достаточно изучить вывод "sip debug peer" в случае если dialplan все-таки позволяет набрать '#'.
Rus

-----------
SfinxSoft
http://sfinxsoft.com
Menjoy
Сообщения: 65
Зарегистрирован: 13 фев 2012, 12:09

Re: Оригинация звонка

Сообщение Menjoy »

Насколько я понял по логу AMI при оригинации на городской номер происходит переадресация на группу сип-пиров (которым соответствуют аналоговые линии) и идет куча событий Bridge.
Если отправить команду, допустим:

Action: Originate
Channel: SIP/104
Context: from-internal
Exten: 9p2434228
Priority: 1
Timeout: 60000
Callerid: 9p2223344
ActionID: 111111111111111

То Астериск отвечает, что все хорошо и мы в очереди. А вот реально получаем отбой.

p.s. Т.е. набор "9" переадресовывает на группу, в которой около 5 аналоговых линий.
В итоге из-за этого и Cdr получается фиговым, т.к. в Destination у него записывается только 9, а не весь номер.
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Оригинация звонка

Сообщение Vlad1983 »

диалплан покажите
Exten: 9p2434228 - это бред
ЛС: @rostel
Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: Оригинация звонка

Сообщение Sfinx »

Callerid: 9p2223344
Прикольно ;) Как вариант - большинство реализаций зарубят такой cid, for example - siemens рубит до первой не-цифры
Rus

-----------
SfinxSoft
http://sfinxsoft.com
Menjoy
Сообщения: 65
Зарегистрирован: 13 фев 2012, 12:09

Re: Оригинация звонка

Сообщение Menjoy »

Sfinx писал(а):Если хотите стать профессионалом - вычеркните из лексикона словосочетание "не дозваниваюсь", в худшем случае конкретно указывайте причину отбоя, а в лучшем - оперируйте SIP response кодами. Для этого достаточно изучить вывод "sip debug peer" в случае если dialplan все-таки позволяет набрать '#'.
К сожалению не могу воспользоваться sip debug peer, т.к. не имею доступа к консоли реального сервера, а на тестовом у меня всего 1 gsm шлюз.
Диалплан позволяет набирать "#".

Набор номера с обычного телефонного аппарата, который является sip-пиром происходит так: 9#"ожидание длинного гудка""номер" - пошел дозвон.
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Оригинация звонка

Сообщение Vlad1983 »

Код: Выделить всё

9#"ожидание длинного гудка""номер"
яж говорю руки оторвать
ЛС: @rostel
Menjoy
Сообщения: 65
Зарегистрирован: 13 фев 2012, 12:09

Re: Оригинация звонка

Сообщение Menjoy »

Vlad1983 писал(а):диалплан покажите
Exten: 9p2434228 - это бред
Вот
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
include=from-pstn
from-analog
include=from-dahdi
from-trunk
include=from-pstn
from-pstn
include=from-pstn-custom
include=ext-did
include=ext-did-post-custom
include=from-did-direct
include=ext-did-catchall
from-pstn-e164-us
exten=_+1NXXNXXXXXX/_+1NXXNXXXXXX,1,Set(CALLERID(number)=${CALLERID(number):2})
exten=_+1NXXNXXXXXX/_NXXNXXXXXX,2,Goto(from-pstn,${EXTEN:2},1)
exten=_+1NXXNXXXXXX/_+X.,1,Set(CALLERID(number)=011${CALLERID(number):1})
exten=_+1NXXNXXXXXX/_011X.,n,Goto(from-pstn,${EXTEN:2},1)
exten=_+1NXXNXXXXXX,1,Goto(from-pstn,${EXTEN:2},1)
exten=_[0-9+]./_+1NXXNXXXXXX,1,Set(CALLERID(number)=${CALLERID(number):2})
exten=_[0-9+]./_NXXNXXXXXX,n,Goto(from-pstn,${EXTEN},1)
exten=_[0-9+]./_+X.,1,Set(CALLERID(number)=011${CALLERID(number):1})
exten=_[0-9+]./_011X.,n,Goto(from-pstn,${EXTEN},1)
exten=_[0-9+].,1,Goto(from-pstn,${EXTEN},1)
exten=s/_+1NXXNXXXXXX,1,Set(CALLERID(number)=${CALLERID(number):2})
exten=s/_NXXNXXXXXX,n,Goto(from-pstn,${EXTEN},1)
exten=s/_+X.,1,Set(CALLERID(number)=011${CALLERID(number):1})
exten=s/_011X.,n,Goto(from-pstn,${EXTEN},1)
exten=s,1,Goto(from-pstn,${EXTEN},1)
from-pstn-toheader
exten=_.,1,Goto(from-pstn,${CUT(CUT(SIP_HEADER(To),@,1),:,2)},1)
from-sip-external
exten=_.,1,NoOp(Received incoming SIP connection from unknown peer to ${EXTEN})
exten=_.,n,Set(DID=${IF($["${EXTEN:1:2}"=""]?s:${EXTEN})})
exten=_.,n,Goto(s,1)
exten=s,1,GotoIf($["${ALLOW_SIP_ANON}"="yes"]?checklang:noanonymous)
exten=s,n(checklang),GotoIf($["${SIPLANG}"!=""]?setlanguage:from-trunk,${DID},1)
exten=s,n(setlanguage),Set(CHANNEL(language)=${SIPLANG})
exten=s,n,Goto(from-trunk,${DID},1)
exten=s,n(noanonymous),Set(TIMEOUT(absolute)=15)
exten=s,n,Answer
exten=s,n,Wait(2)
exten=s,n,Playback(ss-noservice)
exten=s,n,Playtones(congestion)
exten=s,n,Congestion(5)
exten=h,1,Hangup
exten=i,1,Hangup
exten=t,1,Hangup
from-internal
include=from-internal-noxfer
include=from-internal-xfer
include=bad-number
from-internal-noxfer
include=from-internal-noxfer-custom
include=from-internal-noxfer-additional
from-internal-xfer
include=from-internal-custom
include=from-internal-additional
exten=s,1,Macro(hangupcall)
exten=h,1,Macro(hangupcall)
from-did-direct
include=ext-findmefollow
include=ext-local
macro-dial
exten=s,1,GotoIf($["${MOHCLASS}" = ""]?dial)
exten=s,n,SetMusicOnHold(${MOHCLASS})
exten=s,n(dial),AGI(dialparties.agi)
exten=s,n,NoOp(Returned from dialparties with no extensions to call and DIALSTATUS: ${DIALSTATUS})
exten=s,n+2(normdial),Dial(${ds})
exten=s,n,Set(DIALSTATUS=${IF($["${DIALSTATUS_CW}"!="" ]?${DIALSTATUS_CW}:${DIALSTATUS})})
exten=s,n,GosubIf($["${SCREEN}" != "" | "${DIALSTATUS}" = "ANSWER"]?${DIALSTATUS},1)
exten=s,20(huntdial),NoOp(Returned from dialparties with hunt groups to dial )
exten=s,n,Set(HuntLoop=0)
exten=s,n(a22),GotoIf($[${HuntMembers} >= 1]?a30)
exten=s,n,NoOp(Returning there are no members left in the hunt group to ring)
exten=s,n+2(a30),Set(HuntMember=HuntMember${HuntLoop})
exten=s,n,GotoIf($[$["${CALLTRACE_HUNT}" != "" ] & $[$["${RingGroupMethod}" = "hunt" ] | $["${RingGroupMethod}" = "firstavailable"] | $["${RingGroupMethod}" = "firstnotonphone"]]]?a32:a35)
exten=s,n(a32),Set(CT_EXTEN=${CUT(FILTERED_DIAL,,$[${HuntLoop} + 1])})
exten=s,n,Set(DB(CALLTRACE/${CT_EXTEN})=${CALLTRACE_HUNT})
exten=s,n,Goto(s,a42)
exten=s,n(a35),GotoIf($[$["${CALLTRACE_HUNT}" != "" ] & $["${RingGroupMethod}" = "memoryhunt" ]]?a36:a50)
exten=s,n(a36),Set(CTLoop=0)
exten=s,n(a37),GotoIf($[${CTLoop} > ${HuntLoop}]?a42)
exten=s,n,Set(CT_EXTEN=${CUT(FILTERED_DIAL,,$[${CTLoop} + 1])})
exten=s,n,Set(DB(CALLTRACE/${CT_EXTEN})=${CALLTRACE_HUNT})
exten=s,n,Set(CTLoop=$[1 + ${CTLoop}])
exten=s,n,Goto(s,a37)
exten=s,n(a42),Dial(${${HuntMember}}${ds})
exten=s,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?ANSWER,1)
exten=s,n,Set(HuntLoop=$[1 + ${HuntLoop}])
exten=s,n,GotoIf($[$[$["foo${RingGroupMethod}" != "foofirstavailable"] & $["foo${RingGroupMethod}" != "foofirstnotonphone"]] | $["foo${DialStatus}" = "fooBUSY"]]?a46)
exten=s,n,Set(HuntMembers=0)
exten=s,n(a46),Set(HuntMembers=$[${HuntMembers} - 1])
exten=s,n,Goto(s,a22)
exten=s,n(a50),DBdel(CALLTRACE/${CT_EXTEN})
exten=s,n,Goto(s,a42)
exten=NOANSWER,1,Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM})
exten=NOANSWER,n,GotoIf($["${IVR_RETVM}" != "RETURN" | "${IVR_CONTEXT}" = ""]?bye)
exten=NOANSWER,n,Return
exten=NOANSWER,n(bye),Macro(hangupcall)
exten=TORTURE,1,Goto(app-blackhole,musiconhold,1)
exten=TORTURE,n,Macro(hangupcall)
exten=DONTCALL,1,Answer
exten=DONTCALL,n,Wait(1)
exten=DONTCALL,n,Zapateller()
exten=DONTCALL,n,Playback(ss-noservice)
exten=DONTCALL,n,Macro(hangupcall)
exten=ANSWER,1,Noop(Call successfully answered - Hanging up now)
exten=ANSWER,n,Macro(hangupcall,)
exten=h,1,Macro(hangupcall)
macro-get-vmcontext
exten=s,1,Set(VMCONTEXT=${DB(AMPUSER/${ARG1}/voicemail)})
exten=s,2,GotoIf($["foo${VMCONTEXT}" = "foo"]?200:300)
exten=s,200,Set(VMCONTEXT=default)
exten=s,300,NoOp()
macro-outisbusy
exten=s,1,Progress
exten=s,n,Playback(all-circuits-busy-now,noanswer)
exten=s,n,Playback(pls-try-call-later,noanswer)
exten=s,n,Macro(hangupcall)
macro-dialout-trunk-predial-hook
exten=s,1,MacroExit()
macro-user-logon
exten=s,1,Set(DEVICETYPE=${DB(DEVICE/${CALLERID(number)}/type)})
exten=s,n,Answer()
exten=s,n,Wait(1)
exten=s,n,GotoIf($["${DEVICETYPE}" = "fixed"]?s-FIXED,1)
exten=s,n,Set(AMPUSER=${ARG1})
exten=s,n,GotoIf($["${AMPUSER}" != ""]?gotpass)
exten=s,n(playagain),Read(AMPUSER,please-enter-your-extension-then-press-pound,,,4)
exten=s,n,GotoIf($["${AMPUSER}" = ""]?s-MAXATTEMPTS,1)
exten=s,n(gotpass),GotoIf($["${DB_EXISTS(AMPUSER/${AMPUSER}/password)}" = "0"]?s-NOUSER,1)
exten=s,n,Set(AMPUSERPASS=${DB_RESULT})
exten=s,n,GotoIf($[${LEN(${AMPUSERPASS})} = 0]?s-NOPASSWORD,1)
exten=s,n,Set(DEVICEUSER=${DB(DEVICE/${CALLERID(number)}/user)})
exten=s,n,GotoIf($["${DEVICEUSER}" = "${AMPUSER}"]?s-ALREADYLOGGEDON,1)
exten=s,n,Authenticate(${AMPUSERPASS})
exten=s,n,AGI(user_login_out.agi,login,${CALLERID(number)},${AMPUSER})
exten=s,n,Playback(agent-loginok)
exten=s-FIXED,1,NoOp(Device is FIXED and cannot be logged in to)
exten=s-FIXED,n,Playback(ha/phone)
exten=s-FIXED,n,SayDigits(${CALLERID(number)})
exten=s-FIXED,n,Playback(is-curntly-unavail&vm-goodbye)
exten=s-FIXED,n,Hangup
exten=s-ALREADYLOGGEDON,1,NoOp(This device has already been logged into by this user)
exten=s-ALREADYLOGGEDON,n,Playback(vm-goodbye)
exten=s-ALREADYLOGGEDON,n,Hangup
exten=s-NOPASSWORD,1,NoOp(This extension does not exist or no password is set)
exten=s-NOPASSWORD,n,Playback(pbx-invalid)
exten=s-NOPASSWORD,n,Goto(s,playagain)
exten=s-MAXATTEMPTS,1,NoOp(Too many login attempts)
exten=s-MAXATTEMPTS,n,Playback(vm-goodbye)
exten=s-MAXATTEMPTS,n,Hangup
exten=s-NOUSER,1,NoOp(Invalid extension ${AMPUSER} entered)
exten=s-NOUSER,n,Playback(pbx-invalid)
exten=s-NOUSER,n,Goto(s,playagain)
macro-user-logoff
exten=s,1,Set(DEVICETYPE=${DB(DEVICE/${CALLERID(number)}/type)})
exten=s,n,GotoIf($["${DEVICETYPE}" = "fixed"]?s-FIXED,1)
exten=s,n,AGI(user_login_out.agi,logout,${CALLERID(number)})
exten=s,n(done),Playback(agent-loggedoff)
exten=s-FIXED,1,NoOp(Device is FIXED and cannot be logged out of)
exten=s-FIXED,n,Playback(an-error-has-occured&vm-goodbye)
exten=s-FIXED,n,Hangup
macro-privacy-mgr
exten=s,1,Set(KEEPCID=${CALLERID(num)})
exten=s,n,GotoIf($["foo${CALLERID(num):0:1}"="foo+"]?CIDTEST2:CIDTEST1)
exten=s,n(CIDTEST1),Set(TESTCID=${MATH(1+${CALLERID(num)})})
exten=s,n,Goto(TESTRESULT)
exten=s,n(CIDTEST2),Set(TESTCID=${MATH(1+${CALLERID(num):1})})
exten=s,n(TESTRESULT),GotoIf($["foo${TESTCID}"="foo"]?CLEARCID:PRIVMGR)
exten=s,n(CLEARCID),Set(CALLERID(num)=)
exten=s,n(PRIVMGR),PrivacyManager(${ARG1},${ARG2})
exten=s,n,GotoIf($["${PRIVACYMGRSTATUS}"="FAILED"]?fail)
exten=s,n,GosubIf($["${CALLED_BLACKLIST}" = "1"]?app-blackli
st-check,s,1)
exten=s,n,SetCallerPres(allowed_passed_screen)
exten=s,PRIVMGR+101(fail),Noop(STATUS: ${PRIVACYMGRSTATUS} CID: ${CALLERID(num)} ${CALLERID(name)} CALLPRES: ${CALLLINGPRES})
exten=s,n,Playback(sorry-youre-having-problems)
exten=s,n,Playback(goodbye)
exten=s,n,Playtones(congestion)
exten=s,n,Congestion(5)
exten=h,1,Hangup
default
include=ext-local
exten=s,1,Playback(vm-goodbye)
exten=s,n,Noop(ERROR: FreePBX Does not use the [default] context, confguration error)
exten=s,n,Macro(hangupcall)
macro-fixcid
exten=s,1,Set(CALLERID(name)=${CALLERID(name)})
macro-rg-group
exten=s,1,Macro(user-callerid,SKIPTTL)
exten=s,2,GotoIf($["${CALLERID(name):0:${LEN(${RGPREFIX})}}" != "${RGPREFIX}"]?4:3)
exten=s,3,Set(CALLERID(name)=${CALLERID(name):${LEN(${RGPREFIX})}})
exten=s,4,Set(RGPREFIX=${ARG3})
exten=s,5,Set(CALLERID(name)=${RGPREFIX}${CALLERID(name)})
exten=s,6,Set(RecordMethod=Group)
exten=s,7,Macro(record-enable,${MACRO_EXTEN},${RecordMethod})
exten=s,8,Set(RingGroupMethod=${ARG1})
exten=s,9,Macro(dial,${ARG2},${DIAL_OPTIONS},${ARG4})
exten=s,10,Set(RingGroupMethod='')
macro-dialout
exten=s,1,Macro(user-callerid,SKIPTTL)
exten=s,2,GotoIf($["${ECID${CALLERID(number)}}" = ""]?5)
exten=s,3,Set(CALLERID(all)=${ECID${CALLERID(number)}})
exten=s,4,Goto(7)
exten=s,5,GotoIf($["${OUTCID_${ARG1}}" = ""]?7)
exten=s,6,Set(CALLERID(all)=${OUTCID_${ARG1}})
exten=s,7,Set(length=${LEN(${DIAL_OUT_${ARG1}})})
exten=s,8,Dial(${OUT_${ARG1}}/${ARG2:${length}})
exten=s,9,Playtones(congestion)
exten=s,10,Congestion(5)
exten=s,109,Macro(outisbusy)
macro-dialout-default
exten=s,1,Macro(user-callerid,SKIPTTL)
exten=s,2,Macro(record-enable,${CALLERID(number)},OUT)
exten=s,3,Macro(outbound-callerid,${ARG1})
exten=s,4,Dial(${OUT}/${ARG1})
exten=s,5,Playtones(congestion)
exten=s,6,Congestion(5)
exten=s,105,Macro(outisbusy)
macro-saytext
exten=s,1,Noop(Trying custom SayText playback for "${ARG1}")
exten=s,n,Playback(tts/custom-${MD5(${ARG1})})
exten=s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)
exten=s,n(tts),Macro(tts-saytext,${ARG1},${ARG2},${ARG3})
exten=s,n,Noop(No text-to-speech handler for SayText, cannot say "${ARG1}")
exten=s,n,Goto(done)
exten=s,tts+101,Noop(tts handled saytext)
macro-sayname
exten=s,1,Noop(Trying custom SayName playback for "${ARG1}")
exten=s,n,Playback(tts/custom-${MD5(${ARG1})})
exten=s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)
exten=s,n(tts),Macro(tts-sayalpha,${ARG1},${ARG2},${ARG3})
exten=s,n,SayAlpha(${ARG1})
exten=s,n,Goto(done)
exten=s,tts+101,Noop(tts handled sayname)
macro-saynumber
exten=s,1,Noop(Trying custom SayNumber playback for "${ARG1}")
exten=s,n,Playback(tts/custom-${MD5(${ARG1})})
exten=s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)
exten=s,n(tts),Macro(tts-saynumber,${ARG1},${ARG2},${ARG3})
exten=s,n,SayNumber(${ARG1})
exten=s,n,Goto(done)
exten=s,tts+101,Noop(tts handled saynumber)
macro-saydigits
exten=s,1,Noop(Trying custom SayDigits playback for "${ARG1}")
exten=s,n,Playback(tts/custom-${MD5(${ARG1})})
exten=s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)
exten=s,n(tts),Macro(tts-saydigits,${ARG1},${ARG2},${ARG3})
exten=s,n,SayDigits(${ARG1})
exten=s,n,Goto(done)
Последний диалплан просто не помещается в AMI.
Логика так точно осталась та же, только перешли на последнюю версию Астериска.
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Оригинация звонка

Сообщение Vlad1983 »

а так не можно?

Код: Выделить всё

Action: Command
Command: dialplan show from-internal
ЛС: @rostel
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH