拨号方案中的书签功能

时间:2012-02-09 09:01:58

标签: asterisk bookmarks

我正在Asterisk写一个拨号方案,我需要在其中实现书签功能。如果用户呼入并且呼叫断开连接,则在重拨时,用户必须被带到完全相同的剪辑,呼叫被丢弃或最后断开。拨号方案(带书签功能)目前看起来像这样:

[some-context]
exten => 0,n,System(progressmarker.sh ${CALLERID(num)} ${CONTEXT})
exten => 0,1,Background(wav1)
exten => 0,n,Background(wav2)

有数百个这样的命令。 progressmarker获取上下文并将其放入文件中。当用户想要继续旧会话时,它从用户所在的最后一个上下文开始。如果在wav1wav2之后调用被删除,则用户应从wav1wav2而非上一个背景。

有一种方法可以做到这一点:

exten => 0,n(wav1),Background(wav1)&System(progressmarker.sh ${CALLERID(num)} ${CONTEXT} wav1)  

但你可以看到这种方式不够优雅和繁琐,特别是因为有数百个这样的命令。有没有更好的方法来实现书签功能?

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用h扩展名。这是在频道遇到挂断时调用的扩展。解决方案看起来像这样:

  1. 继续将优先级保存在全局变量中。
  2. 为每个上下文实现挂断扩展。最后一个上下文,扩展名和优先级等通道变量都是可访问的(与文档所说的相反)。扩展名看起来像这样:
  3. 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.>)