2012-06-06 51 views
2

Salvete!我如何撥號並讓Asterisk從分機sipX發起呼叫到sipY?如何撥號以從撥號方案內發起呼叫?

sipX和sipY都出現在我的dialplan的extensions.conf中。

訣竅是,我想在我的手機上撥打337,然後我的手機就會熄滅,然後sipX會打電話給sipY。

假設我希望能夠在手機上推337,並通過另一部手機的揚聲器播放聲音,例如作爲鬧鐘。


另一種方式來考慮它,我怎麼可以這樣做:

  1. 推337我的手機上
  2. 完成我的電話,就是掛斷原調用
  3. 運行一個宏,即使沒有隊列中的呼叫
  4. 呼叫sipY
  5. 在sipY上播放聲音

當運行#2動作(完成呼叫者的會話)並讓後續過程的其餘部分完成時,我們可以使用類似pre-dial handlers in Asterisk 11的東西嗎?

回答

1

這是答案。 您將Answer作爲第一部分,並以'掛斷'結束。這需要處理「忙碌信號」。

沒有AGI。這工作。

[from-internal] 
exten => 3334,1,Goto(AngelusBell,startbell,1) 


[AngelusBell] 
exten => startbell,1,Answer 
exten => startbell,n,System(asterisk -rx "channel originate Local/[email protected]/n extension [email protected]") 
exten => startbell,n,Hangup 

exten => callviking,1,Dial(SIP/Y,10,D(5)) ;calls my ATA to my paging box and plays 5 tone 
exten => callviking,2,Hangup 

exten => playbell,1,Answer 
exten => playbell,2,Playback(custom/angelusbellWAV) 
exten => playbell,3,Hangup 
1

一個想法是創建一個調用文件並將其移動到/ var/spool/asterisk/outgoing /使用agi腳本。

+0

這將是一個想法,它確實發生在我身上,但不是我所尋找的。 – bgmCoder

2

你可以用Originate應用程序來做到這一點。類似如下:

[default] 
exten => 337,1,NoOp() 
same => n,Originate(SIP/Y,exten,default,originated,1) 
same => n,Hangup() 

exten => originated,1,NoOp() 
same => n,Playback(tt-monkeys) 
same => n,Hangup() 

的差,當然,是,美源塊的pbx_thread執行分機337直到SIP/Y答案或否則失敗。也就是說,SIP/Y與擴展應用程序之間的實際調用發生在它自己的線程上,因此一旦知道了SIP/Y的狀態,337就會掛起。因此它與您正在尋找的內容非常接近,並且不涉及調用文件等外部機制。

+0

嗯,我可以告訴sipY回答,因爲它是一個揚聲器。這是一個好主意。我從1.2升級到1.8,所以我無法嘗試它,直到升級完成。 Originate不會在1.2中工作,是嗎? 如果我想把它放在一個宏中,對嗎? '[macro-callit]' 'exten => s,1,NoOp()' 'same => n,Originate(SIP/Y,exten,default,originated,1)' ... – bgmCoder

+0

Nope, Originate在1.6.2中加入。 您可能需要考慮使用GoSub而不是Macro,因爲Macros已被棄用,而不贊成使用Gosubs(並不是說它不會工作,只是已知嵌套宏的限制導致難以調試錯誤) 。但是,您的宏語法看起來是正確的。 –

+0

我認爲這是正確的答案。我仍在研究版本更改,所以我現在無法測試它,但這看起來不錯。謝謝,喬丹先生。 – bgmCoder