琐事:
我正在尝试在我的 Elastix 服务器上实现电话会议管理功能。最初的问题是 Elastix 无法通过 Web 界面邀请所有参与者参加会议。我发现我可以使用基于 Python 的 Web 应用程序 Asterisk Conference Manager,它基本上是一个创建多个调出文件并将它们放在 Asterisk 的 Outgoing 文件夹中以创建 Confbridge 会议的工具。
问题是:
当一对用户正在通话并且会议邀请已发送给其中一个用户时 - 原始通话将设置为保持。但是随后加入的用户可以通过按下其 SIP 电话上的“Conf”按钮添加另一个不受欢迎的客人,从而悄无声息地将窃听者加入会议。有什么方法可以限制此类功能吗?也许有一个拨号方案或上下文设置?我尝试搜索文档,但似乎没有我需要的信息。
这是我的标注文件的一个示例:
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 还很陌生,所以我不确定这个功能到底怎么称呼。