communication - 当我有同一个 SIP 提供商的多个电话号码时如何路由来电?

标签 communication sip voip asterisk telephony

我的 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)直接变量,它的值将设置为01201200200230230030

    [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/

相关文章:

Linux - 使用 RS485 进行串行通信

java - Servlet 和 AJAX 通信

Python - 通过终端与打开的程序对话

linux - tshark SIP协议(protocol)显示崩溃

android - Sipdroid 文档 android - STUN 服务器

ios - VoIP 推送通知在装有 iOS 10.3 的 iPhone 7 上崩溃

tcp - 使用 SIP,什么时候使用 TCP 而不是 UDP?

c# - 客户端和服务器之间的通信层

webrtc - FreePBX Twilio 出站铃声

javascript - 开发基于 SIP 的 VOIP 软电话以集成到 Web 应用程序中