我正在使用Asterisk的队列应用程序。当队列成员接听调用方的呼叫时,我想设置一些 CDR 变量。
但问题是,"连接"宏是在队列成员的通道中执行的(在我看来应该是调用方的通道)
exten => XXX, n,Queue(sales,tc,,,,,QueueConnected)
[macro-QueueConnected]
exten => s,1,NoOp()
exten => s,n,Set(CDR(somevar)=someval)
我可以对队列使用"c"选项,拨号计划将在呼叫者或成员挂断后继续,但现在设置 CDR 值为时已晚,因为它已经发出。
谁能帮我解决这个问题,谢谢。
所以我通过使用HangupHandlers解决了这个问题
exten => XXX, n,Set(CHANNEL(hangup_handler_push)=_hnd,s,1);
exten => XXX, n,Queue(sales,tc,,,,,QueueConnected)
[_hnd]
exten => s,1,NoOp()
exten => s,n,Set(CDR(somevar)=someval)
像魅力一样工作