如何在队列中解散被放弃的呼叫

  • 本文关键字:放弃 呼叫 队列 asterisk
  • 更新时间 :
  • 英文 :


我想检测队列中的传入呼叫,在队列成员应答之前放弃了来电。

queue_log文件提到了这些,因此一种方法是使用它。但是我想在我的拨号计划中处理这种情况,使用一个命令在检测到此类呼叫时向不和谐沙龙发出通知。

我尝试使用h扩展名:

exten = h,1,NoOp("hangup ! cause : ${HANGUPCAUSE}")
same = n,GotoIf($[ ${HANGUPCAUSE} != 16 ]?done)
same = n,system(/myTools/discord-notification "Missed call from ${CALLERID(num)}.")
same = n(done),NoOp()

它有效,但它没有区分应答呼叫和未应答/放弃呼叫(它们都发出 16 个挂断原因(。

我还尝试使用hangup_handler_push添加一个挂断处理程序,但这没有任何区别。

如何在星号隔膜中检测此类调用?

您已使用queue_log(可能在mysql中queue_log(或在拨号计划的顶级呼叫结束后检查QUEUESTATUS变量。

除了QUEUESTATUS之外,Asterisk Queue应用程序在完成呼叫时设置另一个通道变量:${ABANDONED}

我必须使用此方法手动执行此操作: 在执行队列应用程序之前将放弃的共享通道变量设置为 true,然后在通过队列 GoSub 参数应答呼叫时将其值更改为 false。 然后你可以通过h扩展来捕获它的最终值。

exten => _X!,1,Set(SHARED(ABANDONSTATUS,${CHANNEL(LINKEDID)})=true)
exten => _X!,n,Queue(${EXTEN},,,,,,,cust-Queue-GoSub)
exten => _X!,n,Set(SHARED(ABANDONSTATUS,${CHANNEL(LINKEDID)})=false)
exten => _X!,n,HangUp()
exten => h,1,NoOp(Abandoned : ${SHARED(ABANDONSTATUS,${CHANNEL(LINKEDID)})})

[cust-Queue-GoSub]
exten => s,1,Set(SHARED(ABANDONSTATUS,${CHANNEL(LINKEDID)})=false)
exten => s,n,Return()

最新更新