3.CUBE Scenario 시나리오 스크립트

Edit

3.1시나리오 스크립트 설명

시나리오 스크립트는 기존 교환기에서 제공하는 단순한 호 분배 방식이 아닌 각 센터의 환경에 맞는 분배 방식을 사용자가 직접 적성하여 적용할 수 있습니다.

3.2시나리오 스크립트 구성

기본 형식은 조건, 실행방식, 실행처 세 가지 연산자로 구성이 됩니다.

주의 사항

1) 스크립트 언어에 대소문자 구분이 없습니다.

2) 단어간 공백 제약 없이 사용 가능합니다.

3) 연산자 우선순위에 의한 사칙 연산 가능합니다.

4) 분기 명령과 루프를 지원합니다.

5) 2000byte 까지 시나리오 작성 가능(row, column 제한없음) 합니다.

3.2.1예약어(상수, 변수)

표 3-1예약어(상수, 변수) 항목

키워드

타입

설명

예제

Default

상수

스크립트를 적용했을 때 문장 해석 도중 오류가 발생하거나 최종 분배대상이 없을 경우에 동작하는 키워드로 시나리오 스크립트의 맨 상단에 작성해야 함.

Default ->> [100.0]

시나리오 아래에 작성한 시나리오 실행 시 오류가 발생하면 100번 상담원 그룹으로 호 분배.

DNIS

변수

현재 처리할 호의 calling party 를 의미 함..

RightCopy [AA=DNIS,4]

AA 변수에 DNIS 정보의 마지막 4개 문자를 대입 함.

ANI

변수

현재 처리할 호의 고객번호를 의미 함.

LeftCopy [BB=ANI,1]

BB 변수에 ANI 정보의 첫 번째 문자 하나를 대입 함.

UUI

변수

현재 처리할 호의 발신자 정보를 의미 함.

RightCopy [R03=UUI,3]

UUI 의 오른쪽 세자리를 R03 변수에 저장 함.

UEI

변수

사용자 정의된 정보를 의미 함.

StrLen [LEN=UEI]

LEN 변수에 UEI의 길이를 대입 함.

Priority

변수

Priority 를 Assign.

Priority = "U“

1 ->> [100.0]

콜이 들어 오면 우선순위를 U를 지정하여 100번 그룹으로 분배가 됨.

CallType

상수

현재 처리할 호의 유형을 의미 함.

CallType은 Inbound, Outbound, Internal 중 하나를 사용할 수 있음.

( CallType = Inbound ) ->> [100.0]

처리할 호의 유형이 인바운드인 경우 100번 그룹으로 분배 함.

CallKind

상수

현재 처리할 호의 종류를 의미 함.

CallKind는 PSTN, W2P, W2W, EMAIL, FAX 중 하나를 사용할 수 있음.

( CallKind = PSTN ) ->> [100.0]

현재 처리할 호의 종류가 PSTN인 경우 100번 그룹으로 호를 분배 함.

3.2.2예약어(함수)

표 3-2예약어(함수) 항목

키워드

설명

예제

1

조건이 항상 만족함을 의미합니다.

1 ->> [100.0]

무조건 100번 상담원 그룹으로 호를 분배합니다.

Chrrep

ChrRep [{사용자 변수},{값},{값}]|사용자 정의 {사용자 변수}변수 문자열 중에서 문자 '{값}'를 문자 '{값}'로 대체합니다.

chrrep [AG,"!",":"]

AG 변수 문자열 중에서 ‘!’ 문자를 ‘:’ 문자로 대체합니다.

Fcallback

타센터로 지정한 횟수만큼 호 분배 시도 후 분배가 모두 실패할 경우 해당 라우트포인트로 호를 넘깁니다. 시도횟수를 -1로 설정할 경우에는 타센터로 호가 분배될 때까지 무한 횟수만큼 시도합니다.

FCallBack [5000, 2]

1 -> 6000@BUSAN

BUSAN 센터의 6000번 라우트포인트로 호 분배를 2회 시도했으나 모두 실패 시 5000번 라우트포인트로 호를 분배합니다.

MidCopy

지정된 문자열에서 지정한 자리수부터 지정한 개수만큼을 복사한다.

[{사용자 변수}={사용자 변수},{값},{값}]|사용자 정의 {사용자 변수}에 {사용자 변수}의 {값}번째 문자부터 {값}개 문자를 대입한다.

MidCopy [KEY=ANI,3,2]

KEY 변수에 ANI 정보의 3번째 문자부터 2개 문자를 대입합니다.

LeftCopy

지정된 문자열에서 왼쪽 끝부터 지정한 개수만큼을 복사한다.

[{사용자 변수}={사용자 변수},{값}]|사용자 정의 {사용자 변수}에 {사용자 변수}의 왼쪽부터 {값} 개수 만큼을 복사합니다.

LeftCopy [KEY=ANI, 2]

KEY 변수에 ANI 정보의 첫 번째 문자부터 2개 문자를 대입합니다.

RightCopy

지정된 문자열에서 오른쪽 끝부터 지정한 개수만큼을 복사한다.

[{사용자 변수}={사용자 변수},{값}]|사용자 정의 {사용자 변수}에 {사용자 변수}의 오른쪽 끝부터 {값} 개수 만큼을 복사합니다.

RightCopy [KEY=ANI, 5]

KEY 변수에 ANI 정보의 마지막 5개 문자를 대입합니다.

Strcat

[{사용자 변수}={사용자 변수},{사용자 변수}]|사용자 정의 {사용자 변수}에 {사용자 변수}와 {사용자 변수}을 추가하여 대입합니다.

StrCat [SL=AG,AT]

SL 변수에 AG와 AT 정보를 추가하여 대입합니다.

Strcmp

[{사용자 변수}={사용자 변수},{사용자 변수}]|사용자 정의 {사용자 변수}에 {사용자 변수}와 {{사용자 변수}을 비교하고 결과를 대입합니다.

StrCmp[AA=BB,CC]

AA 변수에 BB와 CC 정보를 비교하고 결과를 대입합니다.

strlen

[{사용자 변수}={사용자 변수}]|사용자 정의 {사용자 변수}에 {사용자 변수}의 길이를 대입합니다.

StrLen [LEN=UEI]

LEN 변수에 UEI의 길이를 대입합니다.

strrep

UEI에 특정 위치의 특정 자리수 만큼 사용자 정의 값을 넣고 싶을 때 사용합니다.

strrep [UEI,1,3,"123"]


UEI에 1번째부터 3자리를 123 값으로 변경

Setuei

변경된 UEI를 통보한다.

strrep [UEI,1,3,"123"]

SetUEI [UEI]

UEI에 1번째부터 3자리를 123 값으로 변경 후 변경 된 UEI 를 통보합니다.

trim

Trim [{사용자 변수}]|사용자 정의 {사용자 변수}변수 문자열의 제일 왼쪽과 오른쪽의 공백을 제거해서 대입합니다.

trim [AG]

AG 변수에 AG 문자열의 제일 왼쪽과 오른쪽의 공백을 제거해서 대입합니다

vip

vip 함수를 사용 한다.

Default ->>[200.0]

vip[priority=ANI,20000]

1->>[200.0]

20000번 가상큐를 통해 ANI번호를 가지고 검색한후 해당 데이터를 가지고 Priority를 적용한다.

Wait

지정된 시간만큼 분배를 기다린다.

1 ->> [100.0] & Wait [10]

10초 동안 100번 그룹으로 호 분배 대기 후 10초 동안 분배가 되지 않았을 경우 다음 라인으로 넘어갑니다.

SQLQuery

지정된 쿼리문을 지정된 시간 동안 해당 라우트포인트를 이용하여 질의한다.

SQLQuery[RS=sql,1,40000]

Sql 문장을 쿼리한다. 1초간 40000 번 가상큐로 쿼리한다.

SQLExecute

지정된 쿼리문을 지정된 시간동안 해당 라우트포인트를 이용하여 실행한다.

SQLExecute [RS=sql, 20000]

Sql 문장을 가상 20000 큐로 쿼리한다.

SQLRECORD

Sqlquery로 쿼리한 값을 해당되는 순서대로 값을 저장한다.

SQLRecord [D00=RS,0,0]

RS 의 쿼리 값중 0번째 값을 D00 에 저장한다.

Network [1]

Virtualcontactcenter routing 시 사용한다.

Network [1]

1 ->> [100.0]

본센터 및 타센터의 100번 그룹에 대기순으로 호를 분배한다.

WaitOnNACD[1]

VTO 기능을 사용한다.

WaitOnNACD[1]

VTO 기능을 사용한다.

Before

직전 상담원 함수를 사용 한다.

Default ->>[200.0]

before[AA,BB=ANI,20000]

1->>{BB}&Wait[10]

1->>[200.0]

RoutePoint에 호가 인입이 되면 20000번 RoutePoint를 통하여 ANI번호를 가지고 FC_EMPRIGHTBEFORE 테이블에서 CUSTOMER_KEY값을 검색을 하여 다음 데이터를 가져옵니다.

AA = CENTER_ID

BB = EMPLOYEE_ID

Appoint

지정, 전담 상담원 함수

Default ->>[200.0]

Appoint[AA,BB=ANI,20000]

1->>{BB}&Wait[10]

1->>[200.0]

RoutePoint에 호가 인입이 되면 20000번 RoutePoint를 통하여 ANI번호를 가지고 FC_EMSPECIFY 테이블에서 CUSTOMER_KEY값을 검색을 하여 다음 데이터를 가져옵니다.

AA = CENTER_ID

BB = EMPLOYEE_ID

Oid

Oid 를 지정한다.

oid[ns1s="1.1.10.3.0.201"]

1번센터 10번 테넌트 201 스킬그룹을 가진 자원을 ns1s 에 저장한다

[oid 사용 예시]

oid "1.0.1.8103" 은 1번 센터의 라우트 번호 8103을 의미합니다.

oid "2.1.60.1.101" 은 2번 센터의 60번 테넌트의 스킬 101을 의미합니다.

oid "3.1.60.2.100" 은 3번 센터의 60번 테넌트의 그룹 100을 의미합니다.

3.2.3조건, 분기, 반복 함수

표 3-3조건, 분기, 반복 함수 항목

키워드

설명

예제

goto

분기 함수를 지정 함.

GOTO NEXUSROUTING

NEXUSROUTING 으로 분기를 함.

bookmark

Goto 에서 지정한 target 을 의미 함.

Bookmark NEXUSROUTING

1 ->> [100.0]

분기 후 100 번 그룹으로 분배 함.

then

조건 then 실행처 방식으로 조건을 만족하면 실행처가 실행 됨.

( AA== "U" ) then Priority = "U“

변수 AA가 U 이면, 분배우선순위를 U 로 지정 함.

3.2.4절차(실행방식, procedure)

표 3-4절차(실행방식, procedure) 항목

키워드

설명

예제

->

Forced Route : 특정 상담원을 지정하여 routing

( RK = A) -> {AGENT001}

RK 변수의 값이 A이면 AGENT001 상담원으로 호를 분배 함.

->>

Route : 특정 group,팀,Queue로 route

( RK = A ) ->> [100.0]

RK 변수의 값이 A이면 100번 그룹으로 호를 분배 함.

3.2.5연산자

표 3-5연산자 항목

키워드

설명

예제

( )

계산식에서 우선 순위를 지정할 수 있음.(사용시 사이에 Space필요)

( AA < 15 ) & ( AA != 0) ->> [100.0]

변수 AA의 값이 15보다 작고 0이 아닐 경우 100번 그룹으로 호를 분배 함.

[ ]

호 분배 그룹이나 변수와 함수명을 분류하는 기호를 말함.

1 ->> [100.0]

100번 그룹으로 호를 분배 함.

,

항목 구분자로 사용한다. 목적지 지정시는 동일 레벨을 의미 함.

1 ->> [100.101,100.102]

100번 그룹의 1팀과 100번 그룹의 2팀의 상담원 중 가장 오랫동안 대기 상태인 상담원에게 호를 분배 함.

:

목적지 지정시 나열된 것이 동일 레벨이 아니고

이전의 조건에 해당하는 상담원중 Ready인 상담원이 없는 경우에 다음 레벨로 돌림. (30개 까지 가능)

1 ->> [100.101,100.102:200.0]

100번 그룹의 101팀과 102팀의 상담원에게 먼저 호를 분배하고 해당 그룹의 대기상태인 상담원이 없는 경우 200번 그룹으로 호를 분배 함.

;

콜론( : ) 과 동일한 기능.

( CUBE에서는 콜론과 세미콜론의 기능이 동일함. )

1 ->> [100.101,100.102;200.0]

100번 그룹의 101팀과 102팀의 상담원에게 먼저 호를 분배하고 해당 그룹의 대기상태인 상담원이 없는 경우 200번 그룹으로 호를 분배 함.

=

[지정]을 의미 함.

( AA = P ) ->> [100.0]

변수 AA의 값이 P일 경우 100번 그룹으로 호를 분배 함.

==

[같다]을 의미 함.

( AA == 10 ) ->> [100.0]

변수 AA의 값이 10일 경우 100번 그룹으로 호를 분배 함.

<

[작다]를 의미 함.

( AA < 10 ) ->> [100.0]

변수 AA의 값이 10보다 작을 경우 100번 그룹으로 호를 분배 함.

>

[크다]를 의미 함.

( AA > 20 ) ->> [100.0]

변수 AA의 값이 20보다 클 경우 100번 그룹으로 호를 분배 함.

<=

[작거나 같다]를 의미 함.

( AA <= 10 ) ->> [100.0]

변수 AA의 값이 10보다 작거나 같을 경우 100번 그룹으로 호를 분배 함.

>=

[크거나 같다]를 의미 함.

( AA >= 20 ) ->> [100.0]

변수 AA의 값이 20보다 크거나 같을 경우 100번 그룹으로 호를 분배 함.

!=

[같지 않다]를 의미 함.

( AA != P ) ->> [300.0]

변수 AA의 값이 P가 아니면 300번 그룹으로 호를 분배 함.

3.3시나리오 스크립트 사용 예제

3.3.1그룹 및 파트 분배

사용 키워드 : 1, Wait, []

[사용 설명]

  1. 호가 들어오면 700번 그룹으로 50초 동안 호를 분배, 대기합니다.

  2. 대기 상담원이 없으면 51초부터 550번 그룹의 559번 파트로 호를 분배합니다.

3.3.2스킬 분배

사용 키워드 : 1, Wait ()

[사용 설명]

  1. 호가 들어오면 1(skill1), 10(skill10) 스킬을 가진 상담원에게 50초 동안 호를 분배합니다.

  2. 명령이 실패할 경우에는 500번 그룹(상담HELP그룹)으로 호를 분배합니다.

3.3.3차등 분배

사용 키워드 : 1, :

분배방식에서 두 번째인 [:]를 선택합니다.

[사용설명]

  1. 호가 들어오면 600번 그룹의 대기 상담원에게 우선적으로 호를 분배합니다.

  2. 대기 상담원이 없으면 650번 그룹의 대기 상담원에게 호를 분배합니다.

3.3.4우선 순위 주기

사용 키워드 : 1 , Priority

[사용설명]

  1. 호가 들어오면 호의 우선 순위를 A로 줍니다.

  2. 700번 그룹의 대기 상담원에게 우선적으로 호를 분배합니다.

  3. 대기 상담원이 없으면 500번 그룹의 대기 상담원에게 호를 분배합니다.

1. 우선 순위를 지정하지 않는 경우의 호는 Z입니다.

3.3.5변수 사용하기

사용 키워드 : 1, RightCopy, LeftCopy, 조건함수

[사용설명]

  1. RightCopy [AA=UEI,2] : UEI 데이터를 오른쪽 끝에서 2자리 값 가져옵니다.

  2. LeftCopy [BB=ANI,3] : 들어온 호의 ANI 번호 왼쪽 끝에서 3자리 가져옵니다.

  3. AA=CM이면 650번 그룹으로 호를 분배를 합니다.

  4. BB=070이면 400번 그룹으로 호를 분배를 합니다.

  5. 위의 조건이 만족하지 못하면 500번 그룹으로 호를 분배합니다.

3.3.6직전 상담원 연결하기

사용 함수 : 1 , Before

[사용설명]

  1. Default ->> [700.0] : 조건실패 시에 700번 그룹으로 호를 분배합니다.

  2. BefCust [UEI,12,13] : UEI에서 12번째부터 13자리를 가져와 해당 키를 가지고 있는 상담원이 Ready이면 호를 분배하고, 아니면 다음 단계로 내려갑니다.

  3. 1 ->> [400,0] : 400번 그룹으로 호를 분배합니다.

1. 위 기능과 별개로 IVR에서 고객 DB를 조회하여 이전 통화했던 상담원의 아이디를 UEI에 전달하면 이전 인바운드 통화 상담원뿐 아니라 아웃바운드 상담원도 UEI 인식 분배 시나리오를 적용하여 이전 상담원 연결 기능을 구현 가능합니다.

(엔진 재 시작 여부와 관계없이 가능합니다.)

3.3.7전담 상담원 연결하기

사용 함수 : 1 , Appoint

Default ->>[200.0] 
Appoint[AA,BB=ANI,20000] 
1->>{BB}&Wait[10] 
1->>[200.0]

[사용설명]

  1. Default ->> [200.0] : 조건실패 시에 200번 그룹으로 호를 분배합니다.

  2. Appoint[AA,BB=ANI,20000] : RoutePoint에 호가 인입이 되면 20000번 RoutePoint를 통하여 ANI번호를 가지고 FC_EMSPECIFY 테이블에서 CUSTOMER_KEY값을 검색을 하여 다음 데이터를 가져옵니다.

  3. 1->>{BB}&Wait[10] BB 에 저장된 상담원이 Ready 이면 분배하고 아니면 10초간 대기한다.

  4. 1 ->> [200,0] : 200번 그룹으로 호를 분배합니다.

Default ->>[200.0]
Appoint[AA,BB=ANI,20000]
(BB=="") goto aa_route
(BB!="") goto bb_route
bookmark aa_route
1->>[300.0]
bookmark bb_route
1->>{BB}&Wait[10]
1->>[400.0]

[사용설명]

  1. Default ->> [200.0] : 조건실패 시에 200번 그룹으로 호를 분배합니다.

  2. Appoint[AA,BB=ANI,20000] : RoutePoint에 호가 인입이 되면 20000번 RoutePoint를 통하여 ANI번호를 가지고 FC_EMSPECIFY 테이블에서 CUSTOMER_KEY값을 검색을 하여 다음 데이터를 가져옵니다. 검색하여 값이 없으면 aa_route 로 이동합니다. 만약 값이 있으면 bb_route 로 이동합니다.

  3. bookmark aa_route

    1->>[300.0] 300번 그룹으로 호를 분배합니다.

  4. bookmark bb_route

    1->>{BB}&Wait[10] 조회된 상담원이 Ready 면 분배하고 아니면 10초간 대기합니다.

    1->>[400.0] 위 조건이 만족하지 않으면 400번 그룹으로 분배합니다.

전담상담원에 EMPLOYEE_ID 값은 복수개가 가능합니다.

예를들면 A 고객의 전담 상담원이 AGENT1, AGENT2, AGENT3 이라면 3명 모두 지정할 수 있습니다.


최대 지정은 64자리 까지 가능합니다. 만약 EMPLOYEE_ID 가 10자리라면 ","포함하여 5명까지 넣을 수 있습니다.


이것은 v2.7.4 부터 EMPLOYEE_ID 값은 복수개가 가능합니다.

3.3.8사이트 적용 사용 예제

A사 예제


Default ->>(1:8:1,2,6,8)

해석: 1번스킬에 로그온이 있는지 확인하고 없으면 8번 스킬에 로그온이 있는지 확인하고 없으면 1,2,6,8스킬에 대기한다.



RightCopy [R03=UUI,3]

해석: UUI 의 오른쪽 세자리를 R03 변수에 저장한다.



strcmp[RKIND=R03,"@NS"]

해석: 윗줄에서 복사된 R03 과 @NS 를 비교하여 같으면 RKIND가 1로 세팅되고 다르면 0으로 세팅된다.


RKIND==1 goto INCenter

해석: RKIND가 1이면 INCenter 로 이동한다. 1이 아니면 아랫줄로 이동한다.


UUI=UUI+"@NS"

해석: UUI 에 UUI 값 더하기 @NS 를 대입한다.


oid[ns1s="1.1.10.3.0.201"]

해석: 1번센터 10번 테넌트 201 스킬그룹을 가진 자원을 ns1s 에 저장한다.


oid[ns2s="2.1.20.3.0.201"]

해석: 2번센터 20번 테넌트 201 스킬그룹을 가진 자원을 ns2s 에 저장한다.


ns1rrate=100*(ns1s.ready-ns1s.autoset)/(ns1s.login+7)

해석: ns1rrate 에 값을 계산한다. ns1s reday 값과 autoset 값 그리고 login 값을 구해서 계산한다.


ns2rrate=100*(ns2s.ready-ns2s.autoset)/(ns2s.login+7)

해석: ns2rrate 에 값을 계산한다. ns2s reday 값과 autoset 값 그리고 login 값을 구해서 계산한다.


ns2s.login>0 and ns1rrate<ns2rrate -> 51314@2



1 ->> (1:8:1,2,6,8) & Wait[1]

해석: 1번스킬에 로그온이 있는지 확인하고 없으면 8번 스킬에 로그온이 있는지 확인하고 없으면 1,2,6,8스킬에 1초간 대기한다.


(ns2s.ready-ns2s.autoset>0)->51314@2


oid[ns1q="1.1.10.3.1.5001"]

해석: 1번센터 10번 테넌트 5001 큐 그룹에 자원을 ns1q 에 저장한다.


oid[ns2q="2.1.20.3.1.5001"]

해석: 2번센터 10번 테넌트 5001 큐 그룹에 자원을 ns2q 에 저장한다.


ns1rate=100*ns1q.wait/ns1s.login

ns2rate=100*ns2q.wait/ns2s.login

ns2s.login>0 and ns2rate<ns1rate ->51314@2

ns2s.login>0 and ns1s.login==0 ->51314@2

bookmark INCenter


Priority = "X"

해석: 우선순위 X를 부여한다.


RKIND==1 ->> (1:8:1,2,6,8) & Wait[1]


WaitOnNACD[1]

해석: VTO 기능을 사용한다.


1 ->> (1:8:1,2,6,8)

B사 예제

oid[tq01="2.0.1.4151"]

해석: 2센터 라우트포인트 4151에 대한 정보를 tq01 에 저장한다.


oid[tq02="2.0.1.4152"]

oid[tq04="2.0.1.4154"]

oid[tq05="2.0.1.4155"]

c1=(100000000*(tq01.c_en+tq01.wait+1))/2647

해석: c1 에 tq01의 인입+대기호를 2647로 나눈 값을 저장한다.


c2=(100000000*(tq02.c_en+tq02.wait+1))/4118

c4=(100000000*(tq04.c_en+tq04.wait+1))/2895

c5=(100000000*(tq05.c_en+tq05.wait+1))/340

(c1<=c2) and (c1<=c4) and (c1<=c5) goto nh_route

해석: 비교하여 goto 문으로 nh_route 로 이동한다.


(c2<=c1) and (c2<=c4) and (c2<=c5) goto bs_route

(c4<=c1) and (c4<=c2) and (c4<=c5) goto gj_route

(c5<=c1) and (c5<=c2) and (c5<=c4) goto dj_route

bookmark nh_route


1 -> 4151

해석: 4151큐로 분배한다.


bookmark bs_route

1 -> 4152

bookmark gj_route

1 -> 4154

bookmark dj_route

1 -> 4155