2

我的SIP 提供商为我的办公室提供了一个主要电话号码。0120120020我最近向我的 SIP 提供商询问了同一 SIP 帐户上的第二个电话号码。0230230030

当有人通过拨打主要电话号码呼叫办公室时,我希望 Asterisk 振铃属于A 组的所有电话,并且如果拨打第二个电话号码,我希望它振铃属于B 组的所有电话。

我的 extensions.conf 包含以下几行:

[sip-incoming-calls]
exten => s,1,Dial(SIP/10&SIP/11&SIP/12&SIP/20&SIP/21,20,tr)

分机 10、11 和 12 属于A 组,分机 20 和 21 属于B 组。对于来自电话号码和第二电话号码的每个来电,每部电话都会响铃。

如何在 CentOS 6.3 下使用 Asterisk 1.8 做到这一点?

4

4 回答 4

6

对于每个呼叫,Asterisk 都会设置一些变量,其中包含有关当前来电的信息。如果呼叫来自特定国家/地区,这些信息有助于采取不同的行动,您还可以阻止来自他们电话号码的不良呼叫者,...

我们正在寻找一种方法来检索 DID,这实际上意味着直接拨入号码,即呼叫者拨打您办公室的号码。

有两种方法可以检索它:

  • 通过CALLERID(dnid)直接使用变量,它的值将设置为01201200200230230030

    [sip-incoming-calls]
    exten => s,1,Set(thedid=${CALLERID(dnid)})
    
  • 如果上述变量为空,那么您的 SIP 提供商不会根据需要发送任何信息以使 Asterisk 正确填充它。

    但是,您可以使用 直接从 SIP 标头内的 To 字段中检索电话号码SIP_HEADER(To),此变量将包含<sip:0230230030@sip.provider.com>有人从您的第二个电话号码呼叫您的办公室的时间。

    [sip-incoming-calls]
    exten => s,1,Set(thedid=${SIP_HEADER(To)})
    exten => s,2,Set(thedid=${CUT(thedid,@,1)})
    exten => s,3,Set(thedid=${CUT(thedid,:,2)})
    

一旦你在变量中检索到 DID,你必须设置一个条件,让我们使用GotoIf. 在您的情况下,结果会是这样:

exten => s,4,GotoIf($["${thedid}" = "0120120020"]?6:5)
exten => s,5,GotoIf($["${thedid}" = "0230230030"]?7)
exten => s,6,Dial(SIP/10&SIP/11&SIP/12,20,tr)
exten => s,7,Dial(SIP/20&SIP/21,20,tr)
于 2012-09-27T08:58:42.177 回答
5
[sip-incoming-calls]

exten => s,1,goto(${CUT(CUT(SIP_HEADER(TO),@,1),:,2)},1)

exten => 0120120020,1,Dial(SIP/10&SIP/11&SIP/12,20,tr)

exten => 0230230030,1,Dial(SIP/20&SIP/21,20,tr) 
于 2013-04-27T22:57:37.120 回答
1

您可以轻松地创建中继(单独的 dahdi 端口)并将中继重定向到特定的扩展。

于 2012-09-30T07:31:05.587 回答
1

要求您的 voip 提供商发送来电的 DID 号码,然后使用以下拨号方案

[sip-incoming-calls] 
exten => _0120120020,1,Dial(SIP/10&SIP/11&SIP/12,tr) 
exten => _0120120020,n,hangup
exten => _0230230030,1,Dial(SIP/20&SIP/21,20,tr) 
exten => _0230230030,n,hangup
于 2012-10-09T10:05:01.733 回答