SharedIT | 묻고 답하기(AMP)

CTI 도입에 대해서

안녕하세요 여러분


궁금한게 있어서 글 남겨봅니다.


저희 회사에서 이번에 CTI를 개선하려고 하는데 기존에 OCX를 통해서 ERP와 연동하고 있었는데
지원업체에서 websocket을 지원못한다고 하여 지원업체를 변경하게 되었습니다.

새로운 업체에서 api와 서버 소켓은 구성하고 저희회사에서 ocx를 걷어내고 클라이언트소켓 뚫어서 데이터를 받을 수 있도록 설정해달라고 하는데 구성하는 게 쉽지 않아서 질문드립니다.

[ 질문 ]
C#에서 제공하는 클라이언트 웹소켓을 구성하고 dll로 말아서 기존 ERP소스에 구성되어있던 ocx를 걷어내고 그자리에 소켓만 채워놓으면 되는것인지

dll로 말지않고 해당화면 소스에 소켓코드를 채워넣어야하는지

혹시 비슷한 작업을 하신 분이 있다면 답변부탁드립니다.


해당 부분에 문외한이라 설명이 미흡한점 양해바랍니다.

Tags : 태그가 없습니다.

3개의 답변이 있습니다.

명동쓰레빠
  0 추천 | 약 한 달 전

내용 잘보고 갑니다.

의외로 배울수 있는 좋은 답변들입니다.

앵그리파파
  0 추천 | 약 한 달 전

C#으로 클라이언트 WebSocket 구현을 생성하고 이를 ERP 시스템 내에서 사용하기 위해 DLL로 패키징하는 것이 가능합니다. 이 접근 방식에는 OCX 구성 요소에 의존하는 대신 WebSocket 기능을 ERP 애플리케이션 코드베이스에 직접 통합하는 작업이 포함됩니다.

  • 1.C#으로 WebSocket 클라이언트 구현: 서버에 연결하고 데이터를 보내고 받을 수 있는 WebSocket 클라이언트를 생성하는 C# 코드를 작성합니다. 이를 달성하려면 .NET에서 'WebSocketSharp' 또는 'ClientWebSocket'과 같은 라이브러리를 사용할 수 있습니다.


  • 2.DLL에서 WebSocket 클라이언트 래핑: WebSocket 클라이언트 구현이 작동하면 IDE에서 별도의 프로젝트를 생성하여 WebSocket 클라이언트 코드가 포함된 클래스 라이브러리(DLL)를 빌드할 수 있습니다. 그런 다음 이 DLL을 ERP 시스템 내에서 참조하고 사용할 수 있습니다.


  • 3.ERP 코드에서 OCX 사용 교체: ERP 시스템의 소스 코드에서 CTI 시스템과 통신하는 데 OCX 구성 요소가 사용되는 위치를 식별합니다. OCX에 대한 호출을 WebSocket 클라이언트 라이브러리에 대한 호출로 바꿉니다. 여기에는 기존 코드를 수정하거나 WebSocket 통신을 처리하기 위한 새 코드를 추가하는 작업이 포함될 수 있습니다.


  • 4.WebSocket 연결 구성: CTI 시스템과의 연결을 설정하려면 적절한 연결 매개변수(예: 서버 URL, 포트, 인증 토큰)로 WebSocket 클라이언트를 구성해야 합니다.

WebSocket 코드를 ERP 소스에 직접 통합할지 아니면 DLL로 래핑할지 여부와 관련하여 두 접근 방식 모두 유효하며 장점이 있습니다.

  • DLL 사용: 이 접근 방식을 사용하면 더 나은 모듈성과 캡슐화가 가능합니다. WebSocket 기능을 ERP 코드베이스와 별도로 유지하여 유지 관리가 더 쉽고 여러 프로젝트에서 잠재적으로 재사용이 가능합니다.


  • 직접 통합: WebSocket 코드를 ERP 소스에 직접 통합하면 배포가 단순화되고 종속성이 줄어듭니다. 그러나 특히 나중에 WebSocket 구현을 업데이트하거나 교체해야 하는 경우 코드베이스가 더 복잡해지고 유지 관리가 더 어려워질 수 있습니다.


궁극적으로 결정은 특정 요구 사항, 선호도 및 ERP 시스템 아키텍처에 따라 달라집니다. 여러 프로젝트에서 WebSocket 기능을 재사용해야 할 것으로 예상되거나 ERP 코드베이스를 더욱 깔끔하게 유지하려는 경우 이를 DLL로 패키징하는 것이 더 나은 옵션일 수 있습니다.

wansoo
  0 추천 | 약 한 달 전

CTI ( Computer Telephony Integration ) : 컴퓨터 전화 통합

KT 콜센터 서버를 사용하고 있는데...

1년 전쯤 콜센터 서버로 부터 전화한 상대편 전화번호를 가져와서 고객 DB로 부터 전화 걸어온 상대편에 대한 정보를 화면에 자동 표시해서 상담에 이용하기 위한 프로그램을 만들려고 시도했었던적이 있는데...

콜센터 서버가 웹 소켓을 통해 정보를 주고 받는 방식으로 작동되고 있어, 전화가 걸려 올려 걸려온 상대편 전화번호를 PC로 가져오는 것 까지 성공하고... 

처음에 작업 지시하셨던 최고 오너께서 전혀 다른 작업을 지시해서 해당 작업의 진행을 중단하게 되어 버렸었죠.


소켓 통신이라는 건 별게 아닙니다.

서버와 클라이언트가 통신을 할때 기본적으로 소켓 통신을 하게 됩니다.

서버가 특정 포트 번호를 지정해서 소켓을 열고 기다리고 있으면 클라이언트가 서버가 열고 있는 포트를 통해서 소켓에 연결되면서 서버와 클라이언트가 정보를 주고 받기 시작하게 되는 것입니다.


웹소켓이라는 것은 socket 통신 중에 웹 포트를 기반으로 통신 규격을 일정부분 표준화 시켜 둔 통신 방법이라 생각하면 될 것 같고요.

기존에 OCX 방식을 이용했다는 건... Socket 통신을 하는 미리 만들어둔 라이브러리를 이용했다는 걸 의미하고요.

다시 말해서 서버와 클라이언트의 통신은 소켓 통신입니다.

그 소켓 통신을 이용해서 telnet도 이용하고, FTP도 이용하고, mail도 이용하고, 웹도 이용하고, 유튜브도 보고 하는 것입니다.

소켓 통신을 하는 다양한 프로토콜들을 표준화 시켜두고서 좀 더 체계적인 방식으로 서버와 클라이언트가 통신을 하게 되는 것인거죠.


제일 먼저 확인하셔야 할 게 전화와 연결되어 있는 CallBox 서버 업체에서 제공하는 웹소켓의 구체적인 통신 규정 ( 프로토콜 )을 검토해야 할 것 같습니다.


서버에 접속할때는 어떻게 하고, 클라이언트 인증은 어떻게 하고, 그리고 접속하는 사용자 인증은 또 어떻게 하고, 서버에 어떤 내용으로 명령을 전달하고, 서버가 주는 답변들에 대해서 어떤 식으로 응답하면 되는지에 대한 정보를 주고 받는 통신 데이터 양식들을 확인하는게 가장 우선적으로 필요할 것 같아 보이고요.


각 개발 언어마다 웹소켓을 위한 라이브러리 기본 제공되거나 추가로 다운 받아서 사용할 수 있기 때문에 만들어져 있는 웹 소켓 라이브러리를 어떻게 설치하고 이용하는지에 대한 내용도 찾아 볼 필요가 있겠고요.


기존에 OCX를 이용했다 해서 걷어낸다거나 억지로 제거할 필요는 없습니다.

기존 통신 방식을 그대로 이용하면서 추가로 웹소켓 방식으로 연결해서 사용해도 되겠고...

보안이나 서버 성능 등등의 이유로 기존 방식을 서비스 중단하고 싶다면 서버에서 해당 통신에 대한 서비스를 중단 처리하는 되는 문제이기 때문에 새로운 통신 방식을 구축해서 안정화한 후에 결정해도 될 일이 되겠고요.


웹 소켓 통신으로 콜 박스로 부터 얻어올 정보만 제대로 주고 받을 수 있는 환경이 구성되고 난다면 그 다음 부터는 일반 프로그램을 개발하듯이 DB에 데이터를 조회해서 화면을 구성하고, 다양한 장치들을 제어해서 작업을 처리할 수 있도록 프로그램을 만들면 되는 내용이 되겠고요.


진행해야할 작업 내용은...

기존 통신 방식과는 별개로 소켓 통신을 하는 프로그램을 추가 개발하면 됩니다.