VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Что значит, расширить конференцию? *5

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Что значит, расширить конференцию? *5

Сообщение postscripter »

Тихо, сам с собою я веду беседу... Да, действительно, проблема фонер лайта. Окончательный вариант разговора втроём, получилось вообще шикарно:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Сочетание *0 включает режим конференции
[macro-MyFeature1]
exten => s,1,Noop(Perevod v konfu)
same => n,Set(__confno=${CALLERID(num)}_${RAND()})
same => n,Noop(Perevod sobesed)
same => n,ChannelRedirect(${BRIDGEPEER},my-addtoconf,${confno},asuser_welcome)
same => n,Noop(Perevod sebya)
same => n,ChannelRedirect(${CHANNEL},my-addtoconf,${confno},asadmin_welcome)
same => n,Hangup
same => n,MacroExit()


;; Редирект канала в конференцию $EXTEN
[my-addtoconf]
exten => _X.,1(asadmin_welcome),Playback(konferencii)
same => n(asadmin),Noop(...as ADMIN)
same => n,ConfBridge(${EXTEN},my_mybridge,my_myadmin,my_myadminmenu)
same => n,Read(dst,speed-enternumber)
same => n,Set(devinfo_context=${ODBC_CHECK_CONTEXT(${CALLERID(num)})})
same => n,Dial(LOCAL/${dst}@${devinfo_context},10,gG(my-addtoconf^${EXTEN}^redir))
same => n,GotoIF($[${DIALSTATUS} = NOANSWER]?noansw)
same => n,GotoIF($[${DIALSTATUS} = BUSY]?zanjat)
same => n(wrongnum),Playback(invalid)
same => n,GoTo(asadmin)
same => n(noansw),Playback(ne-otvechaet&poprobujte-eshhe-raz)
same => n,GoTo(asadmin)
same => n(zanjat),Playback(extension&zanjat)
same => n,GoTo(asadmin)
same => n(redir),GoTo(asadmin)
same => n(redir2),GoTo(asuser)
same => n(asuser_welcome),Playback(konferencii)
same => n(asuser),Noop(...as USER)
same => n,Set(TIMEOUT(absolute)=3600)
same => n,ConfBridge(${EXTEN},my_mybridge,my_myuser,user_menu)
same => n,Hangup
;exten => T,1,Playback(vm-goodbye)


Важно включить сквозное прохождение dtmf-кодов для админа, чтобы тот мог набрать пин-код для выхода на закрытые направления, для этого в меню конференции отключить однокнопочные сочетания, оставить только со звёздочкой:

(dtmf_passthrough=yes)

[my_myadminmenu]
type=menu
* = playback_and_continue(conf-adminmenu)
*1 = toggle_mute
*2 = admin_toggle_conference_lock
*3 = admin_kick_last
*4 = decrease_listening_volume
*5 = leave_conference
*6 = increase_listening_volume
*7 = decrease_talking_volume
*8 = no_op
*9 = increase_talking_volume
*0 = leave_conference
помучился сам - дай помучиться другим
Аватара пользователя
postscripter
Сообщения: 93
Зарегистрирован: 16 сен 2015, 15:24

Re: Что значит, расширить конференцию? *5

Сообщение postscripter »

Небольшие изменения, прогнал по разным вариантам - ошибок больше не замечено.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Узнаём права звонящего
[macro-check-devinfo-context]
exten => s,1,Noop(Who am I?)
same => n,Set(ARG1=${FILTER(0123456789,${ARG1})})
same => n,Gotoif(${devinfo_context}?the_end)
same => n,Set(devinfo_context=${ODBC_CHECK_CONTEXT('${ARG1}')})
same => n(the_end),MacroExit()




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Сочетание *0 включает режим конференции
[macro-MyFeature1]
exten => s,1,Noop(Perevod v konfu)
; Узнаём, кто нажал кнопку (при звонке в транк $callerid подменяется)
same => n,Set(numero=${REALCALLERIDNUM})
same => n,Set(numero=${IF($["${numero}" = ""]?${CALLERID(num)}:${numero})})
; Запрашиваем его права (стартовый контекст)
same => n,Macro(check-devinfo-context,${numero})
same => n,GotoIf(${devinfo_context}?:dosvidos)
same => n,Set(__confno=${numero}_${RAND()})
same => n,Noop(Perevod sobesed)
same => n,ChannelRedirect(${BRIDGEPEER},my-addtoconf,${confno},asuser_welcome)
same => n,Noop(Perevod sebya)
same => n,ChannelRedirect(${CHANNEL},my-addtoconf,${confno},asadmin_welcome)
same => n,Hangup
same => n(dosvidos),MacroExit()


;; Редирект канала в конференцию $EXTEN
[my-addtoconf]
exten => _X.,1(asadmin_welcome),Playback(konferencii)
same => n(asadmin),Noop(...as ADMIN)
same => n,ConfBridge(${EXTEN},my_mybridge,my_myadmin,my_myadminmenu)
same => n,Read(dst,speed-enternumber)
same => n,Macro(check-devinfo-context,${CALLERID(num)}) ; можно убрать?
same => n,Dial(LOCAL/${dst}@${devinfo_context},10,gG(my-addtoconf^${EXTEN}^redir))
same => n,GotoIF($[${DIALSTATUS} = NOANSWER]?noansw)
same => n,GotoIF($[${DIALSTATUS} = BUSY]?zanjat)
same => n(wrongnum),Playback(invalid)
same => n,GoTo(asadmin)
same => n(noansw),Playback(ne-otvechaet&poprobujte-eshhe-raz)
same => n,GoTo(asadmin)
same => n(zanjat),Playback(extension&zanjat)
same => n,GoTo(asadmin)
same => n(redir),GoTo(asadmin)
same => n(redir2),GoTo(asuser)
same => n(asuser_welcome),Playback(konferencii)
same => n(asuser),Noop(...as USER)
same => n,Set(TIMEOUT(absolute)=3600)
same => n,ConfBridge(${EXTEN},my_mybridge,my_myuser,user_menu)
same => n,Hangup
;exten => T,1,Playback(vm-goodbye)
помучился сам - дай помучиться другим
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH