我有两个 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
如果不允许呼叫,免费提供商会做出响应(即使它会播放一条消息)。我想要的是:
- 尝试调用第
${PRIMARY_PROVIDER}
一个。 - 如果
NOANSWER
由提供者返回(不是被叫者没有回答),则调用${SECONDARY_PROVIDER}
如何修改我的拨号方案以获得所需的结果?
编辑:主要提供商是 freephoneline.ca ,我使用的是asterisk v1.8.2.3-2
这是我如何使用谷歌语音和中继线执行此操作的示例。通过我的设置,我不得不想办法将 gv 限制为 1 个通道,还设置了一个旋转,因此第一个 gv 主干并不总是被锤击,因为它是第一个。这还有很多,但对于显示故障转移,我认为这已经足够了: