Asterisk 拨号计划中的书签功能
我正在Asterisk 拨号计划中的书签功能,asterisk,bookmarks,Asterisk,Bookmarks,我正在Asterisk中编写拨号计划,需要在其中实现书签功能。如果用户来电且通话已断开,重拨时必须将用户带到上次断开或挂断通话的同一剪辑。dialplan(带书签功能)当前的外观如下: [some-context] exten => 0,n,System(progressmarker.sh ${CALLERID(num)} ${CONTEXT}) exten => 0,1,Background(wav1) exten => 0,n,Background(wav2) 有数百个这
Asterisk
中编写拨号计划,需要在其中实现书签功能。如果用户来电且通话已断开,重拨时必须将用户带到上次断开或挂断通话的同一剪辑。dialplan(带书签功能)当前的外观如下:
[some-context]
exten => 0,n,System(progressmarker.sh ${CALLERID(num)} ${CONTEXT})
exten => 0,1,Background(wav1)
exten => 0,n,Background(wav2)
有数百个这样的命令progressmarker
获取上下文并将其放入文件中。当用户想要继续旧会话时,它从用户所在的最后一个上下文开始。如果呼叫在wav1
或wav2
之后中断,则用户应从wav1
或wav2
开始,而不是从最后一个上下文开始
有一种方法可以做到这一点:
exten => 0,n(wav1),Background(wav1)&System(progressmarker.sh ${CALLERID(num)} ${CONTEXT} wav1)
但您可以看到,这种方式既不雅观又麻烦,尤其是因为有数百个这样的命令。是否有更好的方法实现书签功能?一种方法是使用
h
扩展。这是通道遇到挂起时调用的扩展。解决方案如下所示:
[some-context]
exten => 0,n,System(progressmarker.sh ${CALLERID(num)} ${CONTEXT})
exten => 0,1,Background(wav1)
exten => 0,n,Background(wav2)
extn=>h,1,System()