Мне нужно настроить ящик Asterisk для перехода к голосовой почте, но только после X звонков.
exten => 1234,1,Dial(SIP/ivan, 30)
exten => 1234,2,VoiceMail(777@mb_tutorial)
exten => 1234,3,PlayBack(vm-goodbye)
exten => 1234,4,HangUp()
Клиент в моем случае - это софтфонный клиент. Если он не работает или не подключен к АТС, это немедленно перенаправит вызывающего абонента на голосовую почту. Время ожидания 30 секунд не применяется в этом случае, когда телефон (sip-клиент) недоступен.
Как я могу настроить Asterisk на попытку дозвониться хотя бы 5 раз (независимо от того, что sip-клиент отключен), а затем, если все еще нет ответа, перенаправьте вызывающего абонента на голосовую почту.
Спасибо
Вы можете создать контекст в extensions.conf
который просто звонит вечно, если вы его вызываете, а затем набираете как добавочный номер, который вы хотите достичь, так и этот контекст. Это гарантирует, что он всегда будет запускать Dial()
приложение за 30 секунд, прежде чем перейти к голосовой почте. (Измените значение 30 секунд, чтобы получить пять мелодий звонка ... период мелодий звонка можно найти в соответствующем разделе indications.conf
для вашей страны, поэтому вы можете рассчитать, сколько времени должно длиться пять звонков.)
Это может выглядеть примерно так:
[noop]
exten => s,1,Wait(30)
same => n,Hangup
[your_context]
exten => 1234,1,Dial(SIP/ivan&Local/s@noop,30)
exten => 1234,2,VoiceMail(777@mb_tutorial)
exten => 1234,3,PlayBack(vm-goodbye)
exten => 1234,4,HangUp()
Вызов нет контекст в основном не будет иметь никакого эффекта, и если SIP/ivan
доступен, то он зазвонит. Если вы не слышите рингтоны при звонке на добавочный номер 1234, вы можете попробовать разные варианты:
Первая возможность - использование прогресса вызова (избегая ответа на канал и, таким образом, вызывающего абонента, возможно, платящего за прослушивание рингтонов ... но не всегда работает, в зависимости от поставщика SIP):
[your_context]
exten => 1234,1,Progress
exten => 1234,2,Ringing
exten => 1234,3,Dial(SIP/ivan&Local/s@noop,30)
exten => 1234,4,VoiceMail(777@mb_tutorial)
exten => 1234,5,PlayBack(vm-goodbye)
exten => 1234,6,HangUp()
Вторая возможность, создание рингтонов в виде звука на отвеченном канале (это означает, что вызывающий абонент также платит за вызов, ожидая ответа, потому что на вызов фактически ответили):
[your_context]
exten => 1234,1,Answer
exten => 1234,2,Playtones(ring)
exten => 1234,3,Dial(SIP/ivan&Local/s@noop,30)
exten => 1234,4,VoiceMail(777@mb_tutorial)
exten => 1234,5,PlayBack(vm-goodbye)
exten => 1234,6,HangUp()
Если вы не слышите мелодии звонка во время ожидания, попробуйте добавить ,r
параметр к Dial
применение:
exten => 1234,3,Dial(SIP/ivan&Local/s@noop,30,r)
Второй ответ нельзя рассматривать как решение, да и синтаксис изменился давно.
Это должно быть Queue (ivan, t ,,, 30) вместо Queue (ivan | t ||| 30).
В этом случае он звонит одноранговым узлам SIP, но это «фальшивые звонки», звонок уже установлен, поэтому вызывающий абонент должен заплатить плату даже за звонок. Первый, который я попробую сегодня, но у меня есть ощущение, что проблема будет в том, что если Иван не в сети и вернется в онлайн в течение 30 секунд, он больше не получит кольца. Надеюсь, я не прав.
В любом случае спасибо за ответы.
Есть несколько вариантов в зависимости от того, как вы используете Asterisk.
Установите группу звонков и установите для нее «звонок». Затем вы можете указать, сколько секунд он будет звонить.
Установите очередь звонков в queue.conf
[ivan]
strategy = ringall
context = default
member => SIP/ivan
Настройте свой диалплан примерно так:
exten => 1234,1,Answer
exten => 1234,n,Queue(ivan,t,,,30)
exten => 1234,n,VoiceMail(777@mb_tutorial)
exten => 1234,n,PlayBack(vm-goodbye)
exten => 1234,n,HangUp()