2014-02-25 31 views
0

我想知道我應該如何在當前上下文中運行一些應用程序,然後切換到另一個上下文(就像它已包含在內)。因此,例如,我有幾個來電的上下文,但特別是,我需要執行一些額外的操作(具體來說,我需要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() ED電話,然後main-context包括在內,因爲如果擴展名並沒有在special-context匹配。

(我已經使用了s -extension,如圖所示,但似乎在平行於延伸的正常執行反正跑,所以我不認爲這會有所幫助。)

這是可能?

回答

0

您可以使用goto命令。

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

P.S.我higly建議您閱讀任何一個星號的書,例如ORelly的「Asterisk的電話的未來」

+0

謝謝,這個作品!我曾假設你不能'Goto()'優先級1,因爲它沒有在'main-context'中明確定義。但是你可以! – edam

+0

不會改變。你甚至可以轉到轉到 - >結果核心在永久循環中掛起。它不檢查任何變體。如果您沒有目的地分機,它只會說「在YYY上下文中沒有分機XXXX」,並進行擁堵或轉到定義的「i」分機。 – arheops

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 -extension中),應該注意的是額外的Dial()會干擾您在AGI接口上收到的信號。對我而言,solution posted by arheops效果更好。

相關問題