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

ограничение длительности разговора в очереди

Добавлено: 08 дек 2021, 14:12
lpn672
Всем привет.

Читал читал и никак нет ответа. Как ограничить длительности звонка принятого из очереди? Для Dial() есть параметр, а с Queue() тишина.
Суть вопроса - оператор обрабатывает входящий звонок из очереди и нужно ограничить такой звонок, например, 5 минут. Это чтобы сбрасывать умалишенных с линии, ведь оператор не имеет права первым положить трубу.

Как или никак?

Re: ограничение длительности разговора в очереди

Добавлено: 08 дек 2021, 16:08
Wapo
Например, оператора прописать типа Local/ с указанием контекста, где в dial выставить нужное значение

Re: ограничение длительности разговора в очереди

Добавлено: 08 дек 2021, 18:52
lpn672
Wapo писал(а):Например, оператора прописать типа Local/ с указанием контекста, где в dial выставить нужное значение
Хм... Я что-то не понимаю. В контексте кол-центра Dial() вообще нет. Вот весь контекст. Что куда пишем?

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

exten => _X.,1,Noop(Incoming CALL channel: ${CHANNEL} context: ${CONTEXT} number: ${CALLERID(num)})
 same => n,Answer()
 same => n,Set(VOLUME(TX)=2) ; operator voice level
 same => n,Playback(callcenter-privet)
 same => n,Wait(2)
 same => n,GoSub(sub-monitor,s,1(${CALLERID(num)},${EXTEN}))
 same => n,Queue(call-center,tT,,,120)
 same => n,Set(CDR(queuestatus)=${QUEUESTATUS})
 same => n,Dumpchan()
 same => n,Wait(2)
 same => n,Playback(all-operator-busy)
 same => n,Wait(1)
 same => n(end),Hangup()

Re: ограничение длительности разговора в очереди

Добавлено: 09 дек 2021, 10:06
Wapo
Агент очереди типа Local/111@call-agent

[call-agent]
exten => XXX,1,Dial(SIP/${EXTEN}..........

Re: ограничение длительности разговора в очереди

Добавлено: 09 дек 2021, 11:16
ded

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

[call-agent]
exten => _XXX,1,Dial(SIP/${EXTEN}.
Признак шаблона!

Re: ограничение длительности разговора в очереди

Добавлено: 09 дек 2021, 12:20
lpn672
Wapo писал(а):Агент очереди типа Local/111@call-agent

[call-agent]
exten => XXX,1,Dial(SIP/${EXTEN}..........
Так-с... Понял схему, сделал (дошло так сказать), но... Но статус очереди отображает такого оператора как "инвалид"

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

ast1*CLI> queue show call-center
call-center has 0 calls (max 25) in 'rrmemory' strategy (7s holdtime, 156s talktime), W:0, C:202, A:65, SL:90.6%, SL2:72.3% within 45s
   Members:
      VLASENKO (Local/102@from-call-center-queue) with penalty 1 (ringinuse disabled) (Invalid) has taken no calls yet
Почитал все вокруг это проблемы. И пока тупик нариcовался.

Что имеем:

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

CLI>core show version
Asterisk 16.20.0 built by root @ ast1 on a x86_64 running Linux on 2021-09-15 07:03:50 UTC

#cat /etc/asterisk/modules.conf
preload => pbx_config.so
preload => chan_local.so

#cat /etc/asterisk/queue.conf
[call-center]
    announce-frequency=60
    announce-position=yes
    autopause=no
    autopausebusy=no
    joinempty = yes
    leavewhenempty = no
    periodic-announce-frequency = 45
    queue-callswaiting = queue-callswaiting
    queue-thankyou = queue-thankyou
    queue-thereare = queue-thereare
    queue-youarenext = queue-youarenext
    setqueueentryvar=yes
    setqueuevar=yes
    strategy=rrmemory
    timeout=15
    retry=5
    timeoutpriority=app
    musicclass = moh-custom
    autofill=yes
    maxlen=25
    memberdelay=0
    servicelevel=45
    wrapuptime=30
    ringinuse=no
member => SIP/101,2,MAMIEDOV
member => SIP/102,1,VLASENKO
member => Local/102@from-call-center-queue,1,VLASENKO
member => SIP/103,1,OSAD

Вызовы просто в диалплане на local идут. Нажимаем "4", вызываем - соединяет, всё ОК.

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

[test-local-dial]
exten => 4,1,Dial(Local/4@services

[services]
exten => 4,1,Dial(SIP/604)
И я знаю, что эта проблема уже не относится к теме, но все же...

Re: ограничение длительности разговора в очереди

Добавлено: 09 дек 2021, 15:40
lpn672
В догонку по оффтопику.

Чтобы member в очереди записанный через Local небыл Invalid следует указывать сигнальный интерфейс (state_interface).

Так у меня работает:

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

#cat /etc/asterisk/queue.conf
[call-center]
БЫЛО
; syntax: member => interface,[,penalty][,membername][,state_interface][,ringinuse][,wrapuptime]
member => SIP/101,2,MAMIEDOV
member => SIP/102,1,VLASENKO
member => SIP/103,1,OSAD

СТАЛО
; syntax: member => interface,[,penalty][,membername][,state_interface][,ringinuse][,wrapuptime]
member => Local/101@from-call-center-queue/n,2,MAMIEDOV,SIP/101
member => Local/102@from-call-center-queue/n,1,VLASENKO,SIP/102
member => Local/103@from-call-center-queue/n,1,OSAD,SIP/103

#CLI dialplan show from-call-center-queue
  '_XXX' =>         1. Dial(SIP/${EXTEN},15,rtTL(300000,240000,30000))                  [extensions.conf:346]

-= 1 extension (1 priority) in 1 context. =-

ded писал(а):

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

[call-agent]
exten => _XXX,1,Dial(SIP/${EXTEN}.
Признак шаблона!
Всем ответившим спасибо. Работает.
Тему закрываем.