我可以在上下文中匹配,然后在星号拨号方案中包含其他上下文吗?

时间:2014-02-25 11:20:05

标签: asterisk

我想知道如何在当前上下文中运行某些应用程序,然后切换到另一个上下文(就像它已包含在内)。

所以,例如,我有几个传入调用的上下文,但是,特别是对于一个,我需要执行一些额外的操作(具体来说,我需要Answer()并延迟一秒钟)。所以,假设我有这样的事情:

[main-context]
include => this
include => that

[special-context]
exten => s,1,Agi(agi://<whatever>}
exten => _X.,1,Answer()
 same => n,Wait(1)
include => main-context

我希望收到的来自special-context的来自Answer()然后main-context的来电,就好像special-context中没有匹配扩展一样}。

(我已经使用s - 扩展,如图所示,但这似乎与扩展的正常执行并行运行,所以我认为这不会有帮助。)

这可能吗?

2 个答案:

答案 0 :(得分:0)

您可以使用goto命令。

[special-context]
exten => _X.,1,Answer()
exten => _X.,2,Goto(main-context,${EXTEN},1)

P.S。我强烈建议你阅读任何单一的星号书,例如O'Reilly的“Asterisk the telephony”

答案 1 :(得分:0)

另一种解决方案:

[special-context]
exten => s,1,Agi(agi://<whatever>}
exten => _X.,1,Answer()
 same => n,Wait(1)
 same => n,Dial(Local/${EXTEN}@main-context)

根据the manual,这会调用一个伪通道(chan_local),它会将一个回调放回拨号方案。

我也在启动AGI接口(在s - 扩展名中),应该注意额外的Dial()会干扰您在AGI接口上收到的信令。对我来说,solution posted by arheops效果更好。