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()

这是拨号计划中的一个非常简单的上下文,它要求 Asterisk 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上下文,但是当涉及到 line 的执行时s,n,Dial(DAHDI/g1/009396464991),它遇到了拨号错误并且不会执行Dialapplication。

这里有什么问题?

4

3 回答 3

2

根据您描述的行为,我建议您将“Goto”更改为“GoSub”,并将 [ringgroup] 中的“HangUp”替换为“Return”。这将产生您正在寻找的效果。

“Goto”永远不会从您发送它的上下文中返回。这是一张单程票。只要呼叫保持活动状态(即,未挂断),GoSub 将在用完新上下文后立即自动返回其发送的上下文。

顺便说一句,GoSubs 被认为是比现在使用宏“更好的方法”,所以习惯它们是个好主意。

进一步阅读: http ://www.voip-info.org/wiki/view/Asterisk+cmd+Gosub

于 2013-04-08T13:10:12.313 回答
1

您可以跳回voicemenu-custom-1上下文,因为您HangUp (正如 arheops 已经指出的那样)在 Groupdial 之后。你可以跳到一个标签,即。的“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()

Goto在 Ringgroup 中,而不是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()
于 2013-04-08T06:43:45.103 回答
0

采用

asterisk -r 
core set verbose 10

看看发生了什么。

在您的计划中,我可以看到您正在执行 Goto(ringgroups,s,1) 但上下文是 ringroup,而不是 ringroups。

于 2013-04-07T08:41:29.033 回答