Asterisk-queue

From 탱이의 잡동사니
Jump to navigation Jump to search

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