Назад | Перейти на главную страницу

Конференция Asterisk Confbridge. Как избежать подслушивания?

Интересный факт: Я пытаюсь реализовать функцию управления конференц-связью на своем сервере Elastix. Первоначальная проблема заключалась в невозможности Elastix пригласить всех участников конференции через веб-интерфейс. Я обнаружил, что могу использовать веб-приложение на основе Python под названием Asterisk Conference Manager, которое, по сути, представляет собой инструмент, который создает несколько файлов выноски и помещает их в папку Outgoing Asterisk для создания конференции Confbridge.
Проблема в: когда пара пользователей звонит и приглашение на конференцию выдается одному из пользователей - исходный вызов устанавливается на удержание. Но затем присоединившийся пользователь может добавить еще одного нежелательного гостя, нажав кнопку «Conf» на своем SIP-телефоне, беззвучно включив подслушивающего устройства в конференцию. Есть ли способ ограничить такую ​​функциональность? Может есть настройка диалплана или контекста? Я пытался выполнить поиск в документации, но, похоже, мне не удалось найти нужную информацию.

Вот пример моего файла выноски:

CALLOUT_TEMPLATE = """Channel: SIP/%(number)s
Context: confman-bridge
Extension: %(confnum)s
Priority: 1
MaxRetries: 0
RetryTime: 300
WaitTime: 300
Set: participant_name=%(name)s
Set: participant_number=%(number)s
Set: conf_number=%(confnum)s
"""

Вот как выглядит мой контекст:

[confman-bridge]
load => func_groupcount.so ; function GroupCount - Requires N/A
exten => _X.,1,Verbose(Bridging ${participant_name} ${participant_number}) 
;Limit the number of outgoing calls 
;Set Group

same  =>     n,Set(CALLERID(all)=${participant_name} <${participant_number}>)
same  =>     n,Set(ret=${CURL(${CONFMAN_HOST}/asterisk/enter_conference/${conf_number}/${participant_number})})
same  =>     n,Answer
same  =>     n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?READPIN)
same  =>     n,Answer
same  =>     n,Wait(1)
same  =>     n,Set(PINCOUNT=0)
same  =>     n(READPIN),Read(PIN,enter-conf-pin-number,,,,)
same  =>     n,GotoIf($[x${PIN} = x22]?USER)
same  =>     n,Set(PINCOUNT=$[${PINCOUNT}+1])
same  =>     n,Playback(conf-invalidpin)
same  =>     n,GotoIf($[${PINCOUNT}>3]?h,1)
same  =>     n,Goto(READPIN)
same  =>     n,1,Set(ret=${CURL(${CONFMAN_HOST}/asterisk/leave_conference/${conf_number}/${participant_number})})
same  =>     n(USER),ConfBridge(${EXTEN},,,user_menu)

exten =>     h,1,Hangup

P.S: Я новичок в Asterisk и Elastix, поэтому не уверен, как именно называется эта функция.