我正在Asterisk
写一个拨号方案,我需要在其中实现书签功能。如果用户呼入并且呼叫断开连接,则在重拨时,用户必须被带到完全相同的剪辑,呼叫被丢弃或最后断开。拨号方案(带书签功能)目前看起来像这样:
[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)
但你可以看到这种方式不够优雅和繁琐,特别是因为有数百个这样的命令。有没有更好的方法来实现书签功能?
答案 0 :(得分:0)
执行此操作的一种方法是使用h
扩展名。这是在频道遇到挂断时调用的扩展。解决方案看起来像这样:
exten => h,1,System(<Execute a script here that saves the last context, extension and priority to a file that can be read later and control returned here.>)