VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
metris
Сообщения: 28
Зарегистрирован: 10 фев 2015, 12:06

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

Сообщение 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, нужно начинать дозвон на всю группу операторов заново и у первого вызов постоянно прерывается.

Подскажите, пожалуйста, кто знает еще варианты реализации такой схемы? В идеале - через одну очередь, чтоб использовать все ее плюшки - озвучить номер клиента в очереди, время ожидания и все такое...
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение 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)
metris
Сообщения: 28
Зарегистрирован: 10 фев 2015, 12:06

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

Сообщение metris »

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

Описанный вариант с Dial'ами с таймаутом, как я понимаю, будет такая же проблема - каждые N сек новый вызов :(
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

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

Сообщение zzuz »

Используйте очередь и стратегию звонят все и дублирующие внутренние номера с разным пенальти.
например,
101,0
101,1
102,1
101,2
102,2
103,2
101,3
... и так далее . И по таймауту они будут обзванивать друг друга. Хотя и здесь тоже новый вызов оператору.
Линия24 - Системы Массового Телефонного Обслуживания
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение virus_net »

мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
metris
Сообщения: 28
Зарегистрирован: 10 фев 2015, 12:06

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

Сообщение 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
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH