如何将Asterisk拨号从serverA路由到serverB?

我试图让一个Asterisk服务器连接到一个SIP提供商(提供PSTN的发起和终止)。 我一直在阅读伟大的权威指南,但是这个插图有一个概念上的问题:

拨号方案

一旦Asterisk确定如何处理该通道,它将通过呼叫控制到拨号scheme中正确的上下文。 频道configuration文件中的上下文参数告诉频道将进入拨号scheme(包含有关如何处理和路由呼叫的所有信息)。

在这个例子中,“电话”是一个软电话,在sip.conf定义了简单易懂的语法。 extensions.conf中的相应上下文具有以下行:

 exten => 101,1,Dial(Sip/000FFFF0002) 

而这个语法似乎意味着,根据我的理解,拨打000FFFF0002硬件电话。

现在,当通过SIP提供商拨打电话时,至less对我来说,这还不是很好 。

这似乎是至关重要的一行:

 exten => _6XXX,1,Dial(SIP/${EXTEN}@serverB) 

在拨号scheme中,它反映为:

 exten => _91999NXXXXXX,2,Dial(${TESTSIPTRUNK}/${EXTEN:2},,To) 

但“拨号”似乎永远不会去其他服务器 – 在这种情况下,一个SIP提供商。 我不明白发生什么事的机制。 我怎么甚至可以确定它是如何出现的,为什么不出来,而是从invalid.gsm播放中返回“我很抱歉,这不是一个有效的扩展…”。

完整的日志 , 频道和扩展都在要点中。 我更概念地问,应该发生什么? 我很欣赏这些调用应该通过ServerB,在这种情况下是一个SIP提供商,但否则不太明白如何确保实际发生。

也可以看看:

与SIP提供商通过代理星号对等

它回答你

这不是一个有效的扩展

因为它在给定的上下文中找不到这个扩展。 也许你在拨号和你在extension.conf中得到的是错误的

例如,在你的extensions.conf文件中,你看起来像是从91987开始拨号的,我只能看到91999开头的数字。你确定有91987的exten吗?