Help request with specific queue route calling multiple extensions incrementely

Hi,

I am trying to achieve something on Asterisk (and QueueMetrics), unsuccessfully so far… I hope someone can help steer me in the right direction. I’ll write a ‘requirements’ style request on what we are trying to achieve:

We have 4 DDIs we would like to use to drive 4 different support lines (operated by the same 4 people).

Call Routing in steps:
1 CALL DDI NUMBER (DDI ##]
2 SEND TO QUEUE (QUEUE ##)
3 CALL FIRST EXT (EXT #1) - 30 SECONDS
4 CALL SECOND EXT - ADD TO RINGALL SO NOW 2 EXTENSIONS RINGING (EXT #1 AND EXT #2) - 30 SECONDS
5 CALL THIRD AND FOURTH EXT - ADD TO RINGALL SO NOW 4 EXTENSIONS RINGING (EXT #1, EXT #2, EXT#3 AND EXT#4) - 30 SECONDS
6 SEND TO ANOTHER QUEUE

Call Route Matrix:
[DDI #1] -> [QUEUE #1] -> [EXT #1] 30SEC -> [EXT #2] 30SEC -> [EXT #3][EXT #4] 30SEC -> [NEWQUEUE]
[DDI #2] -> [QUEUE #2] -> [EXT #2] 30SEC -> [EXT #1] 30SEC -> [EXT #3][EXT #4] 30SEC -> [NEWQUEUE]
[DDI #3] -> [QUEUE #3] -> [EXT #3] 30SEC -> [EXT #4] 30SEC -> [EXT #1][EXT #2] 30SEC -> [NEWQUEUE]
[DDI #4] -> [QUEUE #4] -> [EXT #4] 30SEC -> [EXT #3] 30SEC -> [EXT #1][EXT #2] 30SEC -> [NEWQUEUE]

It’s very important that this information can be reported in to QueueMetrics (tracking agents calls and queue stats).

We have tried using an app to set up the above using penalties. The problem we have with penalties is we can’t use a ‘ringall’ strategy on multiple penalties:

I’ve included info on attempt so far using apps, queues and penalties:

Routing - Inbound 01422000000 -> App Rule1-R1LAMQ-APP

App Rule1-R1LAMQ-APP:
exten => s,1,Verbose(2,Entering the support queue)
same => n,Set(QUEUE_MIN_PENALTY=2) ; set minimum queue member penalty
same => n,Set(QUEUE_MAX_PENALTY=4) ; set maximum queue member penalty
; entering queue with minimum and
; maximum member penalties
same => n,Queue(TestRegion1KAMQ,rule1)

Queue TestRegion1KAMQ
musiconhold=default
strategy=ringall
timeout=30
retry=0
wrapuptime=0
maxlen=0
announce-frequency=0
announce-holdtime=no
QUEUE_MIN_PENALTY=1
QUEUE_MAX_PENALTY=5
member => SIP/3700,2,Test_3700
member => SIP/3701,12,Test_3701
member => SIP/3702,22,Test_3702
member => SIP/3703,22,Test_3703

queuerules.conf:
[rule1]
penaltychange => 30,+10 ; After 30 seconds increase QUEUE_MAX_PENALTY +10
penaltychange => 60,+10 ; After 60 seconds increase QUEUE_MAX_PENALTY +10
penaltychange => 90,50,40 ; After 90 seconds increase QUEUE_MAX_PENALTY to 50 and QUEUE_MIN_PENALTY
to 40

Any ideas would be appreciated.

Thanks