Конференции
Добавлено: 09 ноя 2016, 17:36
Задача мне поставлена такая - создавать "на ходу" конференции.
То есть: юзер 111 звонит юзеру 222, и они решают позвать юзера 333. 111 нажимает *0 и они вдвоём оказываются в конференции. Затем кто-то из них набирает "что-то" 333, разговаривает с ним, и, если тот согласен, затаскивает его в в ту самую конфу, где ждёт 222.
В общем, понятно. Для начала я решил просто создать конфу и поприглашать туда людей. И ничего не вышло... Я нашёл 2 с половиной варианта, и ни один не заработал как надо. То юзер не заходит, то DTMF фичи не включаются... Вот последняя попытка по рецепту wapo:
extensions.conf
features.conf
Что получается:
То есть 222 попадает в конфу, а 111 вешает трубку...
Подскажите, пожалуйста, как это правильно сделать ?
То есть: юзер 111 звонит юзеру 222, и они решают позвать юзера 333. 111 нажимает *0 и они вдвоём оказываются в конференции. Затем кто-то из них набирает "что-то" 333, разговаривает с ним, и, если тот согласен, затаскивает его в в ту самую конфу, где ждёт 222.
В общем, понятно. Для начала я решил просто создать конфу и поприглашать туда людей. И ничего не вышло... Я нашёл 2 с половиной варианта, и ни один не заработал как надо. То юзер не заходит, то DTMF фичи не включаются... Вот последняя попытка по рецепту wapo:
extensions.conf
Код: Выделить всё
[from-internal]
exten => _XXX,1,Set(DYNAMIC_FEATURES=pitch0)
exten => _XXX,n,Dial(SIP/${EXTEN},60)
exten => _XXX,n,Hangup
exten => *0,1,NoOp(Conf)
exten => *0,n,Set(CONFBRIDGE_JOIN_SOUND=confbridge-join)
exten => *0,n,Set(CONFBRIDGE_LEAVE_SOUND=confbridge-leave)
exten => *0,n,ConfBridge(${CALLERID(num)})
exten => *0,n,Hangup
exten => _888XXX,1,NoOp(Transfer to conferenc: ${EXTEN:3})
same => n,Set(CONFBRIDGE_JOIN_SOUND=confbridge-join)
same => n,Set(CONFBRIDGE_LEAVE_SOUND=confbridge-leave)
same => n,ConfBridge(${EXTEN:3})
[macro-conf]
exten => s,1,NoOp(---------------------ALL INFO about CHANNELS!!!!---------------)
exten => s,n,NoOp(BRIDGEPEER: ${BRIDGEPEER} for number: ${CALLERID(num)} )
exten => s,n,ChannelRedirect(${BRIDGEPEER},from-internal,888${CALLERID(num)},1)
exten => s,n,NoOp(------------------ALL INFO about CHANNELS!!!!-----------------)
Код: Выделить всё
[featuremap]
disconnect=**
[applicationmap]
pitch0=>*0,self/both,Macro,conf
Код: Выделить всё
Connected to Asterisk 11.22.0 currently running on localhost (pid = 31151)
== Using SIP VIDEO CoS mark 6
== Using SIP RTP CoS mark 5
-- Executing [222@from-internal:1] Set("SIP/111-00000065", "DYNAMIC_FEATURES=pitch0") in new stack
-- Executing [222@from-internal:2] Dial("SIP/111-00000065", "SIP/222,60") in new stack
== Using SIP VIDEO CoS mark 6
== Using SIP RTP CoS mark 5
-- Called SIP/222
-- SIP/222-00000066 is ringing
-- SIP/222-00000066 answered SIP/111-00000065
-- Feature Found: pitch0 exten: pitch0
-- Executing [s@macro-conf:1] NoOp("SIP/111-00000065", "---------------------ALL INFO about CHANNELS!!!!---------------") in new stack
-- Executing [s@macro-conf:2] NoOp("SIP/111-00000065", "BRIDGEPEER: SIP/222-00000066 for number: 111 ") in new stack
-- Executing [s@macro-conf:3] ChannelRedirect("SIP/111-00000065", "SIP/222-00000066,from-internal,888111,1") in new stack
-- Executing [s@macro-conf:4] NoOp("SIP/111-00000065", "------------------ALL INFO about CHANNELS!!!!-----------------") in new stack
-- Executing [888111@from-internal:1] NoOp("SIP/222-00000066", "Transfer to conferenc: 111") in new stack
-- Executing [888111@from-internal:2] Set("SIP/222-00000066", "CONFBRIDGE_JOIN_SOUND=confbridge-join") in new stack
-- Executing [888111@from-internal:3] Set("SIP/222-00000066", "CONFBRIDGE_LEAVE_SOUND=confbridge-leave") in new stack
-- Executing [888111@from-internal:4] ConfBridge("SIP/222-00000066", "111") in new stack
-- <SIP/222-00000066> Playing 'conf-onlyperson.gsm' (language 'en')
== Spawn extension (from-internal, 222, 2) exited non-zero on 'SIP/111-00000065'
Подскажите, пожалуйста, как это правильно сделать ?