Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

PearlPBX + приоритет в очереди

0

Доброго времени суток. Используем сборку asterisk 11.6 PearlPBX. Разработчик техподдержку не оказывает (разовали договор), требуется настроить стратегию очереди таким образом:

В очереди на прием звонков находятся следующие операторы:

> [root@pearlpbx asterisk]# asterisk -rx
> "queue show" CallCenter has 0 calls
> (max unlimited) in 'ringall' strategy
> (3s holdtime, 137s talktime), W:0,
> C:3294, A:395, SL:0.1% within 0s   
> Members:
>       731 (SIP/731 from SIP/731) with penalty 1 (ringinuse disabled)
> (realtime) (Not in use) has taken 132
> calls (last was 68032 secs ago)
>       765 (SIP/765 from SIP/765) with penalty 1 (ringinuse disabled)
> (realtime) (Not in use) has taken 76
> calls (last was 81980 secs ago)
>       761 (SIP/761 from SIP/761) with penalty 1 (ringinuse disabled)
> (realtime) (In use) has taken 266
> calls (last was 1117 secs ago)
>       722 (SIP/722 from SIP/722) with penalty 1 (ringinuse disabled)
> (realtime) (Not in use) has taken 264
> calls (last was 1040 secs ago)
>       711 (SIP/711 from SIP/711) with penalty 1 (ringinuse disabled)
> (realtime) (Not in use) has taken 256
> calls (last was 1338 secs ago)
>       744 (SIP/744 from SIP/744) (ringinuse disabled) (realtime) (Not
> in use) has taken 1183 calls (last was
> 2 secs ago)
>       743 (SIP/743 from SIP/743) (ringinuse disabled) (realtime)
> (Unavailable) has taken 70 calls (last
> was 170178 secs ago)
>       741 (SIP/741 from SIP/741) (ringinuse disabled) (realtime) (Not
> in use) has taken 1024 calls (last was
> 267 secs ago)
>       771 (SIP/771 from SIP/771) with penalty 1 (ringinuse disabled)
> (realtime) (paused) (Not in use) has
> taken 23 calls (last was 1029571 secs
> ago)    No Callers

741+743+744 должны имеють повышенный приоритет и именно им направляется звонок в первые 15 секунд. Потом звонок идет на всех, кто не в состоянии "пауза". Состояние "пауза" генерируется по графику и описано ниже в коде диалплана.

Вот кусок диалплана

[CallCenter] 
exten => _X!,1,Wait(1)
exten => _X!,n,Answer() 
;exten => _X!,n,Playback(pearlpbx/custom/Vas_vitae_medichnij_centr_Asklepij)
exten => _X!,n,GotoIfTime(08:00-17:00,mon-fri,*,*?20)
exten => _X!,n,GotoIfTime(17:00-19:00,mon-fri,*,*?30)
exten => _X!,n,GotoIfTime(19:00-21:00,mon-fri,*,*?40)
exten => _X!,n,GotoIfTime(21:00-23:00,mon-fri,*,*?50)
exten => _X!,n,GotoIfTime(08:00-12:00,sat,*,*?60)
exten => _X!,n,GotoIfTime(12:00-14:00,sat,*,*?70)

exten => _X!,n,NoOp(HE PABOTAEM) 
exten => _X!,n,Playback(pearlpbx/ne_rabotaem_20150312)
;exten => _X!,n,Playback(pearlpbx/custom/Vas_vitae_medichnij_centr_Asklepij) 
;exten => _X!,n,Playback(pearlpbx/custom/Nazhal_zaraz_mi_ne_mozhemo_vidpovisti_na_vash_dzvinok)
;exten => _X!,n,Playback(pearlpbx/custom/Boguniya_8-23)
;exten => _X!,n,Playback(pearlpbx/custom/Peretelefonujte_bud-laska_v_robochij_chas)
;exten => _X!,n,Playback(pearlpbx/custom/Djakuemo_za_rozuminnja_2)
;exten => _X!,n,Playback(pearlpbx/custom/WaitinForYouCall)
exten => _X!,n,Hangup(16) 
; 8:00-17:00  Zvonki postupayut na vseh krome(711; 761; 771; 743)
exten => _X!,20,NoOp
exten => _X!,n,GoSub(subUnpauseAll,start,1())
exten => _X!,n,PauseQueueMember(CallCenter,SIP/711)
exten => _X!,n,PauseQueueMember(CallCenter,SIP/761)
exten => _X!,n,PauseQueueMember(CallCenter,SIP/771)
exten => _X!,n,PauseQueueMember(CallCenter,SIP/743)
exten => _X!,n,Goto(100)
; 17:00-19:00 Zvonki postupayut tolko na Shevchenko 14 (761)
exten => _X!,30,NoOp
exten => _X!,n,GoSub(subPauseAll,start,1())
exten => _X!,n,UnpauseQueueMember(CallCenter,SIP/761)
exten => _X!,n,Goto(100)
; 19:00-21:00 Zvonki postupayut tolko na Vokzalnaya, 12 (711)
exten => _X!,40,NoOp
exten => _X!,n,GoSub(subPauseAll,start,1())
exten => _X!,n,UnpauseQueueMember(CallCenter,SIP/711)
exten => _X!,n,Goto(100)
; 21:00-23:00 Zvonki postupayut tolko na Vokzalnaya 12 (711)
exten => _X!,50,NoOp
exten => _X!,n,GoSub(subPauseAll,start,1())
exten => _X!,n,UnpauseQueueMember(CallCenter,SIP/711)
exten => _X!,n,Goto(100)
; SatAM 8:00-12:00 Zvonki postupayut tolko na CallCenter (741; 744)
exten => _X!,60,NoOp
exten => _X!,n,GoSub(subPauseAll,start,1())
exten => _X!,n,UnpauseQueueMember(CallCenter,SIP/741)
exten => _X!,n,UnpauseQueueMember(CallCenter,SIP/744)
exten => _X!,n,Goto(100)
; SatPM 12:00-14:00 Zvonki postupayut tolko na Shevchenko 14 (761)
exten => _X!,70,NoOp
exten => _X!,n,GoSub(subPauseAll,start,1())
exten => _X!,n,UnpauseQueueMember(CallCenter,SIP/761)
exten => _X!,n,Goto(100)

; Queue 
exten => _X!,100,Playback(pearlpbx/custom/Vas_vitae_medichnij_centr_Asklepij)
exten => _X!,n,Queue(CallCenter,rtT)
exten => _X!,n,Hangup() 

exten => _X!,150,AGI(PearlPBX-callback-add.pl,${CALLERID(num)},${EXTEN},${CHANNEL}) 
exten => _X!,n,Hangup();

[subPauseAll]
exten => start,1,PauseQueueMember(CallCenter,SIP/711)
 same => n,PauseQueueMember(CallCenter,SIP/741)
 same => n,PauseQueueMember(CallCenter,SIP/743)
 same => n,PauseQueueMember(CallCenter,SIP/744)
 same => n,PauseQueueMember(CallCenter,SIP/722)
 same => n,PauseQueueMember(CallCenter,SIP/731)
 same => n,PauseQueueMember(CallCenter,SIP/761)
 same => n,PauseQueueMember(CallCenter,SIP/765)
 same => n,PauseQueueMember(CallCenter,SIP/771)
 same => n,PauseQueueMember(CallCenter,SIP/790)
 same => n,PauseQueueMember(CallCenter,SIP/791)
 same => n,PauseQueueMember(CallCenter,SIP/798)
 same => n,Return()

[subUnpauseAll]
exten => start,1,UnpauseQueueMember(CallCenter,SIP/711)
 same => n,UnpauseQueueMember(CallCenter,SIP/741)
 same => n,UnpauseQueueMember(CallCenter,SIP/743)
 same => n,UnpauseQueueMember(CallCenter,SIP/744)
 same => n,UnpauseQueueMember(CallCenter,SIP/722)
 same => n,UnpauseQueueMember(CallCenter,SIP/731)
 same => n,UnpauseQueueMember(CallCenter,SIP/761)
 same => n,UnpauseQueueMember(CallCenter,SIP/765)
 same => n,UnpauseQueueMember(CallCenter,SIP/771)
 same => n,UnpauseQueueMember(CallCenter,SIP/790)
 same => n,UnpauseQueueMember(CallCenter,SIP/791)
 same => n,UnpauseQueueMember(CallCenter,SIP/798)
 same => n,Return()

;[Saturday]
;switch => Realtime/Saturday@extensions

!!741+743+744 должны имеють повышенный приоритет и именно им направляется звонок в первые 15 секунд. - КАК ЭТО РЕАЛИЗОВАТЬ?

удалить закрыть спам изменить тег редактировать

спросил 2016-03-16 18:45:25 +0400

sattva Gravatar sattva
1 5 4

обновил 2016-03-16 19:02:09 +0400

Comments

ну европейцы в лице Поляков могли бы сбросится на несколько евро. PS приоритет через пенальти

awsswa ( 2016-03-16 20:27:08 +0400 )редактировать

Судя по диалплану , это хорошо , что разорвали . Это не разработчик . Это костыльбанда.

zzuz ( 2016-03-16 20:28:07 +0400 )редактировать

Как добавить пенальти на внутренний номер 741, 743, 744?

sattva ( 2016-03-16 22:42:34 +0400 )редактировать

могу сказать "ухты". с pearlpbx еще вроде никто не обращался.

meral ( 2016-03-17 07:30:04 +0400 )редактировать

Значит нужно привлечь другого разработчика или изучать вопрос самостоятельно.

P.S. Из описания pearlpbx:

>Ни строчки на PHP ! ;-) Я не люблю PHP, поэтому серверная часть (backend) PearlPBX написана исключительно на Perl.

У себя чтоли дописать:

>Ни строчки на PERL ! Я не люблю PERL, поэтому вся серверная часть написана исключительно на PHP.

Но что это даст ? Есть повод гордиться ? А в чем разница для конечного клиента ?

virus_net ( 2016-03-17 09:34:45 +0400 )редактировать

Нашел в мануале: Управление свойствами группы операторов. Я постарался подобрать значения свойств для очередей по-умолчанию так, что бы их не нужно было модифицировать. На самом деле свойств у очередей значительно больше чем можно увидеть на данном скриншоте, но автор посчитал, что остальное можно вынести в “профессиональный” режим. В версии 1.х профессиональный режим еще недоступен, но он будет в версии 2.х. А пока есть база данных и доступ к ней. Описание свойств очередей можно найти в таблице public.queues.

Поэтому внес изменения "penalty" - в базе данных PostgreSQL "asterisk" - через phpPgAdmin!

Действия uniqueid membername queue_name interface penalty paused Редактировать Удалить
13 721 Отделения SIP/721 1 NULL Редактировать Удалить
17 711 Otdeleniya SIP/711
1 NULL Редактировать Удалить
18 761 Otdeleniya SIP/761
1 NULL Редактировать Удалить
15 721 Otdeleniya SIP/721 1 NULL Редактировать Удалить
36 741 CallCenter SIP/741 NULL
0 Редакт

sattva ( 2016-03-17 12:51:05 +0400 )редактировать

Учитывая использование AGI скриптов, если там ускоритель в скриптах не стоит, то перл - это даже хуже. Вы бы лучше вносили изменения сразу в файлы. Смысл в базе если веб не работает?

meral ( 2016-03-18 08:29:39 +0400 )редактировать

Использование пенальти сработает не совсем как вы ожидаете так как нет возможности что бы пенальти действовало только 15 секунд. Оно будет действовать постоянно, а значит на остальных пользователей звонок не перейдёт если ктото из операторов с более низким пенальти не будет занят/отключён. В вашем случе стоти реализовать через две последовательные очереди с настройками у первой leavewhenempty

j33n ( 2016-03-19 14:16:06 +0400 )редактировать

что значит "нет возможности". а про queue_rules вы не в курсе?

meral ( 2016-03-20 04:02:24 +0400 )редактировать

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

meral ( 2016-03-20 04:04:09 +0400 )редактировать

Спасибо за указание, вы правы действительно с queuerules можно делать такие переходы, ранее это как то совсем упускал и не использовал эту приблуду. leavewhenmpty я привёл как дополнительную опцию которя помогает переходить между очередями симулируя переход между операторами с разными пенальти, но я писал это просто рассуждая что если в очереди #1 какой то оператор с места уйдёт, не выключив телефон, то при стратегиях leastrecent и fewestcalls звонок может просто "залипнуть" на нём, долбя на него раз за разом. Если же использовать 2 очереди то звонок выйдет в следующую по таймауту очереди. Но снова таки учитывая ваше указание на queuerules это теперь не имеет смысла.

j33n ( 2016-03-21 13:30:28 +0400 )редактировать

queuerules.conf:

[CallCentre] penaltychange => 5, +1

sattva ( 2016-03-30 09:44:09 +0400 )редактировать

2 Ответа

0

внес изменения в penalty в базе "asterisk" PostgreSQL через phpPgAdmin:

Действия    uniqueid    membername  queue_name  interface   penalty     paused
Редактировать   Удалить     
13
    721 Отделения   SIP/721 
1
    NULL
Редактировать   Удалить     
17
    711 Otdeleniya  SIP/711 
1
    NULL
Редактировать   Удалить     
18
    761 Otdeleniya SIP/761  
1
    NULL
Редактировать   Удалить     
15
    721 Otdeleniya SIP/721  
1
    NULL
Редактировать   Удалить     
36
    741 CallCenter  SIP/741 NULL    
0
Редактировать   Удалить     
37
    744 CallCenter  SIP/744 NULL    
0
Редактировать   Удалить     
40
    722 CallCenter  SIP/722 
1

0
Редактировать   Удалить     
41
    731 CallCenter  SIP/731 
1

0
Редактировать   Удалить     
43
    765 CallCenter  SIP/765 
1

0
Редактировать   Удалить     
47
    798 CallCenter  SIP/798 
1

0
Редактировать   Удалить     
39
    711 CallCenter  SIP/711 
1

1
Редактировать   Удалить     
42
    761 CallCenter  SIP/761 
1

1
Редактировать   Удалить     
44
    771 CallCenter  SIP/771 
1

1
Редактировать   Удалить     
38
    743 CallCenter  SIP/743 NULL    
1
ссылка удалить спам редактировать

ответил 2016-03-17 12:47:04 +0400

sattva Gravatar sattva
1 5 4
0

Есть 2 теоретических варианта(может и больше, но два относительно простых)

1) Делаете очередь в которой три агента 741, 743, 744, в ней выствляете leaveempty=strict. За ней ставите обычную очередь. Соответсвенно очередь пропускается если все три заняты.

2) в agents.conf выставляете пенальти, в queuerules пишите правило повышающее пенальти со временем.

ну и есть вариант просто нанять вменяемого разроботчика.

ссылка удалить спам редактировать

ответил 2016-03-17 07:34:02 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2016-03-16 18:45:25 +0400

Просмотрен: 378 раз

Обновлен: Mar 17 '16

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.