Curiosidades: Estou tentando implementar uma funcionalidade de gerenciamento de chamadas em conferência no meu servidor Elastix. O problema original estava na incapacidade do Elastix de convidar todos os participantes da conferência via interface web. Descobri que posso usar o aplicativo da Web baseado em Python chamado Asterisk Conference Manager, que é basicamente uma ferramenta que cria vários arquivos de texto explicativo e os coloca na pasta Saída do Asterisk para criar a conferência da Confbridge. O problema é : quando um par de usuários tendo uma chamada e o convite da conferência é emitido para um dos usuários - a chamada original fica em espera. Mas, em seguida, o usuário associado pode adicionar outro convidado indesejável, pressionando o botão "Conf" em seu telefone SIP, silenciosamente incluindo um interceptador para a conferência. Existe alguma maneira de restringir tal funcionalidade? Talvez haja uma configuração Dialplan ou Context? Tentei pesquisar os documentos, mas parece que não tenho as informações de que preciso.
Veja um exemplo do meu arquivo de frase de destaque:
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
"""
É assim que meu contexto se parece:
[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: Sou muito novo no Asterisk e no Elastix, então não tenho certeza de como exatamente essa funcionalidade é chamada.