Перевод текущего разговора в новую конференцию с добавлением участников.
я посидел подумал ничего умнее, как с channelRedirect и localchannel на ум не идет. Может кто реализовывал данную задачу? Подскажите куда копать?
ну а если подумать как сделать при помощи Asterisk?
| Quote: |
| Задача: два абонента общаются др. с другом и тут один из них понимает что необходимо создать конференцию и пригласить в нее собеседника и еще парочку типов. Вопрос как? |
_________________
Slackware 13.1 - Asterisk 1.8
чет я Вас не понял ни разу.
meetme_custom.conf
| Code: |
| conf => 1 conf => 2 |
features_aplicationmap_custom.conf
| Code: |
| meetme => #,self,Macro,me |
globals_custom.conf
| Code: |
| MEETME_EXIT_CONTEXT=ctMeetmeJoining DYNAMIC_FEATURES=meetme |
extensions_custom.conf
| Code: |
| [ctMeetme] exten => 351,1,Answer() exten => 351,n,GotoIf($["${DB(MyMeetme/1/CID)}" = "${CALLERID(num)}"]?meetme_1) exten => 351,n,GotoIf($["${DB(MyMeetme/2/CID)}" = "${CALLERID(num)}"]?meetme_2) exten => 351,n,GotoIf($["${DB(MyMeetme/1)}" = "busy"]?meetme_2) exten => 351,n(meetme_1),Set(DB(MyMeetme/1/CID)=${CALLERID(num)}) exten => 351,n,Set(DB(MyMeetme/1)=busy) exten => 351,n,Set(__CONFNO=1) exten => 351,n(cn_marked_1),Meetme(1,AoX,) exten => 351,n(meetme_2),GotoIf($["${DB(MyMeetme/2)}" = "busy"]?meetme_busy) exten => 351,n(meetme_2),Set(DB(MyMeetme/2/CID)=${CALLERID(num)}) exten => 351,n,Set(DB(MyMeetme/2)=busy) exten => 351,n,Set(__CONFNO=2) exten => 351,n(cn_marked_2),Meetme(2,AoX,) exten => 351,n(meetme_busy),Playback(af_MeetmeBusy) exten => 351,n,Hangup() exten => h,1,GotoIF($["${DB(MyMeetme/1/CID)}" = "${CALLERID(num)}"]?:h_2) exten => h,n,Set(DB(MyMeetme/1)=free) exten => h,n,Set(DB(MyMeetme/1/CID)=0) exten => h,n(h_2),GotoIF($["${DB(MyMeetme/2/CID)}" = "${CALLERID(num)}"]?:h_3) exten => h,n,Set(DB(MyMeetme/2)=free) exten => h,n,Set(DB(MyMeetme/2/CID)=0) exten => h,n(h_3),MeetmeAdmin(${CONFNO},K,) exten => h,n,Hangup() [ctMeetmeJoining] exten => 1,1,Answer() exten => 1,n,Playback(custom/af_MeetmeInNum) ;exten => 1,n,Playback(beep) exten => 1,n,WaitExten(20) exten => 1,n,Hangup() ;exten => _X.,1,Dial(SIP/${EXTEN}) ;exten => _X.,n,Goto(ctMeetme,351,cn_marked_${CONFNO}) ;exten => _X.,n(meetme),Goto(ctMeetme,351,cn_marked_${CONFNO}) ;exten => _X.,n,Goto(ctMeetmeUsers,${CONFNO},1) include => from-internal [ctMeetmeUsers] exten => 1,1,Meetme(1,oMw,) exten => 2,1,Meetme(2,oMw,) exten => h,1,Hangup() [macro-me] exten => s,1,Noop(===========bridgetpeer-${BRIDGEPEER}===blindtransfer-${BLINDTRANSFER}) exten => s,n,GotoIF($["${DB(MyMeetme/1/CID)}" = "${CALLERID(num)}"]?room_1:b_check_room_1) exten => s,n(b_check_room_1),GotoIf($["${DB(MyMeetme/1)}" = "busy"]?meetme_2) exten => s,n,Set(DB(MyMeetme/1/CID)=${CALLERID(num)}) exten => s,n,Set(DB(MyMeetme/1)=busy) exten => s,n(room_1),Set(__CONFNO=1) exten => s,n,ChannelRedirect(${BRIDGEPEER}|ctMeetmeUsers|${CONFNO}|1) exten => s,n,ChannelRedirect(${CHANNEL}|ctMeetme|351|cn_marked_1) exten => s,n(meetme_2),GotoIF($["${DB(MyMeetme/2/CID)}" = "${CALLERID(num)}"]?room_2:meetme_busy)) exten => s,n,GotoIf($["${DB(MyMeetme/2)}" = "busy"]?meetme_busy) exten => s,n,Set(DB(MyMeetme/2/CID)=${CALLERID(num)}) exten => s,n,Set(DB(MyMeetme/2)=busy) exten => s,n(room_2),Set(__CONFNO=2) exten => s,n,ChannelRedirect(${BRIDGEPEER}|ctMeetmeUsers|${CONFNO}|1) exten => s,n,ChannelRedirect(${CHANNEL}|ctMeetme|351|cn_marked_2) exten => s,n(meetme_busy),ChannelRedirect(${BRIDGEPEER}|playback) exten => s,n(playback),Playback(af_MeetmeBusy) exten => s,n,Hangup() |
Как пользоваться:
Для того, чтобы собрать конференцию во время разговора нужно нажать «#». Вы и собеседник будете переключены в конференцию. Для ввода в конференцию нового участника нажмите «1», затем введите номер абонента, нажмите «#» во время разговора. Если ваш собеседник недоступен, или не может присоединиться к конференции – положите трубку, затем наберите номер «351».
Также вы можете собрать конференцию – набрав номер «351», затем нажмите «1» и введите номер подключаемого абонента.
Для того чтобы прекратить конференцию, достаточно положить трубку, находясь в конференции, в этом случае все присоединенные участники будут отключены.
NB! Ели вы зашли в конференцию, набрали «1», номер абонента, но во время разговора передумали собирать конференцию, обязательно после завершения разговора освободите комнату. (Достаточно набрать «351» и положить трубку после соединения.) В противном случае, комната конференций останется зарезервирована за вашим аппаратом, и никто другой не сможет ей воспользоваться.
2. Анализирую Ваш скрипт я не нашел упоминаний о том как в конференцию пригласить еще участников.
др. словами, редиректом мы загоням двух пользователей в конференцию, какой командой пригласить третьего?
я вижу решение этой задачи установкой некой фичи, т.е. один нажимает на ## и вводит номер абонента, запускается скрпит, который создает колл файл и он в свою очередь дозванивается до абонента и перебрасывает его в нашу конференцию.