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

Очередь: добавление агента каждые N сек. Как?

Добавлено: 22 ноя 2019, 16:07
metris
Добрый день!
Система - Asterisk 11.20.0 (FreePBX)

Есть 20 операторов на софтфонах и входящий звонок.
Этот входящий звонок должен приходить на операторов с разной задержкой, примерно в такой хронологии:
0 сек - начинаем дозвон на 101
2 сек - продолжаем дозваниваться на 101 и начинаем дозваниваться на 102
4 сек - продолжаем дозваниваться на 101 и 102 и начинаем дозваниваться на 103
и так далее..
Важно, чтобы за все время вызова у абонента 101 звонок не прерывался. И хочется более-менее удобную возможность менять очередность абонентов.

Сейчас такая схема реализована через очередь, которая вызывает виртуальные экстены, которые потом вызывают реальные с Wait(n), потом Dial(), но на 20 абонентах она уже плохо работает, кто-то не может принять звонок, до кого-то он не доходит, а вычитать потом что-то в логах при таком нагромождении информации почти невозможно.
Нашли вариант реализации https://voxlink.ru/kb/asterisk-configur ... peratorov/ привязали к FreePBX (не без костылей :( ), но получается, что при каждом увеличении PENALTY, нужно начинать дозвон на всю группу операторов заново и у первого вызов постоянно прерывается.

Подскажите, пожалуйста, кто знает еще варианты реализации такой схемы? В идеале - через одну очередь, чтоб использовать все ее плюшки - озвучить номер клиента в очереди, время ожидания и все такое...

Re: Очередь: добавление агента каждые N сек. Как?

Добавлено: 22 ноя 2019, 16:56
ded
Такая схема
0 сек - начинаем дозвон на 101
2 сек - продолжаем дозваниваться на 101 и начинаем дозваниваться на 102
4 сек - продолжаем дозваниваться на 101 и 102 и начинаем дозваниваться на 103
называется "прогрессивное-серийное-искание" и уже реализована штатно, Только не в очереди, а в ринг-группе.
Соорудите ринг группу и направляйте входящие в неё.
Или вручную

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

exten => 123456789,1,Dial(SIP/101,2,t)
exten => 123456789,n,Dial(SIP/101&SIP/102,4,t)
exten => 123456789,n,Dial(SIP/101&SIP/102&SIP/103,,t)

Re: Очередь: добавление агента каждые N сек. Как?

Добавлено: 25 ноя 2019, 15:56
metris
Спасибо, погуглил про прогрессивное-серийное-искание, даже на этом форуме встречалась тема, но там та же нерешенная проблема (что и в варианте с увеличением penalty) - при подключении следующего агента, у предыдущих вызов прекращается и начинается снова.

Описанный вариант с Dial'ами с таймаутом, как я понимаю, будет такая же проблема - каждые N сек новый вызов :(

Re: Очередь: добавление агента каждые N сек. Как?

Добавлено: 26 ноя 2019, 00:32
zzuz
Используйте очередь и стратегию звонят все и дублирующие внутренние номера с разным пенальти.
например,
101,0
101,1
102,1
101,2
102,2
103,2
101,3
... и так далее . И по таймауту они будут обзванивать друг друга. Хотя и здесь тоже новый вызов оператору.

Re: Очередь: добавление агента каждые N сек. Как?

Добавлено: 27 ноя 2019, 07:44
virus_net

Re: Очередь: добавление агента каждые N сек. Как?

Добавлено: 28 ноя 2019, 11:41
metris
Спасибо большое, мне уже подкинули подобный вариант.

Там человек сделал так:

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

[common]
exten => _900XX!,1,NoOp()
 same => n,Wait(${EXTEN:3:2})
 same => n,Goto(from-internal,${EXTEN:5},1)

[from-internal-custom]
exten => 300,1,NoOp()
same => n,Set(D=LOCAL/90000301@common/n&LOCAL/90003302@common/n&LOCAL/90010303@common/n)
same => n,Dial(${D},100,t)
и для удобства редактирования составляем список абонентов PUSH'ами:

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

exten => 1,1,NoOp()
 same => n,Set(D=)
 same => n,Set(PUSH(D,&)=LOCAL/9000027@common/n)
 same => n,Set(PUSH(D,&)=LOCAL/9000028@common/n)
...
Это все хорошо и решает большинство задач, но теряются плюшки очереди - озвучить время ожидания, позицию в очереди и основное - в текущем варианте будет только одна попытка дозвона абоненту.
Или таки нужно городить еще проверку состояния, как в варианте https://forum.asterisk.ru/viewtopic.php?f=5&t=4395