Asterisk-queues.conf: Difference between revisions
Line 29: | Line 29: | ||
상담원이 하나 이상의 큐에 대기하고 있는 경우, 서로 다른 큐에서 동시에 콜이 오게되어 한번에 두 개 이상의 콜이 쌓이는 현상이 있을 수 있다. 이런 경우, shared_lastcall 을 설정하게 되면 남게되는 콜을 다른 상담원들과 공유하게 할 수 있다. | 상담원이 하나 이상의 큐에 대기하고 있는 경우, 서로 다른 큐에서 동시에 콜이 오게되어 한번에 두 개 이상의 콜이 쌓이는 현상이 있을 수 있다. 이런 경우, shared_lastcall 을 설정하게 되면 남게되는 콜을 다른 상담원들과 공유하게 할 수 있다. | ||
== | == queues == | ||
실제로 각각의 큐(Queue) 를 등록하는 부분이다. | |||
=== musicclass === | === musicclass === | ||
<pre> | <pre> | ||
Line 111: | Line 113: | ||
[service](StandardQueue) | [service](StandardQueue) | ||
member => SIP/0000FFFF0006 | member => SIP/0000FFFF0006 | ||
</pre> | |||
== Example == | |||
<pre> | |||
[sales_1] | |||
musicclass = default | |||
strategy = ringall | |||
joinempty = yes | |||
</pre> | </pre> | ||
Revision as of 22:00, 3 October 2016
Overview
Asterisk queues.conf 파일 설정 내용 정리
[general]
[general]섹션은 Queue의 기본 동작 설정과 전역 옵션을 설정한다.
persistentmembers
; Persistent Members ; Store each dynamic member in each queue in the astdb so that ; when asterisk is restarted, each member will be automatically ; read into their recorded queues. Default is 'no'. ; persistentmembers = yes
동적으로 Queue에 멤버들을 영구적으로 추가시킨다. 영구 추가된 멤버들 정보는 astdb에 저장되며 Asterisk 재시작 후에도 자동으로 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 을 설정하게 되면 남게되는 콜을 다른 상담원들과 공유하게 할 수 있다.
queues
실제로 각각의 큐(Queue) 를 등록하는 부분이다.
musicclass
musicclass=default ; play [default] music
큐에 대기중인 콜에 들려주는 음악을 설정한다. musiconhold.conf 에 있는 default 클래스의 음악이 나오게된다.
strategy
strategy=rrmemory ; use the Round Robin Memory strategy
strategy 는 큐에 대기중인 상담원 중에서 누가 콜을 받을 것인지를 결정한다. 다음의 옵션들이 사용 가능하다.
- ringall : 가용한 모든 채널들에 벨을 울려서 처음으로 응답한 채널과 연결한다.(default)
- leastrecent : 현재의 큐에서 가장 최근에 콜을 종료한 채널에 연결을 시도한다.
- fewestcalls : 현재의 큐에서 가장 적은 콜을 받은 채널에 연결을 시도한다.
- random : 랜덤하게 연결을 시도한다.
- rrmemory : round robin 방식으로 벨을 울린다. 시작은 이전에 마지막으로 울린 채널 다음부터 시작해서 계속 이어간다.
- rrordered : 라운드 로빈을 적용하는 방식이 queues.conf 파일에 정해진 순서대로 돌아간다는 점만 빼면은, rrmemory와 같다.
- linear : 설정파일에 설정되어 있는 채널 순서대로 벨을 울린다. 유동적인 상담원(채널)의 경우, 상담원(채널)이 추가된 위치 순서에 맞춰 벨이 울리게 된다.
- wrandom : 랜덤하게 연결을 시도한다. 단, 상담원의 패널티에 따른 가중치를 고려한다. 만약 패널티가 0 이라면 가중치는 0 에서 1000 사이의 숫자가 된다. 만약 패널티가 1이 되면, 가중치는 0 에서 2000 사이의 숫자가 된다. 그리고 만약 패널티가 2이면 가중치는 0에서 3000 사이의 숫자가 된다. 이후, 가장 낮은 패널티를 가진 상담원에게 콜을 연결한다. 그리고 만약 wrandom 을 사용하고, 상담원이 하나 이상의 큐에 소속되어 있다면, 상담원에게 부과되는 패널티는 각각의 큐마다 서로 독립적으로 관리되게 된다.
- roundrobin : 채널이 응답할 때 까지, 한번에 하나씩 가용한 채널들에게 순서대로 벨을 울린다.(1.4 이후 부터는 사용되지 않는다. 1.4 이후부터는 rrmemroy 를 사용한다)
joinempty
Queue 에 응답할 수 있는 채널이 없어도 콜을 인입시킬지 말지를 결정한다.
; This setting controls whether callers can join a queue with no members. ; There are three choices: ; ; yes - callers can join a queue with no members or only unavailable members ; no - callers cannot join a queue with no members ; strict - callers cannot join a queue with no members or only unavailable members ; loose - same as strict, but paused queue members do not count as unavailable (new in 1.6) ; ; joinempty = yes
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
Example
[sales_1] musicclass = default strategy = ringall joinempty = yes
See also
- http://www.voip-info.org/wiki/view/Asterisk+config+queues.conf - Asterisk config queues.conf