DIPCAST Call Center 구축 가이드

REST API & Core DCMI를 활용한 완전한 Call Center 솔루션

목차

1. 시스템 개요

구축 목표

  • DIPCAST REST API와 Core DCMI 통합
  • 실시간 CTI 기능 (통화연결/종료/스크린팝업)
  • JSON 기반 양방향 통신 (DCMI)
  • 확장 가능한 Call Center 플랫폼

핵심 기술 스택

PBX DIPCAST
Engine Core 20.x
API REST + AMI JSON
CTI WebSocket

2. 전체 시스템 아키텍처

Agent Desktop

CTI Interface
CRM Integration

API Gateway

REST API
VoIP Processing

DIPCAST

Call Routing
Queue Management

Core

DCMI Interface
Call Control

REST API Internal AMI JSON

통신 플로우 다이어그램

1. Agent Action

통화 요청/응답

2. API Processing

파라미터 변환/전송

3. Call Execution

통화 연결/제어

3. 주요 구성요소

REST API

엔드포인트: /api/v2
인증: API Key 기반
기능:
  • 통화 생성(클릭투콜)
  • 팩스 발신
  • 대기열 관리
  • 상담원 제어

DCMI

포트: 6600 (WebSocket 지원)
프로토콜: JSON over WebSocket
기능:
  • 실시간 이벤트 모니터링
  • 통화 상태 추적
  • 채널 제어
  • CDR 데이터 수집

CTI 기능

통화 연결 (Click-to-Call)
통화 종료 (Hang Up)
스크린 팝업 (Screen Pop)
통화 전환 (Transfer)

JSON 통신

Request/Response 패턴
실시간 이벤트 스트리밍
에러 처리 및 재연결
데이터 압축 및 최적화

4. REST API 연동

4.1 API 인증 설정

API Key 발급: 주식회사 얼쑤팩토리 문의 (1668-2471)

# API Key 헤더 설정 app-key {{api-key}} tenant {{tenant}}

4.2 REST API 요청 구조

기본 통화 생성 요청

POST https://{{host}}/api/v2/core/click_to_call { "caller": "1010", "callee": "01099552471", "cos_id": "2", "cid_name": "클릭투콜", "cid_number": 16682471 }

응답 처리

Response 200 OK { "status": "success", "message": "Call queued" }

5. DCMI(Dynamic Call Manager Interface) 연동

5.1 DCMI 연결 설정

TCP 6600

wss://dcrm.makecall.io:6600

WebSocket 연결

const ws = new WebSocket( 'ws://192.168.18.1:6600' );

5.2 JSON 형식 DCMI 명령어

대기열 조회 (Queue)

{ "data": { "Action": "Command", "Command":"queue show T2_Q10000", "ActionID": "DIPCAST-대기열상태조회-Q1000" } }

통화 종료 (Hangup)

{ "data": { "Action": "Hangup", "Channel": "/^PJSIP/T2_1013-.*$/", "ActionID": "OLSSOO-DVOIP-RANDOMID" } }

채널 상태 조회

{ "data": { "Action": "Ping", "ActionID": "DIPCAST-Ping" } }

메세지 발송(SIP 기반)

{ "data": { "Action": "MessageSend", "From": "", "To": "pjsip:T2_1019@bcs.makecall.io", "Body": "DIPCAST-웹데스크", "ActionID": "DIPCAST-웹데스크-메세지테스트" } }

5.3 실시간 이벤트 처리

주요 DCMI 이벤트

NewChannel

DeviceStateChange

QueueCallerJoin, AgentCalled, AgentConnect, AgentComplete, AgentRingNoAnswer

Hangup

6. CTI 기능 구현

6.1 통화 연결 (Click-to-Call)

Frontend 구현

{ "caller": "1010", "callee": "01026132471", "cos_id": "2", "cid_name": "클릭투콜", "cid_number": "01026132471", "variables": { "EXEC_AA" : "yes", "CHANNEL(language)":"ko" } }

UI 컴포넌트

6.2 통화 종료 (Hang Up)

통화 종료

{ "data": { "Action": "Hangup", "Channel": "/^PJSIP/T2_1013-.*$/", "ActionID": "OLSSOO-DVOIP-RANDOMID" } } // WebSocket으로 DCMI 명령 전송 websocket.send(JSON.stringify(hangupData)); }

상태별 종료 처리

// 통화 상태에 따른 종료 처리 function handleCallEnd(callState) { switch(callState) { case 'RINGING': // 링잉 중 취소 updateUI('통화가 취소되었습니다.'); break; case 'UP': // 연결된 통화 종료 updateUI('통화가 종료되었습니다.'); logCallDuration(); break; } }

6.3 스크린 팝업 (Screen Pop)

인입 통화 감지

// DCMI 이벤트 리스너 websocket.onmessage = function(event) { const data = JSON.parse(event.data); if (data.Event === 'NewChannel') { const callerNumber = data.CallerIDNum; const destination = data.Exten; // 에이전트 호출인지 확인 if (isAgentExtension(destination)) { showScreenPop(callerNumber); } } };

CRM 정보 팝업

// 고객 정보 조회 및 팝업 async function showScreenPop(phoneNumber) { // CRM에서 고객 정보 조회 const customerInfo = await getCRMData(phoneNumber); // 팝업 창 생성 const popup = createPopupWindow({ title: '인입 통화', customer: customerInfo, phoneNumber: phoneNumber, callTime: new Date().toISOString() }); popup.show(); }

스크린 팝업 UI 예시

인입 통화
방금 전
발신번호: +82-10-1234-5678
고객명: 김고객
등급: VIP
최근 통화: 2024-01-10

7. 단계별 구현 가이드

1 환경 설정 및 준비

DIPCAST 설정

  • ✓ DIPCAST 설치 및 설정
  • ✓ API Key 발급
  • ✓ 단말 및 상담원 계정 생성
  • ✓ 대기열 및 라우팅 설정

Core 설정

  • ✓ DCMI 활성화
  • ✓ WebSocket 지원 설정
  • ✓ 사용자 권한 설정
  • ✓ 보안 설정 적용

2 API 연동 개발

REST API

  • • 인증 구현
  • • 통화 생성
  • • 에러 처리

Core AMI

  • • WebSocket 연결
  • • JSON 파싱
  • • 이벤트 처리

연동 테스트

  • • 단위 테스트
  • • 통합 테스트
  • • 성능 테스트

3 CTI 기능 구현

// CTI 기능 통합 클래스 class CallCenterCTI { constructor(config) { this.makecallAPI = new MakeCallAPI(config.apiKey); this.coreAMI = new CoreAMI(config.amiConfig); this.crmIntegration = new CRMIntegration(); } async initializeAgent(agentId) { // 에이전트 로그인 처리 await this.coreAMI.connect(); this.setupEventListeners(agentId); } }

4 UI/UX 개발 및 배포

상담원 Desktop

  • • 통화 제어 패널
  • • 고객 정보 화면
  • • 통화 기록 관리
  • • 실시간 상태 표시

관리자 대시보드

  • • 실시간 모니터링
  • • 통계 및 리포트
  • • 큐 관리
  • • 에이전트 관리

구축 완료 체크리스트

시스템 설정

  • □ DIPCAST 설치 및 설정
  • □ DCMI 활성화
  • □ API Key 발급
  • □ 네트워크 보안 설정

개발 구현

  • □ REST API 연동
  • □ Core DCMI JSON 통신
  • □ CTI 기능 구현
  • □ 에러 처리 로직

테스트 & 배포

  • □ 기능 테스트 완료
  • □ 성능 최적화
  • □ 사용자 교육
  • □ 모니터링 설정

🎉 축하합니다! DIPCAST 기반 Call Center 구축이 완료되었습니다!

추가 리소스 및 참고사항

참조 링크

기술 지원

이 가이드는 DIPCAST REST API와 Core DCMI를 활용한 Call Center 구축을 위한 포괄적인 기술 문서입니다. JSON 기반 통신과 CTI 기능을 중심으로 실무에 바로 적용할 수 있는 구현 방법을 제시합니다.