Реализовал все редким извращением.
Фрагмент из первого поста, который не работает, я тоже планировал использовать в очереди таким же образом. Т.е. он располагался бы в контексте queue.
Да, мало ли кому интересно будет, а то встречал много безответных тем, как реализовать очередь, чтобы звонил сначала n сек номер N, потом по неответу n сек номер N и K звонили вместе и т.д. При этом, если N занят, то сразу переходим к N и K (точнее, только K, т.к. N занят) и т.д. Вот этот алгоритм у меня и реализован.
queues.conf
Код: Выделить всё
[myqueue]
strategy = ringall
autofill=yes
timeout=10
retry=1
member => local/my@queue
dialplan.conf
Код: Выделить всё
[incoming]
exten => s,1, NoOp("incoming")
same => n, Set(DB(myqueue/numcall)=0)
same => n, Queue(myqueue,t,,,300)
same => n, Hangup()
[queue]
exten => my,1, NoOp("for queue")
same => n ,Set(NUMCALL=${DB(myqueue/numcall)})
same => n ,Set(NUMCALL=$[${NUMCALL}+1])
same => n ,Set(DB(myqueue/numcall)=${NUMCALL})
same => n ,GotoIf($[${NUMCALL}=1]?lab001:lab002)
same => n(lab001) ,Dial(DAHDI/g1/101,10,t)
same => n ,Goto(lab005)
same => n(lab002) ,GotoIf($[${NUMCALL}=2]?lab003:lab004)
same => n(lab003) ,Dial(DAHDI/g1/101&DAHDI/g1/102,10,t)
same => n ,Goto(lab005)
same => n(lab004) ,Dial(DAHDI/g1/101&DAHDI/g1/102&DAHDI/g1/103,10,t)
same => n(lab005), Busy