Trivia:
I'm trying to implement a conference call management functionality on my Elastix server. The original problem was in the Elastix's unability to invite all participants in the conference via web interface. I found up that I can use Python-based web application called Asterisk Conference Manager, which is basically a tool that creates several callout files and places them in Asterisk's Outgoing folder in order to create Confbridge conference.
The problem is:
when a pair of users having a call and the conference invitation is issued to one of the users - the original call sets on Hold. But then the joined user can add an another unwanted guest by pressing "Conf" button on his SIP phone, silently including an eavesdropper to the conference.
Is there any way to restrict such functionality? Maybe there is a Dialplan or Context setting? I've tried to search the docs but it didn't seem to have the info I need.
Here's an example of my callout file:
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
"""
This is how my context looks like:
[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: I'm pretty new to Asterisk and Elastix, so I'm not sure, how exactly this functionality is called.