我正在用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) 但是你可以看到这种方式是不优雅和麻烦的,特别是因为有成百上千的这样的命令。有没有更好的方式来实现书签功能?
发布于 2012-02-10 15:40:34
实现这一点的一种方法是使用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.>)
https://stackoverflow.com/questions/9207890
复制相似问题