Dialplan: jump to next peer if no Ringing/Progress

Heelo. I have something like this in extensions.conf:

[context1]

exten => _X.,1,NoOp
same=>n,Dial(SIP/peer1/${EXTEN})
same=>n,Dial(SIP/peer2/${EXTEN})
same=>n,Dial(SIP/peer3/${EXTEN})

Some peers may don’t route call nor reject it correctly, for example they send back “Trying” message and… that’s all. Asterisk waits for about 30 seconds before proceed to next peer and that makes clients crazy. How to set timeout for receiving Ringing/Progress from that peers?

The Dial application currently has no timeout functionality which is specifically for that period of time. The timeout encompasses the entire dialing process before answer.

In the sip.conf, set qualify=500 or something similar. With qualify, asterisk will check your peers regularly and if they go above a cetain ping (500ms with qualify=500) asterisk will mark the peer unreachable. When it tries to dial an unreachable peer, Asterisk will immediately move to the next one.

This won’t help in the above scenario because the remote SIP server is actually responding. It’s most likely for some particular routes there is an interconnection problem or the upstream carrier is causing delay.