Донабор номера в Asterisk

Опубликовано admin -

Думается мне, достаточно администраторов Asterisk сталкивались с замечательным вопросом пользователей - "а почему после 9/8" нет гудка, как на городском телефоне. Действительно, эта особенность SIP-телефонии слегка раздражает привыкших к классике пользователей.

Не менее часто встречается и вопрос "я не успеваю набрать номер, сделайте мне время ожидания подольше". А когда делаешь время ожидания подольше - "почему так долго надо ждать вызова". Конечно, выходом во втором случае остается набор решетки после номера, но и к этому капризных пользователей приучить трудно.

Решение для донабора номера по одной цифре и гудка после 8/9 (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()

(c)https://alex-at.ru/asterisk/donabor

Теги

Добавить комментарий

Ограниченный HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
CAPTCHA
2 + 0 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.