Страница 1 из 1

Ввод пин-номера карточки после набора номера

Добавлено: 07 окт 2012, 23:16
slavaka_z
Здравствуйте,

Есть сип-провайдер, который дает безлимитку по Москве и есть еще один провайдер, на который можно позвонить, ввести пин-код и безлимитно звонить на все номера России кроме Москвы. Т.е. исходя из патерна набора номера собираюсь либо сразу направлять набранный номер в московкий транк, если номер московкий, но если номер не-москва, нужно вперед добавить телефонный номер провайлера, дожидание ответа (или паузу в несколько секунд), затем набор пин-кода с решеткой в конце, затем после небольшой паузы уже сам этот не-московкий номер.

Настраиваю на Elastix.

С московскими номерами все ясно. Но как сделать такой здоровый "prepend" да еще и с паузами в наборе? Можно ли настроить в самом Elastix, или только конфиги править?

Re: Ввод пин-номера карточки после набора номера

Добавлено: 01 ноя 2012, 15:43
slavaka_z
Редактирую файл extensions-additional.conf, в блоке выделил звездочками, там я закомментировал строчку набора номера и заменил на 5 строчек суть которых должна быть - набрать номер - подождать - набрать пин-код - подождать - набрать желаемый номер... Не проходит сие творение никак, в логе "набираем номер -> звоним -> трубку сняли" и больше ничего не происходит. В трубке - дозваниваемся, нас просят ввести пин-код и тоже ничего не происходит.

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

[macro-dialout-trunk]
include => macro-dialout-trunk-custom
exten => s,1,Set(DIAL_TRUNK=${ARG1})
exten => s,n,GosubIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?sub-pincheck,s,1)
exten => s,n,GotoIf($["x${OUTDISABLE_${DIAL_TRUNK}}" = "xon"]?disabletrunk,1)
exten => s,n,Set(DIAL_NUMBER=${ARG2})
exten => s,n,Set(DIAL_TRUNK_OPTIONS=${DIAL_OPTIONS})
exten => s,n,Set(OUTBOUND_GROUP=OUT_${DIAL_TRUNK})
exten => s,n,GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]?nomax)
exten => s,n,GotoIf($[ ${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull)
exten => s,n(nomax),GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?skipoutcid)
exten => s,n,Set(DIAL_TRUNK_OPTIONS=${TRUNK_OPTIONS})
exten => s,n,Macro(outbound-callerid,${DIAL_TRUNK})
exten => s,n(skipoutcid),GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1)
exten => s,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER})
exten => s,n,Set(custom=${CUT(OUT_${DIAL_TRUNK},:,1)})
exten => s,n,ExecIf($[$["${MOHCLASS}" != "default"] & $["${MOHCLASS}" != ""]]?Set(DIAL_TRUNK_OPTIONS=M(setmusic^${MOHCLASS})${DIAL_TRUNK_OPTIONS}))
exten => s,n(gocall),Macro(dialout-trunk-predial-hook,)
exten => s,n,GotoIf($["${PREDIAL_HOOK_RET}" = "BYPASS"]?bypass,1)
exten => s,n,GotoIf($["${custom}" = "AMP"]?customtrunk)
;****************************************************************************************************
; attempt to prepend Moscow phone number and the pin code
;exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM},300,${DIAL_TRUNK_OPTIONS})
exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/"84955240582",300,${DIAL_TRUNK_OPTIONS})
exten => s,n,Wait(5)
exten => s,n,SendDTMF("495045245#")
exten => s,n,Wait(5)
exten => s,n,SendDTMF(${OUTNUM})
;****************************************************************************************************
exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s,n(customtrunk),Set(pre_num=${CUT(OUT_${DIAL_TRUNK},$,1)})
exten => s,n,Set(the_num=${CUT(OUT_${DIAL_TRUNK},$,2)})
exten => s,n,Set(post_num=${CUT(OUT_${DIAL_TRUNK},$,3)})
exten => s,n,GotoIf($["${the_num}" = "OUTNUM"]?outnum:skipoutnum)
exten => s,n(outnum),Set(the_num=${OUTNUM})
exten => s,n(skipoutnum),Dial(${pre_num:4}${the_num}${post_num},300,${DIAL_TRUNK_OPTIONS})
exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s,n(chanfull),Noop(max channels used up)
exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)
exten => s-ANSWER,1,Noop(Call successfully answered - Hanging up now)
exten => s-ANSWER,n,Macro(hangupcall,)
exten => s-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up)
exten => s-NOANSWER,n,Progress
exten => s-NOANSWER,n,Playback(number-not-answering,noanswer)
exten => s-NOANSWER,n,Congestion(20)
exten => s-INVALIDNMBR,1,Noop(Dial failed due to trunk reporting Address Incomplete - giving up)
exten => s-INVALIDNMBR,n,Progress
exten => s-INVALIDNMBR,n,Playback(ss-noservice,noanswer)
exten => s-INVALIDNMBR,n,Busy(20)
exten => s-CHANGED,1,Noop(Dial failed due to trunk reporting Number Changed - giving up)
exten => s-CHANGED,n,Playtones(busy)
exten => s-CHANGED,n,Busy(20)
exten => _s-.,1,Set(RC=${IF($[${ISNULL(${HANGUPCAUSE})}]?0:${HANGUPCAUSE})})
exten => _s-.,n,Goto(${RC},1)
exten => 17,1,Goto(s-BUSY,1)
exten => 18,1,Goto(s-NOANSWER,1)
exten => 22,1,Goto(s-CHANGED,1)
exten => 23,1,Goto(s-CHANGED,1)
exten => 28,1,Goto(s-INVALIDNMBR,1)
exten => _X,1,Goto(continue,1)
exten => _X.,1,Goto(continue,1)
exten => continue,1,GotoIf($["${OUTFAIL_${ARG1}}" = ""]?noreport)
exten => continue,n,AGI(${OUTFAIL_${ARG1}})
exten => continue,n(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks)
exten => continue,n,Set(CALLERID(number)=${AMPUSER})
exten => disabletrunk,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} DISABLED - falling through to next trunk)
exten => bypass,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} BYPASSING because dialout-trunk-predial-hook)
exten => h,1,Macro(hangupcall,)

; end of [macro-dialout-trunk]

Re: Ввод пин-номера карточки после набора номера

Добавлено: 01 ноя 2012, 16:20
ded
Завязывайте со сценариями набрать номер - подождать - набрать пин-код - подождать - набрать желаемый номер..
Это называется карточная платформа, и это деньги-деньги-деньги....
Наилучшая готовая Астериск-реализация этого (и других) сценария - a2billing, но суппорта вам по a2b будет даже ещё меньше, чем по *.

Re: Ввод пин-номера карточки после набора номера

Добавлено: 01 ноя 2012, 19:40
slavaka_z
К сожалению провайдер не дает доступ по SIP.

A2billing - это же не то, мне нужно не предоставлять услугу, а пользоваться ей, без особого учета использования.

Нашел все-таки как сделать.

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

exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/"84955240582",300,D(pincode#${OUTNUM}#))
Так заработало!