我的 SIP 提供商为我的办公室提供了一个主要电话号码 0120120020
。我最近向我的 SIP 提供商索取了同一个 SIP 帐户的第二个电话号码0230230030
。
当有人调用主电话号码给办公室打电话时,我希望 Asterisk 响铃属于 Group A 的所有电话,我希望它响铃属于 Group 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 执行此操作?
最佳答案
对于每个调用,Asterisk 设置一些包含当前来电信息的变量。如果调用来自特定国家/地区,这些信息有助于采取不同的行动,您还可以阻止不良调用者的电话号码,...
我们正在寻找一种方法来检索 DID,这实际上意味着直接拨入号码,即调用者拨给您办公室的号码。
有两种获取方式:
通过使用
CALLERID(dnid)
直接变量,它的值将设置为0120120020或0230230030[sip-incoming-calls] exten => s,1,Set(thedid=${CALLERID(dnid)})
如果上面的变量是空的,那么你的 SIP 提供商不会发送任何需要的信息来让 Asterisk 正确地填充它。
然而,您可以使用
SIP_HEADER(To)
直接从 SIP header 内的收件人字段中检索电话号码。 , 这个变量将包含<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)
关于communication - 当我有同一个 SIP 提供商的多个电话号码时如何路由来电?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617657/