Asterisk-queue

From 탱이의 잡동사니
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Overview

Asterisk queue 명령어 정리

Basic

queue 명령어는 생성되어 있는 Queue 의 멤버 및 현재 상황 정보를 확인/추가/수정/삭제 할 때 사용하는 명령어이다.

Channel state

Asterisk 의 Queue 는 디바이스(채널)의 상태 정보에 따라 민감하게 반응한다. 이런 이유로, 각각의 Asterisk 에서 Queue 에 채널을 추가하기 위해서는 먼저 채널 드라이버에서 Queue 모듈에 적절한 상태정보를 줄 수 있는지를 확인해야 한다. 하지만, 각각의 채널드라이버(SIP, IAX, ...)에서 사용되는 채널의 상태 정보들이 다를 수 있다. 그리고, 각각의 모듈에서 Queue 로 채널(디바이스)상태 정보를 전달할 수 있도록 하는 적절한 옵션을 설정해줘야 한다.

chan_sip.so 모듈의 경우, sip.conf 파일에 다음 옵션을 활성화해야 한다.

[general]
callcounter=yes                 ; enable device states for SIP devices

Create Queue

Queue 의 생성 및 삭제 를 위해서는 queues.conf 설정파일을 수정해야한다. cli 로는 생성/삭제가 불가능하다.

자세한 내용은 Asterisk-queues.conf를 참고하면 된다.

Module

Queue 모듈 load/unload/reload 를 위해서는 다음의 명령어를 입력하면 된다.

pluto*CLI> module load app_queue.so
pluto*CLI> module unload app_queue.so
pluto*CLI> module reload app_queue.so

help

pluto*CLI> help queue 
queue add member               -- Add a channel to a specified queue
queue reload {parameters|members|rules|all} -- Reload queues, members, queue rules, or parameters
queue remove member            -- Removes a channel from a specified queue
queue reset stats              -- Reset statistics for a queue
queue set penalty              -- Set penalty for a channel of a specified queue
queue set ringinuse            -- Set ringinuse for a channel of a specified queue
queue show                     -- Show status of a specified queue
queue show rules               -- Show the rules defined in queuerules.conf
queue {pause|unpause} member   -- Pause or unpause a queue member

show

현재 등록된 모든 queue 정보를 확인한다. show 뒤에 특정 Queue 이름을 입력하면 입력된 queue에 대한 내용만 나타난다. 큐/멤버/콜 세가지 항목으로 구분되어 나타낸다.

vpbx11*CLI> queue show Camp200
Camp200 has 1 calls (max unlimited) in 'ringall' strategy (0s holdtime, 0s talktime), W:100, C:0, A:2, SL:0.0% within 0s
   Members: 
      user1 (Local/200@DialCamp) (Ringing) has taken 1 calls (last was 6 secs ago)
   Callers: 
      1. SIP/201-test-1-0000001b (wait: 0:03, prio: 0)

Queue info

큐 정보를 나타낸다.

Camp200 : 큐 이름.
has 1 calls : 현재 큐에 인입되어 분배 대기중인 콜의 갯수.
(max unlimited) : 큐에 인입되어 대기 가능한 최대 콜의 갯수.
'ringall' stratergy : 큐에 설정된 콜 분배 방식.
0s holdtime : 큐에 인입되는 콜들의 분배되기까지의 평균 대기 시간. Exponential average 방식을 사용해서 평균 시간을 계산하기 때문에 일반적인 평균 구하는 시간과는 다를 수 있다.
0s talktime : 큐에 인입되는 콜들의 분배 후 평균 통화 시간. Exponential average 방식을 사용해서 평균 시간을 계산하기 때문에 일반적인 평균 구하는 시간과는 다를 수 있다.
W : 큐 가중치. 하나의 상담원(채널)이, 여러개의 큐에 대기중이고, 여러개의 큐에 동시에 콜이 인입되었을 경우, 가중치가 높은(많은) 수록, 큐에 인입된 콜이 먼저 분배될 확률이 높아진다.
C : 큐에 인입되어 정상적으로 분배된 콜 수.
A : 큐에 인입되었지만 정상적으로 분배되지 못한 콜 수.
SL : Service level check interval 시간동안 인입된 콜의 정상 분배율 %.
within 0s : Service level check interval

Members info

큐에 등록된 멤버 정보를 나타낸다.

user1 : Username
(Local/200@DialCamp) : 큐에 등록된 채널 정보
(Ringing) : 채널 state
taken 1 calls : 수신한 콜 갯수. 받은 콜수가 0일 경우, "taken no calls yet" 이라고 나타난다.
(last was 6 secs ago) : 마지막으로 분배받아서 통화 종료한 콜 시각으로부터의 시간.

Callers

현재 분배 대기중인 콜의 내용을 나타낸다.

1. index 번호
SIP/201-test-1-0000001b : 큐에 인입된 Channel 이름.
wait: 0:03 : 큐에 인입되어 대기중인 시간
prio: 우선순위 가중치. 높은 우선순위 가중치를 가진 콜(채널) 일 수록, 분배가 빨리 된다.

add member

queue 에 Member 를 추가한다.

*CLI> queue add member <channel> to <queue> [[[penalty <penalty>] as <membername>] state_interface <interface>]
<channel> : Queue 에 추가하고자 하는 channel 정보. SIP/0000FFFF0003 과 같은 정보를 말한다.
<queue> : 멤버가 추가될 Queue 이름.
<penalty> : 추가되는 멤버가 가지게 될 패널티
<membername> : 추가되는 멤버에 설정하고자 하는 이름
state_interface : 추가되는 채널의 상태정보를 설정한다
*CLI> queue add member SIP/0000FFFF0001 to support
Added interface 'SIP/0000FFFF0001' to queue 'support'

*CLI> queue show support
support
has 0 calls (max unlimited) in 'rrmemory' strategy
(0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
Members:
SIP/0000FFFF0001 (dynamic) (Not in use) has taken no calls yet
No Callers

remove member

queue에서 멤버를 삭제한다.

queue remove member SIP/0000FFFF0001 from support
Removed interface 'SIP/0000FFFF0001' from queue 'support'

pause

queue 에 설정된 멤버를 일시정지 한다

*CLI> queue pause member SIP/0000FFFF0001 queue support reason DoingCallbacks
paused interface 'SIP/0000FFFF0001' in queue 'support' for reason 'DoingCallBacks'

*CLI> queue show support
support
has 0 calls (max unlimited) in 'rrmemory' strategy
(0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
Members:
SIP/0000FFFF0001 (dynamic) (paused) (Not in use) has taken no calls yet
No Callers

unpause

일시정지 되어 있는 멤버를 다시 복귀시킨다.

*CLI> queue unpause member SIP/0000FFFF0001 queue support reason off-break
unpaused interface 'SIP/0000FFFF0001' in queue 'support' for reason 'off-break'

*CLI> queue show support
support
has 0 calls (max unlimited) in 'rrmemory' strategy
(0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
Members:
SIP/0000FFFF0001 (dynamic) (Not in use) has taken no calls yet
No Callers