[Asterisk-Users] failover for voip providers (i.e. Dial() doesn't give enough options)

Andrew Kohlsmith akohlsmith-asterisk at benshaw.com
Wed Jun 9 12:10:14 MST 2004


I'm looking for a way to detect when a VOIP provider is unable to complete a 
call and thus try another VOIP provider (failover/backup type situation).  
using qualify is NOT sufficient, since the provider could very well be 
reachable but not be able to complete the call for other reasons.

A perfect example: setting my caller ID number to my real number and calling a 
local number causes the switch for the called number to fail the call since 
the destination number is not a long distance call from the number in the 
caller ID.

Yes, a proper dial plan will help with that, but that's not the point.  The 
VOIP provider could be out of channels or have connection problems to their 
telco -- the point is that they are reachable so qualify passes, but they 
can't complete the call for me for whatever reason.

Dial() will jump to n+101 if the call is busy OR if it can't be completed.  I 
don't want to try calling the number again if it really was busy, only if the 
VOIP provider couldn't complete the call.

Is there some way to access the call failure reason in the dialplan and branch 
based on that?  i.e. something like 

exten => _NXXNXXXXXX,1,SetCIDNum(${MYNUM})
exten => _NXXNXXXXXX,2,Dial(${VOIP_PREFERRED}/${EXTEN})
exten => _NXXNXXXXXX,3,Congestion
exten => _NXXNXXXXXX,103,GotoIf($[${CALLFAILREASON} == BUSY]?:202)
exten => _NXXNXXXXXX,104,Busy
exten => _NXXNXXXXXX,202,Dial(${VOIP_BACKUP}/${EXTEN})
exten => _NXXNXXXXXX,203,Congestion
exten => _NXXNXXXXXX,303,GotoIf($[${CALLFAILREASON} == BUSY]?:402)
exten => _NXXNXXXXXX,304,Busy
exten => _NXXNXXXXXX,402,Congestion

... kind of thing.

Regards,
Andrew



More information about the asterisk-users mailing list