[asterisk-users] SLA: Handling of errors in outgoing call

Russell Bryant russell at digium.com
Fri Nov 30 18:08:26 CST 2007


Steve Langstaff wrote:
> [line1_outbound]
> exten => disa,1,Disa(no-password|line1_outbound)
> exten => _XXXX,1,Dial(SIP/${EXTEN}@vsp5000)
> exten => _XXXX,2,Hangup

> So to summarise:
> 	if I seize the line and dial a number known at vsp5000 then I
> get ringing etc - good.
> 	if I seize the line and dial a number unknown at vsp5000 then
> the call drops silently - not good.

Your issue is actually in the [line1_outbound] context that I have quoted above.
 Here is what happens:

As far as Disa() is concerned, any 4 digit number is a valid extension.  Once
you dial something (whether is valid at the other end or not), the call goes on
and executes Dial().  However, since the number you have dialed is not valid,
Dial() immediately returns and then Hangup is executed.  That is when the call
is dropping.

So, I can think of a few different ways to solve this issue.  The first couple
involve using an IAX2 or DUNDi switch statement in the line1_outbound context.
That would allow Asterisk to query the remote server as to what extensions are
valid.  However, I won't get into the details of how that is configured right
now ...

The other alternative is to solve it in the dialplan, with something like this:

[line1_outbound]
exten => disa,1,Disa(no-password|line1_outbound)
exten => _XXXX,1,Dial(SIP/${EXTEN}@vsp5000)
exten => _XXXX,n,Congestion
exten => _XXXX,n,Wait(10) ; Give Congestion for 10 seconds
exten => _XXXX,n,Hangup

You could improve this even further by checking the DIALSTATUS and playing
different tones, or just hanging up, accordingly.

I hope this helps,

-- 
Russell Bryant
Senior Software Engineer
Open Source Team Lead
Digium, Inc.



More information about the asterisk-users mailing list