Страница 1 из 1

DAHDI: Несколько Dial подряд одного exten

Добавлено: 09 апр 2016, 18:47
shines2
Наткнулся на очередные грабли с DAHDI. С внутренними SIP такое не наблюдается

Код: Выделить всё

exten => 91,1, NoOp("${EXTEN} test")
same => n, Dial(DAHDI/g1/101,5,t)
same => n, Dial(DAHDI/g1/102&DAHDI/g1/101,5,t)
same => n, Dial(DAHDI/g1/103&DAHDI/g1/102&DAHDI/g1/101,,t)
Результат:
Звонит 5 сек 101, как и положено
Далее 5 сек звонит только 102, 101 молчит. Логи утверждают, что 101 busy.
Далее звонят 103 и 101. 102 молчит. Логи утверждают, что 102 busy.
Пробовал ставить wait(10) между dial - ничего не изменилось.
Куда копать?

Re: DAHDI: Несколько Dial подряд одного exten

Добавлено: 09 апр 2016, 21:37
awsswa
В очереди с пенальти

Re: DAHDI: Несколько Dial подряд одного exten

Добавлено: 10 апр 2016, 08:13
shines2
awsswa писал(а):В очереди с пенальти
Пытался. Переход к очередному пенальти осуществляется только по busy. По неответу его не будет.

Re: DAHDI: Несколько Dial подряд одного exten

Добавлено: 10 апр 2016, 17:18
shines2
Реализовал все редким извращением. :twisted: Фрагмент из первого поста, который не работает, я тоже планировал использовать в очереди таким же образом. Т.е. он располагался бы в контексте 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




Re: DAHDI: Несколько Dial подряд одного exten

Добавлено: 10 апр 2016, 19:47
ded
как реализовать очередь, чтобы звонил сначала n сек номер N, потом по неответу n сек номер N и K звонили вместе и т.д.
Эти сценарии уже хорошо проточены и отшлифованы, используются в стандартных раскладках Ring groups & Queues, во FreePBX. Поэтому много безответных тем, как реализовать очередь, потому что ручное конструирование сценариев - неблагодарная работа, требующая знаний и пониманий.
Конкретно - чтобы звонил сначала n сек номер N, потом по неответу n сек номер N и K звонили вместе и т.д. характерен не для очередей (потому что появляется недостоверная статистика о халатности неответивших операторов), а для групп вызовов - Ring groups, и называется прогрессивное серийное искание (memoryhunt & memoryhunt-prim).