AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 394694
Accepted
Alfero Chingono
Alfero Chingono
Asked: 2012-06-02 04:45:19 +0800 CST2012-06-02 04:45:19 +0800 CST 2012-06-02 04:45:19 +0800 CST

如果没有回答,请与替代提供者通话

  • 772

我有两个 voip 提供商,一个免费,另一个付费。免费供应商只允许本地拨打某些区号,所以如果呼叫失败,我需要回退到付费供应商。目前,我的extensions.conf文件中有以下上下文:

[globals]
; freephoneline.ca
PRIMARY_PROVIDER=fpl
; voip.ms
SECONDARY_PROVIDER=voipms

[local]
exten => _NXXNXXXXXX,1,Set(CALLERID(name)=${OUTGOING_NAME})
exten => _NXXNXXXXXX,n,Dial(SIP/${EXTEN}@${PRIMARY_PROVIDER})
exten => _NXXNXXXXXX,n,Set(CALLERID(num)=${OUTGOING_NUMBER})
exten => _NXXNXXXXXX,n,Dial(SIP/1${EXTEN}@${SECONDARY_PROVIDER})
exten => _NXXNXXXXXX,n,Hangup()

我检查了日志并注意到NOANSWER如果不允许呼叫,免费提供商会做出响应(即使它会播放一条消息)。我想要的是:

  1. 尝试调用第${PRIMARY_PROVIDER}一个。
  2. 如果NOANSWER由提供者返回(不是被叫者没有回答),则调用${SECONDARY_PROVIDER}

如何修改我的拨号方案以获得所需的结果?

编辑:主要提供商是 freephoneline.ca ,我使用的是asterisk v1.8.2.3-2

asterisk
  • 2 2 个回答
  • 8120 Views

2 个回答

  • Voted
  1. Best Answer
    arheops
    2012-06-06T09:13:01+08:002012-06-06T09:13:01+08:00
    [local]
    exten => _NXXNXXXXXX,1,Set(CALLERID(name)=${OUTGOING_NAME})
    exten => _NXXNXXXXXX,n,Set(CALLERID(num)=${OUTGOING_NUMBER})
    exten => _NXXNXXXXXX,n,Set(dest=${EXTEN})
    exten => _NXXNXXXXXX,n,Dial(SIP/${EXTEN}@${PRIMARY_PROVIDER},20,); 20 is how much to call,in seconds
    exten => _NXXNXXXXXX,n,Goto(s-${DIALSTATUS},1)
    
    exten => s-ANSWER,1,Hangup
    exten => s-ANSWERED,1,Hangup
    exten => s-NOANSWER,1,Goto(dialnext,1)
    exten => s-CHANUNAVAIL,1,Goto(dialnext,1)
    exten => s-BUSY,1,Busy
    exten => s-FAIL,1,Goto(dialnext,1)
    exten => s-CONGESTION,1,Goto(dialnext,1)
    
    exten =>dialnext,1,Dial(SIP/1${dest}@${SECONDARY_PROVIDER})
    exten =>dialnext,n,Hangup()
    
    • 3
  2. user63814
    2015-07-21T14:09:13+08:002015-07-21T14:09:13+08:00

    这是我如何使用谷歌语音和中继线执行此操作的示例。通过我的设置,我不得不想办法将 gv 限制为 1 个通道,还设置了一个旋转,因此第一个 gv 主干并不总是被锤击,因为它是第一个。这还有很多,但对于显示故障转移,我认为这已经足够了:

    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = ""]?15:)
    
    
    exten => _1NXXNXXXXXX,15,Set(goto=$[${PRIORITY} + 15])
    exten => _1NXXNXXXXXX,n,Set(thetrunk=feliciesmaty)
    exten => _1NXXNXXXXXX,n,GotoIf($[${${thetrunk}}  > 0]?${goto})
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=1)
    exten => _1NXXNXXXXXX,n,Dial(Motif/[email protected]/${EXTEN}@voice.google.com,,r)
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=0)
    exten => _1NXXNXXXXXX,n,Verbose(0, getting staus ${DIALSTATUS} );
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "SUCCESS"]?hangup:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CANCEL"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "HANGUP"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "UNKNOWN"]?${goto}:)
    
    
    
    exten => _1NXXNXXXXXX,30,Set(goto=$[${PRIORITY} + 20])
    exten => _1NXXNXXXXXX,n,Set(thetrunk=bettyrobertson169gmailcom)
    exten => _1NXXNXXXXXX,n,GotoIf($[${${thetrunk}}  > 0]?${goto})
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=1)
    exten => _1NXXNXXXXXX,n,Dial(Motif/bettyrobertson169gmailcom/${EXTEN}@voice.google.com,,r)
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=0)
    exten => _1NXXNXXXXXX,n,Verbose(0, getting staus ${DIALSTATUS} );
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "SUCCESS"]?hangup:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CANCEL"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "HANGUP"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "UNKNOWN"]?${goto}:)
    
    
    
    
    exten => _1NXXNXXXXXX,50,Set(goto=$[${PRIORITY} + 25])
    exten => _1NXXNXXXXXX,n,Set(thetrunk=swigartjosephgmailcom)
    exten => _1NXXNXXXXXX,n,GotoIf($[${${thetrunk}}  > 0]?${goto})
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=1)
    exten => _1NXXNXXXXXX,n,Dial(Motif/swigartjosephgmailcom/${EXTEN}@voice.google.com,,r)
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=0)
    exten => _1NXXNXXXXXX,n,Verbose(0, getting staus ${DIALSTATUS} );
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "SUCCESS"]?hangup:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CANCEL"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "HANGUP"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "UNKNOWN"]?${goto}:)
    
    
    
    exten => _1NXXNXXXXXX,75,Set(goto=$[${PRIORITY} + 25])
    exten => _1NXXNXXXXXX,n,Set(thetrunk=bettyrobertson169gmailcom)
    exten => _1NXXNXXXXXX,n,GotoIf($[${${thetrunk}}  > 0]?${goto})
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=1)
    exten => _1NXXNXXXXXX,n,Dial(Motif/bettyrobertson169gmailcom/${EXTEN}@voice.google.com,,r)
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=0)
    exten => _1NXXNXXXXXX,n,Verbose(0, getting staus ${DIALSTATUS} );
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "SUCCESS"]?hangup:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CANCEL"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "HANGUP"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "UNKNOWN"]?${goto}:)
    
    
    
    exten => _1NXXNXXXXXX,100,Set(goto=$[${PRIORITY} + 25])
    exten => _1NXXNXXXXXX,n,Set(thetrunk=sandralanago)
    exten => _1NXXNXXXXXX,n,GotoIf($[${${thetrunk}}  > 0]?${goto})
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=1)
    exten => _1NXXNXXXXXX,n,Dial(Motif/[email protected]/${EXTEN}@voice.google.com,,r)
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=0)
    exten => _1NXXNXXXXXX,n,Verbose(0, getting staus ${DIALSTATUS} );
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "SUCCESS"]?hangup:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CANCEL"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "HANGUP"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "UNKNOWN"]?${goto}:)
    
    
    
    exten => _1NXXNXXXXXX,125,Set(goto=$[${PRIORITY} + 25])
    exten => _1NXXNXXXXXX,n,Set(thetrunk=sofiadugal)
    exten => _1NXXNXXXXXX,n,GotoIf($[${${thetrunk}}  > 0]?${goto})
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=1)
    exten => _1NXXNXXXXXX,n,Dial(Motif/[email protected]/${EXTEN}@voice.google.com,,r)
    exten => _1NXXNXXXXXX,n,Set(GLOBAL(${thetrunk})=0)
    exten => _1NXXNXXXXXX,n,Verbose(0, getting staus ${DIALSTATUS} );
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "SUCCESS"]?hangup:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CANCEL"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "HANGUP"]?${goto}:)
    exten => _1NXXNXXXXXX,n,GotoIf($["${DIALSTATUS}" = "UNKNOWN"]?${goto}:)
    
    • 1

相关问题

  • 我应该使用 Asterisk GUI 吗?

  • Asterisk/TrixBox 和预测拨号/外呼呼叫中心

  • 有稳定的跨平台软电话吗?还是只有 Linux 的?

  • 我们可以在我们的 MAXIMISER 4140 呼叫服务器上使用 Slicecomm PCS100 运行 Asterisk 吗?

  • 通过星号 PBX 在 IP 电话上使用 Google 联系人

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve