Ring through different extensions for incoming calls?

Hi at our office we want a system that works like this:
Ring SIP/phone1, if they dont pick up after 2 rings then…
Continue ringing SIP/phone1 but also ring SIP/phone2, and if they dont’ pick up after 2 more rings then…
Continue ringing SIP/phone1 and SIP/phone2, but also ring SIP/phone3 and SIP/phone4.

Currently this is how I have it set up in extensions.conf

[incoming]
exten => s,1,Dial(SIP/phone1,10)
exten => s,n,Dial(SIP/phone1&SIP/phone2,10)
exten => s,n,Dial(SIP/phone1&SIP/phone2&SIP/phone3&SIP/phone4)

The only problem with this is that the phone does not continue ringing, but it hangs up and starts calling again, which I don’t like very much because we have Digium D50 phones and it will mark it as a missed call each time (SIP/phone1 gets 3 missed calls if not answered!)

Is there any better way to do this?

You could use local channels

Explain?

Edit: now I see what you are getting at. Do you think something like this would be the best approach? voip-info.org/wiki/view/Aste … ps+forking

This example could help, too you can read the complete chapter asteriskdocs.org/en/3rd_Edit … n_id324598

[LocalSets]
exten => 107,1,Verbose(2,Dialing multiple locations with time delay)

; *** This all needs to be on a single line
same => n,Dial(Local/channel_1@TimeDelay&Local/channel_2@TimeDelay
&Local/channel_3@TimeDelay,40)
same => n,Hangup()

[TimeDelay]
exten => channel_1,1,Verbose(2,Dialing the first channel)
same => n,Dial(SIP/0000FFFF0001,20)
same => n,Hangup()

exten => channel_2,1,Verbose(2,Dialing the second channel with a delay)
same => n,Wait(10)
same => n,Dial(DAHDI/g0/14165551212)

exten => channel_3,1,Verbose(2,Dialing the third channel with a delay)
same => n,Wait(15)
same => n,Dial(SIP/MyITSP/12565551212,15)
same => n,Hangup()