Да, все получилось, спасибо большое!
А можете еще в рамках этой ветки подсказать или может лучше новую создать?
Вопрос такой: у меня две очереди, люди звонят в первую и, если им там не отвечают или все заняты, то попадают во вторую. Так же они попадают во вторую очередь, если в 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