Назад | Перейти на главную страницу

Asterisk звонит, даже когда клиент отключен

Мне нужно настроить ящик 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, вы можете попробовать разные варианты:

  1. Первая возможность - использование прогресса вызова (избегая ответа на канал и, таким образом, вызывающего абонента, возможно, платящего за прослушивание рингтонов ... но не всегда работает, в зависимости от поставщика 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()
    
  2. Вторая возможность, создание рингтонов в виде звука на отвеченном канале (это означает, что вызывающий абонент также платит за вызов, ожидая ответа, потому что на вызов фактически ответили):

    [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.

  1. Используя FreePBX или аналогичный интерфейс:

Установите группу звонков и установите для нее «звонок». Затем вы можете указать, сколько секунд он будет звонить.

  1. Используя рукописный код диалплана:

Установите очередь звонков в 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()