Уведомление о пропущенном только из определенной очереди

Имею следующую конструкцию:

[hangup-ext-queues]

exten => h,1,ExecIf($[“${M_DIALSTATUS}” = “ANSWER”]?return)

……

и есть несколько очередей, уведомления работают по пропущенным из любой очереди.

Подскажите пожалуйста, как поправить конфиг, что бы уведомления были только из определенной очереди?

На текущий момент - не вижу возможности. 

В новой версии АТС появится возможность описать контекст "queue-pre-dial-custom", он будет вызван до входа в очередь, там можно будет описать доп. переменные 

Использую точно такую же конструкцию для оповещения о пропущенных. Интересует как её доработать используя контекст [queue-pre-dial-custom].
Теоретическое понимание вроде бы есть: нужно задать переменную и в неё передавать имя или номер очереди (например), а потом в [hangup-ext-queues] проверять переменную и, в зависимости от содержимого, выполнять то или иное действие, но превратить эту теорию в код не позволяет компетенция :frowning:

Можно в контексте “queue-pre-dial-custom”, для нужного exten установить переменную
same => n,Set(MASTER_CHANNEL(U_QUEUE_MISSED)=1})

Когда вызов завершиться, нужно анализировать значение этой переменной в “hangup-ext-queues” имя переменной ${U_QUEUE_MISSED}

Да, все получилось, спасибо большое!
А можете еще в рамках этой ветки подсказать или может лучше новую создать?
Вопрос такой: у меня две очереди, люди звонят в первую и, если им там не отвечают или все заняты, то попадают во вторую. Так же они попадают во вторую очередь, если в IVR не выбрали никакой очереди. Если я сделаю обработку пропущенных в [queue-pre-dial-custom] то у меня в оповещении всегда будет светиться только вторая очередь. Пытался сделать как то так:

same => n,ExecIf("foo${U_QUEUE_NAME}"="foo"?Set(MASTER_CHANNEL(U_QUEUE_NAME)="ALL"))

но этот код не работает, переменная ${_U_QUEUE_NAME} всегда пустая (проверял через NoOp). Догадываюсь что здесь Set(MASTER_CHANNEL(U_QUEUE_NAME) не спроста стоит MASTER_CAHANNEL но не могу сообразить как к нему обратиться в этом контексте…

upd
Разобрался почему переменная пустая, нужно использовать ${MASTER_CHANNEL(U_QUEUE_NAME)}
Но у меня все равно не отрабатывает условие, не могу понять почему.

upd
Так и не понял в чем было дело, видимо где то в скобочках запутался, окончательно рабочий вариант:

[add-trim-prefix-clid-custom]
exten => _.X!,1,NoOp(---)
    same => n,ExecIf($[${CALLERID(num):0:1}=7]?Set(CALLERID(num)=+7${CALLERID(num):1}))
    same => n,Set(CHANNEL(hangup_handler_push)=hangup-ext-queues,h,1)
    same => n,return

[queue-pre-dial-custom]
exten => 2200110,1,NoOp(---)
	same => n,Set(MASTER_CHANNEL(U_QUEUE_MISSED)=1)
	same => n,Set(MASTER_CHANNEL(U_QUEUE_NAME)=Andrusha)
	same => n,return
exten => 2200112,1,NoOp(---)
	same => n,Set(MASTER_CHANNEL(U_QUEUE_MISSED)=1)
	same => n,Set(MASTER_CHANNEL(U_QUEUE_NAME)=NeAndrusha)
	same => n,return
exten => 2200100,1,NoOp(---)
	same => n,Set(MASTER_CHANNEL(U_QUEUE_MISSED)=1)
	same => n,ExecIf($["foo${MASTER_CHANNEL(U_QUEUE_NAME)}" = "foo"]?Set(MASTER_CHANNEL(U_QUEUE_NAME)=ALL))
	same => n,return

[hangup-ext-queues]
exten => h,1,ExecIf($["${M_DIALSTATUS}" = "ANSWER"]?return)
	same => n,ExecIf($["${U_QUEUE_MISSED}" != "1"]?return)
    same => n,AGI(DIALPLAN-APP-FFC9120E497F69A6135DE22A6EBE8F03.php)
    same => n,return
1 Like