Asterisk-queues.conf
Overview
Asterisk queues.conf 파일 설정 내용 정리
[general]
[general]섹션은 Queue의 기본 동작 설정과 전역 옵션을 설정한다.
autofill
autofill=yes ; distribute all waiting callers to available members
autofill 옵션은 큐에 대기중인 콜들이 있고, 현재 가용한 상담원이 있다면, 그 즉시 콜을 상담원으로 분배하게 하는 옵션이다. 어찌보면 당연한 옵션이지만, 예전 버전의 Asterisk 에서는 한번에 한콜씩만 상담원에게 분배가 되었었다. 무슨 말인가 하면, 콜 하나가 상담원에게 완전히 분배가 완료될 때 까지, 다른 콜들은 대기해야만 했었다는 뜻이다. 작은 규모의 시스템이라면 문제가 아니었겠지만, 시스템의 크기가 커질 수록 병목현상이 생기는 건 당연했다. 특별한 일이 없다면 반드시 yes 로 설정해야 한다.
shared_lastcall=yes ; respect the wrapup time for members logged into more ; than one queue
상담원이 하나 이상의 큐에 대기하고 있는 경우, 서로 다른 큐에서 동시에 콜이 오게되어 한번에 두 개 이상의 콜이 쌓이는 현상이 있을 수 있다. 이런 경우, shared_lastcall 을 설정하게 되면 남게되는 콜을 다른 상담원들과 공유하게 할 수 있다.
[template](!)
musicclass
musicclass=default ; play [default] music
큐에 대기중인 콜에 들려주는 음악을 설정한다. musiconhold.conf 에 있는 default 클래스의 음악이 나오게된다.
strategy
strategy=rrmemory ; use the Round Robin Memory strategy
strategy 는 큐에 대기중인 상담원 중에서 누가 콜을 받을 것인지를 결정한다. 다음의 옵션들이 사용 가능하다.
- ringall : 가용한 모든 채널들에 벨을 울려서 처음으로 응답한 채널과 연결한다.(default)
- roundrobin : 채널이 응답할 때 까지, 한번에 하나씩 가용한 채널들에게 순서대로 벨을 울린다.(1.4 에서는 사용되지 않는다. rrmemroy 를 사용한다)
- leastrecent : 현재의 큐에서 가장 오랫동안 대기한 채널에 연결을 시도한다.
- fewestcalls : 현재의 큐에서 가장 적은 콜을 받은 채널에 연결을 시도한다.
- random : 랜덤하게 연결을 시도한다.
- rrmemory : round robin 방식으로 벨을 울린다. 시작은 이전에 마지막으로 울린 채널 다음부터 시작해서 계속 이어간다.
- linear : 설정파일에 설정되어 있는 채널 순서대로 벨을 울린다. 유동적인 상담원(채널)의 경우, 상담원(채널)이 추가된 위치 순서에 맞춰 벨이 울리게 된다.
- wrandom : 랜덤하게 연결을 시도한다. 단, 상담원의 패널티에 따른 가중치를 고려한다. 만약 패널티가 0 이라면 가중치는 0 에서 1000 사이의 숫자가 된다. 만약 패널티가 1이 되면, 가중치는 0 에서 2000 사이의 숫자가 된다. 그리고 만약 패널티가 2이면 가중치는 0에서 3000 사이의 숫자가 된다. 이후, 가장 낮은 패널티를 가진 상담원에게 콜을 연결한다. 그리고 만약 wrandom 을 사용하고, 상담원이 하나 이상의 큐에 소속되어 있다면, 상담원에게 부과되는 패널티는 각각의 큐마다 서로 독립적으로 관리되게 된다.
leavewhenempty
;leavewhenempty = inuse,ringing ; ; A caller will be removed from the queue if at least one member cannot be found ; who is not on the phone, or whose phone is not ringing. ; ; For the sake of backwards-compatibility, the joinempty and leavewhenempty ; options also accept the strings "yes" "no" "strict" and "loose". The following ; serves as a translation for these values: ; ; yes - (empty) for joinempty; penalty,paused,invalid for leavewhenempty ; no - penalty,paused,invalid for joinempty; (empty) for leavewhenempty ; strict - penalty,paused,invalid,unavailable ; loose - penalty,invalid
만약 큐에 대기중인 상담원이 없다면, 큐에 인입된 콜을 큐에서 삭제하는 옵션이다.
ringinuse
; 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. This can be controlled on a per member basis by ; setting 'ringinuse' on that member. This can be done in the member definition, ; in the 'ringinuse' field on a realtime member, via the QUEUE_MEMBER dialplan ; function, or with CLI/AMI. By default, the per member value will be the same ; as the queue's ringinuse value if it isn't set on the member deliberately. ; (Note: only the SIP channel driver currently is able to report 'in use'.) ; ringinuse = no
만약 상담원의 전화기 중 하나가 "사용 중" 상태라도, 콜을 연결하도록 하는 옵션이다. 기본값은 no 이다.
member
queue 에 멤버를 고정적으로 추가한다.
member => interface,[,penalty][,membername][,state_interface][,ringinuse]
queue 에 유동적으로 멤버를 추가하는 것이 아닌, app_queue 모듈이 올라올때마다 고정적으로 멤버가 추가되도록 할 때 사용하는 방법이다.
[sales](StandardQueue) member => SIP/0000FFFF0005 ; or any other channel [service](StandardQueue) member => SIP/0000FFFF0006