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

Проблема с joinempty=inuse, leavhenempty=inuse

Добавлено: 15 апр 2011, 16:15
g00g1ekz
Здравствуйте.
Пользуюсь Asterisk 1.6.2 на CentOS, мне нужно сделать, чтобы если в очереди по какой-либо причине (ringing,inuse,unavailable,unknown,penalty, paused,invalid) оператор не может ответить на звонок, клиент должен выбрасываться из нее. Все эти директивы работают, за исключением inuse. Если хоть один оператор разговаривает с клиентом, все последующие клиенты попадут в очередь.
Изначально задача такая: клиент звонит на астериск, если он попадает на оператора (т.е. у оператора звонит телефон), то клиент должен слышать гудки, в противном случае - MoH и announce-position.
Для этого сделал 2 очереди, настроено все так:

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

[general]
persistentmembers = yes
autofill = yes
shared_lastcall=no

[ops_dial]
musicclass = default
strategy = fewestcalls
timeout = 15
retry = 0
wrapuptime=0
weight=0
autofill=yes
maxlen = 0
ringinuse=no
setinterfacevar = yes
joinempty = inuse,paused,ringing,unavailable,invalid,unknown,penalty
leavewhenempty = inuse,paused,ringing,unavailable,invalid,unknown,penalty
announce-frequency = 0
monitor-format = wav
monitor-type = MixMonitor

member => SIP/operator01,0
member => SIP/operator02,0
member => SIP/operator03,0
member => SIP/operator04,0
member => SIP/operator05,0

[ops_wait]
musicclass = default
strategy = fewestcalls
timeout = 15
retry = 5
wrapuptime = 0
weight=1
autofill = yes
maxlen = 0
setinterfacevar = yes
announce-frequency = 30
queue-youarenext = first_call
queue-thereare = your_call
queue-callswaiting = in_line
queue-thankyou = 

monitor-format = wav
monitor-type = MixMonitor

member => SIP/operator01,0
member => SIP/operator02,0
member => SIP/operator03,0
member => SIP/operator04,0
member => SIP/operator05,0
Вот extensions.conf :

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

[general]
autofallthrough=yes

[from_kt]
exten => _39XXXX,1,Answer()
;exten => _39XXXX,n,Playback(your_call)
exten => _39XXXX,n,Set(MONITOR_FILENAME=${STRFTIME(${EPOCH},,%Y-%m-%d_%H-%M)}_-_${CALLERID(number)})
exten => _39XXXX,n,Set(PDIR=${STRFTIME(${EPOCH},,%Y-%m-%d)})
exten => _39XXXX,n,System(mkdir /var/spool/asterisk/monitor/${PDIR})
exten => _39XXXX,n,Set(MONITOR_EXEC=lame /var/spool/asterisk/monitor/^{MONITOR_FILENAME}.wav && rm -rf /var/spool/asterisk/monitor/^{MONITOR_FILENAME}.wav && mv /var/spool/asterisk/monitor/^{MONITOR_FILENAME}.wav.mp3 /var/spool/asterisk/monitor/${PDIR})
exten => _39XXXX,n,GotoIf($["${CDR(SRC):0:5}" = "87142"]?gorod:sotka)
exten => _39XXXX,n(gorod),Set(CALLERID(NAME)=${CDR(SRC):5})
exten => _39XXXX,n,Goto(cntn)
exten => _39XXXX,n(sotka),Set(CALLERID(NAME)=${CDR(SRC)})
exten => _39XXXX,n(cntn),Queue(ops_dial,r)
exten => _39XXXX,n,Playback(greetings)
exten => _39XXXX,n,Queue(ops_wait)
exten => h,1,Set(CDR(userfield)=${MEMBERINTERFACE:4})
У юзеров operator01-05 в sip.conf прописан call-limit=1. Куда рыть уже не знаю, 3 дня над ним бьюсь, скачал исходники, там вроде все должно работать.
Заранее спасибо за любые предложения.
PS Если где-то туплю, прошу сильно не пинать, с астериском работаю 2 недели.

Re: Проблема с joinempty=inuse, leavhenempty=inuse

Добавлено: 15 апр 2011, 16:52
ded
2 недели срок ничтожно маленький, чтобы разобраться в таком функционале. И уж тем более - настрои ть всё как надо.
В суппорт, платный, разумеется. Как вариант - не выпиливать лобзиком фанерный велосипед, а поставить Триксбокс и настроить все эти параметры очереди тремя-четырьмя кликами, осознанно, с комментариями, через вэб интерфейс.
Я выражаю этим только своё, частное мнение.

Re: Проблема с joinempty=inuse, leavhenempty=inuse

Добавлено: 16 апр 2011, 13:52
g00g1ekz
Спасибо за ответ, но, к сожалению, платный суппорт не есть вариант - руководство мне посоветует прогуляться пешком.
Попробую Trixbox, хотя, насколко я понимаю, косяк либо в том, что какие-то из опций, которые я включил, конфликтуют с joinempty=inuse, либо косяк в самом * (что маловероятно, но возможно).
Может быть кто-нибудь уже сталкивался с такой проблемой?

Re: Проблема с joinempty=inuse, leavhenempty=inuse

Добавлено: 16 апр 2011, 15:25
g00g1ekz
Все, проблема решена. Дело было в том, что начиная с версии 1.6.1 в asterisk для определения InUse нужно использовать callcounter=yes вместо call-limit в sip.conf.