AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Информировать звонящего, что он попадает на call waiting

Asterisk IP PBX 5 сообщений 27.09.2010 13:37 - 28.09.2010 11:05
#1 27.09.2010 13:37

Информировать звонящего, что он попадает на call waiting


Есть 2 SIP телефона, подключенных к одному и тому же Asterisk серверу. Можно ли при звонке на номер, который сечас занят, информировать звонящего, что абонент, которому он звонит, сейчас разговаривает, при сохранении режима ожидания?

Пока у меня мысли дальше отключения call waiting на телефоне и обработки статуса BUSY не идут. Хотя можно было бы в таком случае проигрывать сообщение и повторять звонок, но мне такое решение не кажется удачным, хотелось бы сохранить call waiting, например чтобы потом по таймауту уходить на голосовую почту, как это происходит сейчас. Есть ли решение лучше?

_________________
CentOS 4 2.6.9-67.0.22.ELsmp/Asterisk 1.4.36/app_fax(t38)/spandsp 0.0.6pre12/dahdi 2.3.0.1/wanpipe 3.5.15
Sangoma A200d/Polycom IP601,501

FreeBSD 7.2-RELEASE/asterisk16-1.6.0.9_3
#2 27.09.2010 14:41

тебе поможет очередь. QUEUE()

либо твой ход мыслей развить немного
обрабатываешь бизи играешь музыку возвращаешься опять к вызовы и опять обрабатываешь бизи, и так по кругу, минус в том что когда звонивших будет много то вероятность того что дозвонится первый а не последний будет по теории вероятностей,но лучше все же реализовать с использованием очереди, все звонки будут попадать в очередь по мере поступления, где людям можно еще периодически извиняться и говорить скока народу звонит на нужного екстена и какой он в очереди....
#3 28.09.2010 06:49

Вот Вам пример с юзанием DEVICE_STATE.

На 101-м приоритете - Playback(plz-wait,noanswer) - искомое сообщение.

Code:
exten => _XXX,1,NoOp(Subscriber ${EXTEN} has state ${DEVICE_STATE(SIP/${EXTEN})}).
exten => _XXX,2,Set(FORWARD_CONTEXT=office-00)
exten => _XXX,3,GotoIf($["${DEVICE_STATE(SIP/${EXTEN})}" = "INUSE"]?100:4)
exten => _XXX,4,GotoIf($["${DEVICE_STATE(SIP/${EXTEN})}" = "UNKNOWN"]?110:5)
exten => _XXX,5,GotoIf($["${DEVICE_STATE(SIP/${EXTEN})}" = "UNREACHABLE"]?110:6)
exten => _XXX,6,GotoIf($["${DEVICE_STATE(SIP/${EXTEN})}" = "UNAVAILABLE"]?110:102)
exten => _XXX,7,Hangup(19)
exten => _XXX,100,Wait(1)
exten => _XXX,101,Playback(plz-wait,noanswer)
exten => _XXX,102,Dial(SIP/${EXTEN},30,HhTto)
exten => _XXX,103,Hangup(21)
exten => _XXX,110,Playback(not-available,noanswer)
exten => _XXX,111,Hangup(19)


Дальше сами разберетесь.
#4 28.09.2010 10:57

Lonely_Ghost, я так понял, что проверять статус и если надо проигрывать сообщение ДО того, как звонить на нужный номер?
_________________
CentOS 4 2.6.9-67.0.22.ELsmp/Asterisk 1.4.36/app_fax(t38)/spandsp 0.0.6pre12/dahdi 2.3.0.1/wanpipe 3.5.15
Sangoma A200d/Polycom IP601,501

FreeBSD 7.2-RELEASE/asterisk16-1.6.0.9_3
#5 28.09.2010 11:05

именно так.
если выше я описал, что проверка идет до посылки вызова - значит так и есть.
у Вас есть другие варианты?Smile