2013-04-07 34 views
0

我在Asterisk的配置文件此撥號計劃:爲什麼'撥號'應用程序未在此星號撥號計劃的上下文中執行?

[voicemenu-custom-1] 
exten = s,1,NoOp(VM_Main) 
exten = s,n,Answer() 
exten = s,n,Goto(ringgroup,s,1) 
exten = s,n,Dial(DAHDI/g1/009396464991) 
exten = s,n,Hangup() 

這是在撥號計劃,它要求星號Answer一個非常簡單的情況下,然後執行另一個上下文命名ringgroup(振鈴所有的手機同時),然後嘗試撥打外線號碼(009396464991)然後掛斷。

ringgroup上下文的代碼是:

[ringgroup] 
exten = s,1,NoOp(RG1) 
exten = s,n,Dial(SIP/1001&SIP/1002&SIP/1003&SIP/1004,30,${DIALOPTIONS}) 
exten = s,n,Hangup() 

但我得到的是Asterisk的接聽呼入呼叫,然後轉到ringgroup背景下,但是當涉及到行s,n,Dial(DAHDI/g1/009396464991)的執行,它遇到撥號錯誤並且不會執行Dial應用程序。

這裏有什麼問題?

回答

1

您可以跳回到voicemenu-custom-1上下文,因爲您在Groupdial之後的HangUp(如arheops已經指出的那樣)。 您可以跳轉到標籤,即。 「FwdOutbound」voicemenu-custom-1,其中Goto(context,extension,label)

[voicemenu-custom-1] 
exten = s,1,NoOp(VM_Main) 
exten = s,n,Answer() 
exten = s,n,Goto(ringgroup,s,1) 
; Label 
exten = s,n(FwdOutbound),Dial(DAHDI/g1/009396464991) 
exten = s,n,Hangup() 

在Ringgroup Goto,而不是Hangup

[ringgroup] 
exten = s,1,NoOp(RG1) 
exten = s,n,Dial(SIP/1001&SIP/1002&SIP/1003&SIP/1004,30,${DIALOPTIONS}) 
exten = s,n,Goto(voicemenu-custom-1,s,FwdOutbound) 
exten = s,n,Hangup() 
1

使用

asterisk -r 
core set verbose 10 

,看看是gooing上。

在你的計劃中,我可以看到你正在做Goto(ringgroups,s,1),但上下文是ringroup,而不是ringroups。

+0

更新了問題。一個簡單的拼寫錯誤。 :) – 2013-04-07 09:15:14

+1

我不明白你在說什麼。它從來沒有去與g1撥號這一行。原因很簡單 - 它會在ringgroup上下文的第3行掛斷。 – arheops 2013-04-07 13:09:15

2

根據你所描述的水煤漿,我建議你改變你的「轉到」變成了「的GoSub」並替換「掛斷」在帶有「返回」的[ringgroup]。這會產生你正在尋找的效果。

「Goto」永遠不會從您發送到的上下文中回來。這是一張單程票。只要呼叫保持活動狀態(即不掛斷電話),GoSub會在耗盡新的上下文後自動返回到已發送的上下文。

順便說一句,GoSubs被認爲是比現在使用宏更好的方式,因此習慣它們是一個好主意。

延伸閱讀:http://www.voip-info.org/wiki/view/Asterisk+cmd+Gosub