Нижеизложенный пример конфигурации Asterisk позволяет обеспечить вывод гудка после набора "8" или "9", как на городском телефоне, и решить проблему со временем ожидания вызова (некоторые пользователи не успевают набрать номер, но если увеличить задержку, другие жалуются на излишне долгий вызов) через организацию донабора номера по одной цифре.
[upats]
; номера "УПАТС"
exten => 100,1,Dial(SIP/Local100,,tT)
exten => 100,n,Congestion()
exten => 100,n,Hangup()
exten => 101,1,Dial(SIP/Local101,,tT)
exten => 101,n,Congestion()
exten => 101,n,Hangup(); экстренные службы
exten => _0[1-4]!,1,Dial(SIP/external/${EXTEN})
exten => _0[1-4]!,n,Congestion()
exten => _0[1-4]!,n,Hangup()
exten => _112!,1,Dial(SIP/external/${EXTEN})
exten => _112!,n,Congestion()
exten => _112!,n,Hangup()
exten => _911!,1,Dial(SIP/external/${EXTEN})
exten => _911!,n,Congestion()
exten => _911!,n,Hangup(); набор номера между странами через "810", к сожалению, длина номера произвольная :(,
; и решение на эти номера не сработает - номер придется набирать быстро;
; выход во внешний мир - через "8" на внешнем операторе
exten => _810X!,1,Dial(SIP/external/8${EXTEN:1},,tT)
exten => _810X!,n,Congestion()
exten => _810X!,n,Hangup(); набор номера через "8", выход во внешний мир - через "8" на внешнем операторе
exten => _8NXXXXXXXXX!,1,Dial(SIP/external/8${EXTEN:1},,tT)
exten => _8NXXXXXXXXX!,n,Congestion()
exten => _8NXXXXXXXXX!,n,Hangup(); набор городского номера через "9", выход на городские номера прямой на внешнем операторе
exten => _9NXXXXXX!,1,Dial(SIP/external/${EXTEN:1},,tT)
exten => _9NXXXXXX!,n,Congestion()
exten => _9NXXXXXX!,n,Hangup()
; обработка донабора в случае, если абонент ничего вменяемого не набрал
exten => _X!,1,Set(X_PREDIGITS=${EXTEN})
exten => _X!,n,Set(X_ORIGCONTEXT=${CONTEXT})
exten => _X!,n,Set(X_REPEATS=1)
exten => _X!,n,Goto(more,s,1); а сюда подаем в случае полной засады
exten => i,1,Congestion()
exten => i,n,Hangup(); а это, собственно, процедура донабора
[more]
; проверка прогресса вызова
exten => s,1,GotoIf($["${X_PROGRESS}" = "1"]?tone)
exten => s,n,Set(X_PROGRESS=1)
exten => s,n,Answer()
exten => s,n(tone),GotoIf($["${X_TONE}" = "2"]?wait)
exten => s,n,GotoIf($["${X_TONE}" = "1"]?check); нужно проиграть гудок?
exten => s,n,GotoIf($[${LEN(${X_PREDIGITS})} > 1]?setstop)
exten => s,n,GotoIf($[$["${X_PREDIGITS:0:1}" != "9"] & $["${X_PREDIGITS:0:1}" != "8"]]?setstop); проигрываем гудок после "8", "9"
exten => s,n,PlayTones(425/1000)
exten => s,n,Set(X_TONE=1)
exten => s,n,Goto(wait); нужен ли еще гудок?
exten => s,n(check),GotoIf($[${LEN(${X_PREDIGITS})} > 1]?stop)
exten => s,n,Goto(wait); прекращаем гудеть
exten => s,n(stop),StopPlayTones()
exten => s,n(setstop),Set(X_TONE=2)
exten => s,n,Goto(wait); ждем цифру (5 - интервал, который ждем перед выходом)
exten => s,n(wait),WaitExten(5)
exten => _X!,1,Goto(${X_ORIGCONTEXT},${X_PREDIGITS}${EXTEN},1)
exten => t,1,Set(X_REPEATS=$[${X_REPEATS}-1]); не успели?
exten => t,n,GotoIf($[${X_REPEATS} >= 0]?i,1)
exten => t,n,Goto(s,1); сброс линии если не успели
exten => i,1,Congestion()
exten => i,n,Hangup()
URL: http://alex-at.ru/asterisk/donabor
Обсуждается: http://www.opennet.me/tips/info/2619.shtml
Вообще, мне кажется, для конструкций с логикой стоит использовать хотя бы AEL.
а как увеличить задержку? а то что то не смог нагуглить
> обеспечить вывод гудкаГудок у паровоза :)
И как с паровоза "гудок вывести", типа слямзить :)
Как бывший связист, есть "сигнал ответа станции" или
просто "ответ станции", а не гудок.
Можно и "гудок" говорить, только, действительно, гудок у паровоза, у станции -- зуммер.
>гудок у паровоза, у станции -- зуммер.OMG! Что Вы такое говорите?! Откуда в моём телефоне -- ПАРОВОЗ? %)))
Он там прячется, а вы не в курсе:)
Зуммер,это по немецки - сигнал, а так как язык не такой богатый
как русский, может быть сигналом чего угодно, в зависимости
от контекста.
> язык не такой богатый как русскийУважаемый герр так говорит потому, что знает немецкий так же хорошо, как и русский? :) Кстати, "по-немецки" пишется через дефис.
Ну и зачем этот маразм городить?
Этот маразм называется предсказуемым поведением.
> Этот маразм называется...принципом наименьшей неожиданности.
> предсказуемым поведением.
НЕ ГУДОК, и не СИГНАЛ ОТВЕТА СТАНЦИИ, а сигнал готовности станции к приему номера. А ответить она может уже - КПВ, занято, перегружена .........
ignorepat => 9
Чем не устраивает?