Конференция Asterisk Confbridge. Как избежать подслушивающих?
Общая информация: я пытаюсь реализовать функцию управления конференц-связью на моем сервере Elastix. Первоначальная проблема заключалась в невозможности Elastix пригласить всех участников конференции через веб-интерфейс. Я обнаружил, что могу использовать основанное на Python веб-приложение под названием Asterisk Conference Manager, которое в основном представляет собой инструмент, который создает несколько файлов выноски и помещает их в исходящую папку 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
PS: я довольно новичок в Asterisk и Elastix, поэтому я не уверен, как именно эта функциональность называется.