如果任何用户离开 confbridge,则在星号拨号计划上生成事件



我在星号中使用confBridge进行会议。我想检测正在进行的通话中的用户数是否小于或等于 1,然后终止电话会议。

我试过这个——

exten => ConfTest,1,System(asterisk -rx "confbridge kick ${DB(CONF/NUM)} ${DB(CONF/ConfTest)}")
exten => ConfTest,n,Set(DB(CONF/ConfTest)=${CHANNEL})
exten => ConfTest,n,Set(ID=${RAND(1,500)})
exten => ConfTest,n,Set(DB(CONF/NUM)=${ID})
exten => ConfTest,n,Set(target=ConfTest1)
exten => ConfTest,n,Originate(SIP/${target},app,confBridge,${ID},default_user)
exten => ConfTest,n,Set(target=ConfTest2)
exten => ConfTest,n,Originate(SIP/${target},app,confBridge,${ID},default_user)
exten => ConfTest,n,Macro(dialout-trunk-predial-hook-test)
exten => ConfTest,n,confbridge(${ID},,src_user)
exten => ConfTest,n,Answer()
exten => ConfTest,n,Set(i=1)
exten => ConfTest,n,While($[${i} = 1])
exten => ConfTest,n,GoToIf($[0${CONFBRIDGE_INFO(parties,${ID})} <= 1]?18:15)
exten => ConfTest,n,NoOp(number of participants in conference call = ${CONFBRIDGE_INFO(parties,${ID})})
exten => ConfTest,n,Wait(1000)
exten => ConfTest,n,EndWhile()
exten => ConfTest,n,System(asterisk -rx "confbridge kick ${DB(CONF/NUM)} ${DB(CONF/ConfTest))

这里的行不是从 while 循环执行的。

是否有任何可用于为电话会议中涉及的所有通道注册挂断处理程序。例如-

debianpc08*CLI> confbridge list 1
Channel                       User Profile     Bridge Profile   Menu             CallerID
============================= ================ ================ ================ ================
SIP/ConfTest1-0000009c        default_user     default_bridge                    ConfTest1
SIP/ConfTest2-0000009d        default_user     default_bridge                    ConfTest2
SIP/ConfTest3-0000009b        src_user         default_bridge                    ConfTest3

在这里,我想为所有通道(如 SIP/ConfTest1-0000009c)注册挂断处理程序。

您可以使用默认的挂断处理程序(h-extension)来捕获它

;record situation
exten => ConfTest,n,Set(HANGUP_OK=NO)
exten => ConfTest,n,confbridge(${ID},,src_user)
; if user exit confbridge, clear it
exten => ConfTest,n,Set(HANGUP_OK=YES)
; if hanguped in confbridge, do something
exten => h,1,GotoIF($[ "${HANGUP_OK}" == "NO" ]?dosomething,s,1)

你做错了。完成此任务的最佳选择是使用Asterisk ARI和bridges API。这个想法非常简单,启动一个 Stasis 应用程序来处理您的网桥,将通道放入网桥中。当他们进出桥时,请收听 WebSocket 事件,看看谁离开了,谁进来了。

您可以查看 http://www.phpari.org 有关如何编写此类应用程序的其他信息,演示拨号应用程序应为您提供有关如何执行此操作的大量信息。

尼尔

相关内容

  • 没有找到相关文章

最新更新