Добрый день. возникла задача организации конференции при существующем звонке.
Реализацию подсмотрел:
http://habrahabr.ru/sandbox/52259/
extensions.conf
[default]
exten => _X.,1,NoOp()
same => n,Macro(dyn-features-nway-start)
same => n,Dial(SIP/${EXTEN},,tT)
[macro-dyn-features-nway-start]
;Добавляем возможность создания n-way конференции
exten => s,1,NoOp()
same => n,Set(__GOTO_ON_BLINDXFR=fromtransfer^0^1)
same => n,Set(__TRANSFER_CONTEXT=fromtransfer)
same => n,Set(__CONFNO=${CALLERID(num)})
[fromtransfer]
;На следующие extentions можно перевести звонок, нажав "*0" (пункт 1.)
;Если нажмём "0" - попадаём в контекст [dynamic-nway]
;Если же ничего не нажать, либо нажать не "0", то вернёмся обратно к разговору (не в конференцию)
exten => 0,1,NoOp()
same => n,Gosub(dynamic-nway,${CONFNO},1)
same => n,Hangup()
[dynamic-nway]
;Тут создаётся новая комната для конференций
;№ комнаты = № абонента, который инициировал создание конференции (нажал "*0 0")
exten => _X.,1,NoOp()
same => n,Answer
same => n,Set(CONFNO=${EXTEN})
same => n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
same => n,Set(DYNAMIC_FEATURES=)
same => n,MeetMe(${CONFNO},1pdMX)
same => n,Hangup
[dynamic-nway-invite]
;Когда мы находимся в конференции и нажимаем "0" появляется гудок в линии.
;После чего набираем номер нового участника конференции и "#"
exten => 0,1,NoOp()
same => n,Read(DEST,dial,,i)
same => n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
same => n,Dial(Local/${DEST}@default,,g)
same => n,Set(DYNAMIC_FEATURES=)
same => n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)
[macro-nway-ok]
;Сюда попадаем, если нажмём "**" для добавления нового участника в конференцию
exten => s,1,NoOp()
same => n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
[macro-nway-notok]
;Тут мы окажемся, если не захотим добавлять нового участника в конференцию
exten => s,1,NoOp()
same => n,SoftHangup(${BRIDGEPEER})
features.conf
[featuremap]
blindxfer => *0
[applicationmap]
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok
Теперь опишу засаду..
из за этой строчки в конексте default, которая отправляет в макросы
same => n,Macro(dyn-features-nway-start)
я не могу теперь делать безусловную переадресацию и парковку вызовов.
Мое предположение, что в конексте [fromtransfer] можно дописать строку для обработки таких вызовов, но по своей неопытности не могу сообразить как это сделать. Мне кажеться решение простое, но уже 2 дня потратил безуспешно. Может не туда копаю?