ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Оценка работы оператора

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

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

Оценка работы оператора

Сообщение skynetyar » 20 окт 2020, 21:36

Добрый день!
FreePBX 14
Прошу совета и помощи, настраивал все по мануалу.
Все вроде бы работает корректно ,но иногда видимо когда оператор состоит в нескольких очередях то во время "inuse" разговора ему приходит звонок, настройки очереди проверены :
Skip Busy Agents = Yes + (ringinuse=no)
Autofill = no
Агенты динамические досбавляються через CLI
Подскажите как поступить,может быть лучше отойти от
Local/111@customer-survey-ivr/n,0,111,hint:111@ext-local
И использовать в extensions_override_freepbx.conf [ext-queues] ?
Или все же в [customer-survey-ivr] делать проверку на INUSE и INCALL и делать Return() ?
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 432
Зарегистрирован: 18 авг 2016, 14:25

Re: Оценка работы оператора

Сообщение Kroteg » 21 окт 2020, 16:39

А никакой CallWaiting не включен?
ну и покажи queue show <num> как отображаются операторы
и хинты нормально отрабатываются?
Изображение
Аватар пользователя
Kroteg
 
Сообщений: 195
Зарегистрирован: 11 янв 2018, 14:51

Re: Оценка работы оператора

Сообщение skynetyar » 22 окт 2020, 16:16

Спасибо за ответ!
Call Waiting на всех номерах отключены,глобально тоже отключил при создании новых.

[Показать] Спойлер: queue show
Local/756@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken 19 calls (last was 79860 secs ago)
Local/748@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken 55 calls (last was 9643 secs ago)
Local/746@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken 27 calls (last was 80 secs ago)
Local/774@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken no calls yet
Local/830@from-queue/n (ringinuse disabled) (dynamic) (In use) has taken 49 calls (last was 391 secs ago)
Local/739@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken 32 calls (last was 3601 secs ago)
Local/827@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken 39 calls (last was 291 secs ago)
Local/825@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken no calls yet
Local/820@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken 40 calls (last was 812 secs ago)
Local/819@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken 62 calls (last was 26 secs ago)
Local/725@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken 57 calls (last was 65071 secs ago)
Local/815@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken 34 calls (last was 243 secs ago)
Local/814@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken 20 calls (last was 2264 secs ago)


В extensions_override_freepbx.conf я переопределил
[from-queue]
exten => _X.,1,Goto(customer-survey-ivr,${EXTEN},1)

В extensions_custom.conf
[customer-survey-ivr]
[Показать] Спойлер:
exten => _X.,1,NoOp(---------- POST CALL SURVEY BEGINNING ---------------)
exten => _X.,n,NoOp(HINT STATUS - ${EXTENSION_STATE(${EXTEN})})
exten => _X.,n,NoOp(DND STATUS - ${DB(DND/${EXTEN})})
exten => _X.,n,GotoIf($["${DB(DND/${EXTEN})}" = "YES"]?busy)
exten => _X.,n,DIAL(PJSIP/${EXTEN},,trg)
exten => _X.,n,GotoIf($[${DIALSTATUS}=BUSY]?busy:answered)
exten => _X.,n(busy),Hangup()
exten => _X.,n(answered),Goto(assessment,${EXTEN},1)


[assessment]
[Показать] Спойлер:
exten => _X.,1,Answer
exten => _X.,n,Wait(1)
exten => _X.,n(skip),Set(IVR_MSG=en/beep)
exten => _X.,n(start),Set(TIMEOUT(digit)=1)
exten => _X.,n,Background(/var/lib/asterisk/sounds/ru/custom/ocenite-8khz,m)
exten => _X.,n,WaitExten(5,)

exten => 1,1,AGI(survey.php, ${CDR(src)}, ${DIALEDPEERNUMBER}, ${NODEST}, 1)
exten => 1,n,Playback(/var/lib/asterisk/sounds/ru/custom/bye-8khz,skip)

exten => 2,1,AGI(survey.php, ${CDR(src)}, ${DIALEDPEERNUMBER}, ${NODEST}, 2)
exten => 2,n,Playback(/var/lib/asterisk/sounds/ru/custom/bye-8khz,skip)

exten => 3,1,AGI(survey.php, ${CDR(src)}, ${DIALEDPEERNUMBER}, ${NODEST}, 3)
exten => 3,n,Playback(/var/lib/asterisk/sounds/ru/custom/bye-8khz,skip)

exten => 4,1,AGI(survey.php, ${CDR(src)}, ${DIALEDPEERNUMBER}, ${NODEST}, 4)
exten => 4,n,Playback(/var/lib/asterisk/sounds/ru/custom/bye-8khz,skip)

exten => 5,1,AGI(survey.php, ${CDR(src)}, ${DIALEDPEERNUMBER}, ${NODEST}, 5)
exten => 5,n,Playback(/var/lib/asterisk/sounds/ru/custom/bye-8khz,skip)

exten => t,1,Playback(/var/lib/asterisk/sounds/ru/custom/bye-8khz,skip)
exten => e,1,Playback(/var/lib/asterisk/sounds/ru/custom/bye-8khz,skip)


Тут я вывожу отладку
exten => _X.,n,NoOp(HINT STATUS - ${EXTENSION_STATE(${EXTEN})})

По логу получается так
[Показать] Спойлер:
-- Goto (customer-survey-ivr,725,1)
-- Executing [725@customer-survey-ivr:1] NoOp("Local/725@from-queue-0001a3ec;2", "---------- POST CALL SURVEY BEGINNING ---------------") in new stack
-- Executing [725@customer-survey-ivr:2] NoOp("Local/725@from-queue-0001a3ec;2", "HINT STATUS - UNAVAILABLE") in new stack
-- Executing [725@customer-survey-ivr:3] NoOp("Local/725@from-queue-0001a3ec;2", "DND STATUS - YES") in new stack
-- Executing [725@customer-survey-ivr:4] GotoIf("Local/725@from-queue-0001a3ec;2", "1?busy") in new stack
-- Goto (customer-survey-ivr,725,7)
-- Executing [725@customer-survey-ivr:7] Hangup("Local/725@from-queue-0001a3ec;2", "") in new stack
== Spawn extension (customer-survey-ivr, 725, 7) exited non-zero on 'Local/725@from-queue-0001a3ec;2'
-- Nobody picked up in 0 ms
-- Called Local/739@from-queue/n
-- Executing [739@from-queue:1] Goto("Local/739@from-queue-0001a3ed;2", "customer-survey-ivr,739,1") in new stack
-- Goto (customer-survey-ivr,739,1)
-- Executing [739@customer-survey-ivr:1] NoOp("Local/739@from-queue-0001a3ed;2", "---------- POST CALL SURVEY BEGINNING ---------------") in new stack
-- Executing [739@customer-survey-ivr:2] NoOp("Local/739@from-queue-0001a3ed;2", "HINT STATUS - INUSE") in new stack
-- Executing [739@customer-survey-ivr:3] NoOp("Local/739@from-queue-0001a3ed;2", "DND STATUS - ") in new stack
-- Executing [739@customer-survey-ivr:4] GotoIf("Local/739@from-queue-0001a3ed;2", "0?busy") in new stack
-- Executing [739@customer-survey-ivr:5] Dial("Local/739@from-queue-0001a3ed;2", "PJSIP/739,,trg") in new stack
-- Called PJSIP/739
-- Local/739@from-queue-0001a3ed;1 is ringing


По логу видно что оператор занят INUSE но Dial все равно происходит...
-- Executing [739@customer-survey-ivr:2] NoOp("Local/739@from-queue-0001a3ed;2", "HINT STATUS - INUSE") in new stack
-- Executing [739@customer-survey-ivr:5] Dial("Local/739@from-queue-0001a3ed;2", "PJSIP/739,,trg") in new stack
-- Called PJSIP/739
-- Local/739@from-queue-0001a3ed;1 is ringing

Несмотря на настройки очереди Skip Busy Agents = Yes + (ringinuse=no)
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 432
Зарегистрирован: 18 авг 2016, 14:25

Re: Оценка работы оператора

Сообщение skynetyar » 22 окт 2020, 20:41

Добавил такую конструкцию в [customer-survey-ivr]
exten => _X.,n,ExecIf($["${EXTENSION_STATE(${EXTEN})}"="NOT_INUSE"]?DIAL(PJSIP/${EXTEN},,trg))

вместо
exten => _X.,n,DIAL(PJSIP/${EXTEN},,trg)

Прошу поправить если не так делаю..
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 432
Зарегистрирован: 18 авг 2016, 14:25

Re: Оценка работы оператора

Сообщение ded » 23 окт 2020, 03:27

Ring Inuse

If you want the queue to avoid sending calls to members whose devices are known to be ‘in use’ (via the channel driver supporting that device state) uncomment this option. (Note only the SIP channel driver currently is able to report ‘in use’.)
; ringinuse = no
а у вас PJSIP
callcounters = yes ?
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: Оценка работы оператора

Сообщение Kroteg » 27 окт 2020, 15:58

в случае с PJSIP может попробовать DEVICE_STATE(PJSIP/${EXTEN})
ну и естественно поизучать какие возможны ответы.
INUSE и тд...
Изображение
Аватар пользователя
Kroteg
 
Сообщений: 195
Зарегистрирован: 11 янв 2018, 14:51

Re: Оценка работы оператора

Сообщение skynetyar » 28 окт 2020, 14:38

ded писал(а):callcounters = yes

Ненашел данный параметр в FreePBX ,или его можно внести как дополнительный параметр?

Kroteg писал(а):DEVICE_STATE(PJSIP/${EXTEN})


${EXTENSION_STATE(${EXTEN})} тоже прекрасно работает..

Пока что проблему решил так как описал ниже, вроде все гладко...
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 432
Зарегистрирован: 18 авг 2016, 14:25

Re: Оценка работы оператора

Сообщение ded » 28 окт 2020, 17:55

Искать так:
OK, Google => asterisk callcounters = yes
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: Оценка работы оператора

Сообщение skynetyar » 14 дек 2020, 14:59

Подскажите пожалуйста, появляется ошибка

Код: выделить все
[2020-12-14 13:33:00] WARNING[9485][C-00004bab]: ast_expr2.fl:470 ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected '=', expecting $end; Input:
=BUSY
^


[Показать] Спойлер: "лог"
-- Called Local/809@from-queue/n
-- Executing [809@from-queue:1] Goto("Local/809@from-queue-00010f28;2", "customer-survey-ivr,809,1") in new stack
-- Goto (customer-survey-ivr,809,1)
-- Executing [809@customer-survey-ivr:1] NoOp("Local/809@from-queue-00010f28;2", "---------- POST CALL SURVEY BEGINNING ---------------") in new stack
-- Executing [809@customer-survey-ivr:2] NoOp("Local/809@from-queue-00010f28;2", "HINT STATUS - INUSE") in new stack
-- Executing [809@customer-survey-ivr:3] NoOp("Local/809@from-queue-00010f28;2", "DND STATUS - ") in new stack
-- Executing [809@customer-survey-ivr:4] NoOp("Local/809@from-queue-00010f28;2", "NUMBER - +78888888888") in new stack
-- Executing [809@customer-survey-ivr:5] NoOp("Local/809@from-queue-00010f28;2", "QUEUE - 210") in new stack
-- Executing [809@customer-survey-ivr:6] NoOp("Local/809@from-queue-00010f28;2", "EXTEN - 809") in new stack
-- Executing [809@customer-survey-ivr:7] NoOp("Local/809@from-queue-00010f28;2", "OPERATOR CDR - 809") in new stack
-- Executing [809@customer-survey-ivr:8] NoOp("Local/809@from-queue-00010f28;2", "DEVICE_STATE 809 - INUSE") in new stack
-- Executing [809@customer-survey-ivr:9] NoOp("Local/809@from-queue-00010f28;2", "---------- POST CALL SURVEY BEGINNING ---------------") in new stack
-- Executing [809@customer-survey-ivr:10] GotoIf("Local/809@from-queue-00010f28;2", "0?busy") in new stack
-- Executing [809@customer-survey-ivr:11] ExecIf("Local/809@from-queue-00010f28;2", "0?DIAL(PJSIP/809,,trg)") in new stack
[2020-12-14 13:33:00] WARNING[9485][C-00004bab]: ast_expr2.fl:470 ast_yyerror: ast_yyerror(): syntax error: syntax error, unexpected '=', expecting $end; Input:
=BUSY
^
[2020-12-14 13:33:00] WARNING[9485][C-00004bab]: ast_expr2.fl:474 ast_yyerror: If you have questions, please refer to https://wiki.asterisk.org/wiki/display/ ... +Variables
-- Executing [809@customer-survey-ivr:12] GotoIf("Local/809@from-queue-00010f28;2", "?busy:answered") in new stack
-- Goto (customer-survey-ivr,809,14)
-- Executing [809@customer-survey-ivr:14] Goto("Local/809@from-queue-00010f28;2", "assessment,809,1") in new stack
-- Goto (assessment,809,1)
-- Executing [809@assessment:1] Answer("Local/809@from-queue-00010f28;2", "") in new stack
-- Local/809@from-queue-00010f28;1 answered SIP/M9023306077-00002863
-- Stopped music on hold on SIP/M9023306077-00002863


По логу понятно что он ругается на это
exten => _X.,n,GotoIf($["${DB(DND/${EXTEN})}" = "YES"]?busy)
Потому как ${DB(DND/${EXTEN})} равен "" путоте, в этот момент и выводит ошибку
В некоторых случаях ${DB(DND/${EXTEN})}" = "YES" ну и ошибки нет соответственно

Еще такая проблема ,бывает звонок идет сразу на
exten => _X.,n(answered),Goto(assessment,${EXTEN},1)
Немогу отловить момент, видимо когда нет операторов в очереди такое происходит

[Показать] Спойлер: "extensions_custom.conf"
[customer-survey-ivr]
exten => _X.,1,NoOp(---------- POST CALL SURVEY BEGINNING ---------------)
exten => _X.,n,NoOp(HINT STATUS - ${EXTENSION_STATE(${EXTEN})})
exten => _X.,n,NoOp(DND STATUS - ${DB(DND/${EXTEN})})
exten => _X.,n,NoOp(NUMBER - ${CDR(src)})
exten => _X.,n,NoOp(QUEUE - ${NODEST})
exten => _X.,n,NoOp(EXTEN - ${EXTEN})
exten => _X.,n,NoOp(OPERATOR CDR - ${CDR(dst)})
exten => _X.,n,NoOp(DEVICE_STATE ${EXTEN} - ${DEVICE_STATE(PJSIP/${EXTEN})})
exten => _X.,n,NoOp(---------- POST CALL SURVEY BEGINNING ---------------)
exten => _X.,n,GotoIf($["${DB(DND/${EXTEN})}" = "YES"]?busy)
exten => _X.,n,ExecIf($["${EXTENSION_STATE(${EXTEN})}"="NOT_INUSE"]?DIAL(PJSIP/${EXTEN},,trg))
exten => _X.,n,GotoIf($[${DIALSTATUS}=BUSY]?busy:answered)
exten => _X.,n(busy),Hangup()
exten => _X.,n(answered),Goto(assessment,${EXTEN},1)

[assessment]
exten => _X.,1,Answer
exten => _X.,n,Wait(1)
exten => _X.,n(skip),Set(IVR_MSG=en/beep)
exten => _X.,n(start),Set(TIMEOUT(digit)=1)
exten => _X.,n,Background(/var/lib/asterisk/sounds/ru/custom/ocenite-8khz,m)
exten => _X.,n,NoOp(---------- LOG LOG LOG ---------------)
exten => _X.,n,NoOp(OPERATOR CDR - ${CDR(dst)})
exten => _X.,n,NoOp(---------- LOG LOG LOG ---------------)
exten => _X.,n,WaitExten(5,)
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 432
Зарегистрирован: 18 авг 2016, 14:25

Re: Оценка работы оператора

Сообщение ded » 15 дек 2020, 12:20

У вас не ${DB(DND/${EXTEN})} равен "" путоте, а вообще ключа DND/${EXTEN} в базе astdb нетуб когда даёт ошибку.
Можете проверить
asterisk -rx 'database show" | grep DND
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

След.

Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH