2013-04-07 35 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