1.NXPROXY_RIO 개발가이드

Edit

1.1개요

NEXUSCUBE 와 연동하기 위한 nxproxy_rio API 개발 가이드 입니다.

1.2구성도

1.2.1싱글모드(Single)

1.2.2이중화모드(HA)

1.3브라우저 지원

기능

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari

버전 76 지원 

6

4.0 (2.0)

Not supported

11.00 (disabled)

5.0.1

버전 7 지원 

Not supported

6.0 (6.0)Moz

Not supported

Not supported

Not supported

버전 10 지원 

14

7.0 (7.0)Moz

HTML5 Labs

?

?

표준 - RFC 6455 지원

16

11.0 (11.0)

10

12.10

6.0

1.4JavaScript Sample

1.4.1접속과 해제

1.4.1.1Login & Logout Code Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
</head>
<body>
<button id="btnLogin" >Login</button>
<button id="btnLogout" >Logout</button> 

<script>
$("btnLogin").click(function(){
   // nxproxy_rio 서버의 IP/PORT 정보로 WebSocket을 생성합니다.
   socket = new WebSocket("ws://127.0.0.1:8877"); 

   // 정상적으로 생성이 되면 아래 onopen 이벤트가 발생됩니다.
   // 최초 login 메세지를 보내 id 인증을 요청합니다.
   // JQuery를 이용하여 메세지를 생성하여 발신합니다.
   // *자세한 필드 값은 본문 [Interface장] 에서 확인하시기 바랍니다.
   socket.onopen = function() {  
      var login = new Object();
      login.fname = "login";
      login.id = "cube";
      login.pwd = "cube123";
      socket.send(JSON.stringify(login));
   };

   // onmessage는 서버로 부터 수신되는 메시지 이벤트 입니다.
   // 주로 호출(socket.send())에 대한 response와 event message가 있습니다.
   // 최초 login message를 보내면 결과를 수신 할 수 있습니다. 
   // JSON을 이용하여 메시지를 수신하고 login에 대한 결과를 확인합니다.
   socket.onmessage = function(message) {
      console.log( message.data );       
   }


   // connection이 정상 종료가 되면 onclose를 발생합니다.
   socket.onclose = function() { console.log("Closed socket. "); };

   // connection 이 비정상 종료가 되면 onerror 를 발생합니다.
   // 이때는 client 에서 재접속이 필요합니다.
   socket.onerror = function() { console.log("Error during transfer. "); };
});

// logout 메시지를 생성하여 서버로 logout 요청을 합니다.
$("#btnLogout").click(function() {
   var logout = new Object();
   logout.fname = "logout";
   logout.id = "cube";
   socket.send(JSON.stringify(logout));
});
</script>
</body>
</html>

1.4.2Monitor 등록 및 해제

1.4.2.1addMonitor & removeMonitor Code Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.- 위의 Login 이 선행 되어야 합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
</head>
<body> 
<button id="btnAddMonitor" >AddMonitor</button>
<button id="btnRemoveMonitor" >removeMonitor</button>

<script>
//등록 할 Device 번호로 메시지를 생성하여 요청합니다.
$("#btnAddMonitor").click(function() {
   var addmonitor = new Object();
   addmonitor.fname = "addmonitor";
   addmonitor.device = "1001";
   socket.send(JSON.stringify(addmonitor));
});

//이벤트 수신의 종료를 원할 때 해제 하시기 바랍니다.
//해제 할 Device 번호로 메시지를 생성하여 요청합니다.
$("#btnRemoveMonitor").click(function() {
   var removemonitor = new Object();
   removemonitor.fname = "removemonitor";
   removemonitor.device = "1001";
   socket.send(JSON.stringify(removemonitor));
});
</script>
</body>
</html>
// 결과는 onmessage에서 확인 할 수 있습니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "addmonitor"){
      console.log("addmonitor 결과 : " + json.result );
   }

   if(json.fname == "removemonitor"){
      console.log("removemonitor결과 : " + json.result );
   }
}

1.4.3에이전트 상태 변경

에이전트의 상태 변경 예제 코드입니다.

1.4.3.1Logon Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.- 위의 Login 과 addMornitor 가 선행 되어야 합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
<body>
<button id="btnLogon" >Logon</button>
<script>
// 상태를 변경 할 Dn 번호와 에이전트 정보로 메시지를 생성하여 요청합니다.
$("#btnLogon").click(function() {
   var logon = new Object();
   logon.fname = "logon";
   logon.this = "1001";
   var agent = new Object();
   agent.id = "1001";
   agent.group = "401";
   agent.channel = "0";
   agent.wmode = "1";
   logon.agent = agent;
   socket.send(JSON.stringify(logon));
});
</script>
</body>
</html>
// 결과는 onmessage에서 확인 할 수 있습니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "logon"){
   console.log("상태변경 결과 : " + json.result );
   }
}
// onmessage에서 이벤트 수신을 확인하여 상태를 확인 할 수 있습니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( json.id ){
         case 201 :   //201 은 LoggedOn 상태 코드 입니다.
            console.log("Logon 상태 입니다. ");
         break;
      }
   }
}

1.4.3.2Logoff Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.- 위의 Login 과 addMornitor 가 선행 되어야 합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
<body>
<button id="btnLogoff">Logoff</button>
<script>
// 상태를 변경 할 Dn 번호와 에이전트 정보로 메시지를 생성하여 요청합니다.
$("#btnLogoff").click(function() {
   var logoff = new Object();
   logoff.fname = "logoff";
   logoff.this = "1001";
   var agent = new Object();
   agent.id = "1001";
   agent.reason = "0";
   logoff.agent = agent;
   socket.send(JSON.stringify(logoff));
});
</script>
</body>
</html>
// 결과는 onmessage에서 확인 할 수 있습니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "logoff"){
      console.log("상태변경 결과 : " + json.result );
   }
}
// onmessage에서 이벤트 수신을 확인하여 상태를 확인 할 수 있습니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( json.id ){
         case 202 : //202 는 LoggedOff 상태 코드 입니다.
         console.log("Logoff 상태 입니다. ");        
         break;
      }
   }
}

1.4.3.3Ready Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.- 위의 Login 과 addMornitor 그리고 Logon 이 선행 되어야 합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
<body>
<button id="btnReady">Ready</button>
<script>
// 상태를 변경 할 Dn 번호와 에이전트 정보로 메시지를 생성하여 요청합니다.
$("#btnReady").click(function() {
   var ready = new Object();
   ready.fname = "ready";
   ready.this = "1001";
   var agent = new Object();
   agent.id = "1001";
   agent.reason = "0";
   ready.agent = agent;
   socket.send(JSON.stringify(ready));
});
</script>
</body>
</html>
// 결과는 onmessage에서 확인 할 수 있습니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "ready"){
      console.log("상태변경 결과 : " + json.result );
   }
}
// onmessage에서 이벤트 수신을 확인하여 상태를 확인 할 수 있습니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( json.id ){
         case 204 : //204 는 ready 상태 코드 입니다.
            console.log("Ready 상태 입니다. ");        
         break;
      }
   }
}

1.4.3.4Not Ready Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.- 위의 Login 과 addMornitor 그리고 Logon 이 선행 되어야 합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
<body>
<button id="btnNotready">NotReady</button>
<script>
// 상태를 변경 할 Dn 번호와 에이전트 정보로 메시지를 생성하여 요청합니다.
$("#btnNotready").click(function() {
   var notready = new Object();
   notready.fname = "notready";
   notready.this = "1001";
   var agent = new Object();
   agent.id = "1001";
   agent.reason = "0";
   notready.agent = agent;
   socket.send(JSON.stringify(notready));
});
</script>
</body>
</html>
// 결과는 onmessage에서 확인 할 수 있습니다.
socket.onmessage = function(message){
   var json = $.parseJSON(message.data);
   if(json.fname == "notready"){
      console.log("상태변경 결과 : " + json.result );
   }
}
// onmessage에서 이벤트 수신을 확인하여 상태를 확인 할 수 있습니다.
socket.onmessage = function(message){
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( json.id ){
         case 203 : //203 은 Not ready 상태 코드 입니다.
            console.log("Not Ready 상태 입니다. ");
         break;
      }
   }
}

1.4.3.5After Work Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.- 위의 Login 과 addMornitor 그리고 Logon 이 선행 되어야 합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
<body>
<button id="btnAfterwork">AfterWork</button>
<script>
// 상태를 변경 할 Dn 번호와 에이전트 정보로 메시지를 생성하여 요청합니다.
$("#btnAfterwork").click(function() {
   var afterwork = new Object();
   afterwork.fname = "afterwork";
   afterwork.this = "1001";
   var agent = new Object();
   agent.id = "1001";
   agent.reason = "0";
   afterwork.agent = agent;
   socket.send(JSON.stringify(afterwork));
});
</script>
</body>
</html>
// 결과는 onmessage에서 확인 할 수 있습니다.
socket.onmessage = function(message){
   var json = $.parseJSON(message.data);
   if(json.fname == "afterwork"){
      console.log("상태변경 결과 : " + json.result );
   }
}
// onmessage에서 이벤트 수신을 확인하여 상태를 확인 할 수 있습니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( json.id ){
         case 206 : //206 은 After Work 상태 코드 입니다.
            console.log("After Work 상태 입니다. ");        
         break;
      }
   }
}

1.4.4호 발신 및 수신, 종료

1.4.4.1Dial Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.- 위의 Login 과 addMornitor이 선행 되어야 합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
</head>
<button id="btnDial" >Dial</button> 
<script>
//등록 할 Device 번호로 메시지를 생성하여 요청합니다.
$("#btnDial").click(function() {
   var dial = new Object();
   dial.fname = "dial";
   dial.this = "1001";
   dial.called = "1002";
   dial.uui = "user to user information data";
   var attach = new Object();
   attach.uei= "user extend information data";
   attach.ci= "campaign information data";
   dial.attach = attach;
   socket.send(JSON.stringify(dial));
});
</script>
</body>
</html>
//onmessage에서 이벤트 수신을 확인하여 
//Delivered 이벤트 (전화 발신성공 : 링이 울리는 상태) 를 확인 합니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( json.id ){
         case 4 : //4 는 Delivered 이벤트 코드 입니다.
            if( json.monitor == json.call.other ){
               console.log("호가 발신 되었습니다.");
            }
         break;
      }
   }
}

1.4.4.2Answer Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.

- Delivered (수신) 이벤트 상태에서 가능합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
</head> 
<button id="btnAnswer" >Answer</button>
<script>
// Delivered 이벤트 상태에서 Answer 버튼을 클릭하여 전화 받기를 요청합니다.
// 요청이 성공 하면 Established (호 연결) 이벤트가 발생 됩니다.

$("#btnAnswer").click(function() { 
   var answer = new Object();
   answer.fname = "answer";
   answer.this = "1001";
   // 수신된 Delivered 이벤트에서 Call ID (event.call.c1) 값을 이용 할 수 있도록 합니다.
   answer.c1 = "1";
   socket.send(JSON.stringify(answer));
});
</script>
</body>
</html>
// 전화받기 answer를 요청하면Established 이벤트가 발생됩니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( json.id ){
         case 6 : //6 은 Established 이벤트 코드 입니다.
            console.log("호가 연결 되었습니다.");        
         break;
      }
   }
}

1.4.4.3Clear Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.

- Established(통화 중) 이벤트 상태에서 가능합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
</head> 
<button id="btnClear" >Clear</button>
<script>
// Established 이벤트 상태에서 Clear 버튼을 클릭하여 전화 끊기를 요청합니다.
// 요청이 성공 하면 ConnectionCleared (호 끊김) 이벤트가 발생 됩니다.
$("#btnClear").click(function() { 
   var clear = new Object();
   clear.fname = "clear";
   clear.this = "1001";
   // 수신된 이벤트에서 통화중인(Delivered or Established) Call ID (event.call.c1) 값을 이용 할 수 있도록 합니다.
   clear.c1 = "1";
   socket.send(JSON.stringify(clear));
});

</script>
</body>
</html>
// 전화끊기 clear를 요청하면ConnectionCleared 이벤트가 발생됩니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
      if(json.fname == "event"){
         switch( json.id ){
            case 3 : //3 은 ConnectionCleared이벤트 코드 입니다.
         console.log("호가 종료 되었습니다.");        
         break;
      }
   }
}

1.4.5보류 및 회수

1.4.5.1Hold Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.

- Established (통화 중) 이벤트 상태에서 가능합니다

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
</head> 
<button id="btnHold" >Hold</button>
<script>
// Established 이벤트 상태에서 Hold 버튼을 클릭하여 통화 보류를 요청합니다.
// 요청이 성공 하면 Held (통화 보류) 이벤트가 발생 됩니다.
$("#btnHold").click(function() { 
   var hold= new Object();
   hold.fname = "hold";
   hold.this = "1001";
   //수신된 이벤트에서 통화중인(Delivered or Established) Call ID (event.call.c1) 값을 이용 할 수 있도록 합니다.
   hold.c1 = "1";
   socket.send(JSON.stringify(hold));
});
</script>
</body>
</html>
// 통화 보류 hold 를 요청하면held 이벤트가 발생됩니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( json.id ){
         case 8 : //8 은 held 이벤트 코드 입니다.
            console.log("호가 보류 되었습니다.");
         break;
      }
   }
}

1.4.5.2Retrieve Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.

- Held (호 보류) 이벤트 상태에서 가능합니다

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
</head> 
<button id="btnRetrieve" >Retrieve</button>
<script>
// Held 이벤트 상태에서Retrieve 버튼을 클릭하여 통화 회수를 요청합니다.
// 요청이 성공 하면 retreived (호 회수) 이벤트가 발생 됩니다.

$("#btnRetrieve").click(function() { 
   var retrieve = new Object();
   retrieve.fname = "retrieve";
   retrieve.this = "1001";
   // 수신된 이벤트에서 통화중인(Delivered or Established) Call ID (event.call.c1) 값을 이용 할 수 있도록 합니다.
   retrieve c1 = "1";
   socket.send(JSON.stringify(retrieve));
});
</script>
</body>
</html>
// 호 회수 retrieve를 요청하면 Retrieved 이벤트가 발생됩니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( json.id ){
         case 12 : //12 은 Retrieved 이벤트 코드 입니다.
            console.log("호가 회수 되었습니다.");        
         break;
      }
   }
}

1.4.6협의, 전환, 회의

1.4.6.1Consult Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.

- Established (통화 중) 이벤트 상태에서 가능합니다

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
</head> 
<button id="btnConsult" >Consult</button>
<script>
// Established 이벤트 상태에서 Consult 버튼을 클릭하여 협의 통화를 요청합니다.
// 요청이 성공 하면 Delivered (전화 연결) 이벤트가 발생 됩니다.

$("#btnConsult").click(function() { 
   var consult = new Object();
   consult.fname = "consult";
   consult.this = "1001";
   // 수신된 이벤트에서 통화중인(Delivered or Established) Call ID (event.call.c1) 값을 이용 할 수 있도록 합니다.
   consult.c1 = "1";
   consult.called = "1002";
   consult.mode = "0"; //mode 0 : Transfer , mode 1 : Confer
   consult.uui = "user to user information data";
   var attach = new Object();
   attach.uei = "user extend information data";
   attach.ci = "campaign information data";
   consult.attach = attach;
   socket.send(JSON.stringify(consult));
});
</script>
</body>
</html>
// 협의 통화 Consult 가 성공되면 Ctype = 4로 들어오는 협의 Delivered 이벤트가 발생됩니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( event.id ){
         case 4 : //4 는 Delivered 이벤트 코드 입니다.
            if ( json.ctype == 4){ //협의 요청 시
               if( json.monitor == json.call.other ) //협의 발신 시
                  console.log("협의 호가 발신 되었습니다.");
               else //협의 수신 시
                  console.log("협의 호가 수신 되었습니다.");
               }
            break;
      }
   }
}

1.4.6.2Transfer Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.

- Consult ( mode : 0 )요청 후Established (통화 중) 이벤트 상태에서 가능합니다

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
</head> 
<button id="btnTransfer" >Transfer</button>
<script>
// Consult (mode : 0 ) 요청 후 Established(협의 통화 중) 상태에서 Transfer 버튼을 클릭하여 전환 통화를 요청합니다.
// 요청이 성공 하면 Transferred (전환) 이벤트가 발생 됩니다.

$("#btnTransfer").click(function() {
   var transfer = new Object();
   transfer.fname = "transfer";
   transfer.this = "1001";
   // 수신된 이벤트에서 통화중인(Delivered or Established) Call ID (event.call.c1) 값을 이용 할 수 있도록 합니다.
   transfer.c1 = "1";
   transfer.held = "1002";
   //held 이벤트에서 추출한 Call ID (event.call.c1) 값을 이용 할 수 있도록 합니다.
   transfer.c2 = "2";
   socket.send(JSON.stringify(transfer));
});
</script>
</body>
</html>
// 전환 통화 Trensfer 가 성공되면 Transferred 이벤트가 발생됩니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( event.id ){
         case 14 : //14 는 Transferred 이벤트 코드 입니다.
            console.log("Transferred 이벤트 입니다.");
         break;
      }
   }
}

1.4.6.3Confer Sample

- 해당 Sample Code에는 Jquery2.x 가 사용 되었습니다.

- Consult ( mode : 1 )요청 후Established (통화) 이벤트 상태에서 가능합니다

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script   src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>
</head> 
<button id="btnConfer" >Confer</button>
<script>
// Consult ( mode : 1 ) 요청 후 Established 이벤트 상태에서 Confer 버튼을 클릭하여 회의 통화를 요청합니다.
// 요청이 성공 하면 Conferenced(회의 통화) 이벤트가 발생 됩니다.

$("#btnConfer").click(function() {
   var confer = new Object();
   confer.fname = "confer";
   confer.this = "1001";
   // 수신된 이벤트에서 통화중인(Delivered or Established) Call ID (event.call.c1) 값을 이용 할 수 있도록 합니다.
   confer.c1 = "1";
   confer.held = "1002";
   //held 이벤트에서 추출한 Call ID (event.call.c1) 값을 이용 할 수 있도록 합니다.
   confer.c2 = "2";
   socket.send(JSON.stringify(confer));
});
</script>
</body>
</html>
// 회의 통화 Confer 가 성공되면 Conferenced 이벤트가 발생됩니다.
socket.onmessage = function(message){  
   var json = $.parseJSON(message.data);
   if(json.fname == "event"){
      switch( json.id ){
         case 2 : //2 는 Conferenced 이벤트 코드 입니다.
            console.log("Conferenced 이벤트 입니다.");        
         break;
      }
   }
}

1.5Interface (Json)

* Interface의 Type과 Range는 버전에 따라 변경 될 수 있습니다.

1.5.1정의

object { Key : Value, Key : Value }

object { Key : Value, Key : obejct { Key : Value } }

1.5.1.1사용 예

1.5.1.1.1case1

request Message(Add Monitor)

{
   "fname":"addmonitor",
   "device":"1001"
}

1.5.1.1.2case2

response Message

{    
   "fname":"addmonitor", 
   "device":"1001",
   "result":"1"
}

1.5.1.1.3case3

request Message(dial)

{
   "fname":"dial",
   "this":"1001",
   "called":"1002",
   "uui":"User2UserInfo",
   "attach":
   {
      "uei":"ueisize1024",
      "ci":"cisize1024"
   }
}

1.5.1.1.4case4

response Message

{
   "fname":"dial",
   "this":"1001",
   "called":"1002",
   "uui":"User to User Information Data",
   "attach":
   {
      "uei":"User Extend Information Data",
      "ci":"Campaign Information Data"
   },
   "result":"2011"
}

1.5.2Session

1.5.2.1Login


key

range

M/O

type

desc

request

fname

login

M

String

서비스 이름

Id

24(한글,특수문자 제외)

M

String

유저 아이디

pwd


M

String

유저 비밀번호

response

request messagem


result

1


Integer

결과

1.5.2.2logout


key

range

M/O

type

desc

request

fname

logout

M

String

서비스 이름

id

24(한글,특수문자 제외)

M

String

유저 아이디

response

request message


result

1


Integer

결과

1.5.2.3addMonitor


key

range

M/O

type

desc

request

fname

addmonitor

M

String

서비스 이름

device

64

M

String

모니터 등록 요청 Device

response

request message


result

1


Integer

결과

1.5.2.4removeMonitor


key

range

M/O

type

desc

request

fname

removemonitor

M

String

서비스 이름

device

64

M

String

모니터 해제 요청 Device

response

request message


result

1


Integer

결과

1.5.3Switch

1.5.3.1dial


key

range

M/O

type

desc

request

fname

dial

M

String

서비스 이름

this

64

M

String

발신자 번호

called

64

M

String

수신자 번호

uui

256

O

String

User to User Information Data

attach

uei

1024

O

String

User Extend Information Data

ci

1024

O

String

Campaign Information Data

response

request messageo


result

1


Integer

결과

1.5.3.2answer


key

range

M/O

type

desc

Request

fname

answer

M

String

서비스 이름

this

64

M

String

수신자 번호

c1

0 < n < 32767

M

Integer

콜 아이디

response

request message


result

1


Integer

결과

1.5.3.3clear


key

range

M/O

type

desc

request

fname

clear

M

String

서비스 이름

this

64

M

String

수신자 번호

c1

0 < n < 32767

M

Integer

콜 아이디

response

request message


result

1


Integer

결과

1.5.3.4hold


key

range

M/O

type

desc

request

fname

hold

M

String

서비스 이름

this

64

M

String

수신자 번호

c1

0 < n < 32767

M

Integer

콜 아이디

response

request message


result

1


Integer

결과

1.5.3.5retrieve


key

range

M/O

type

desc

request

fname

retrieve

M

String

서비스 이름

this

64

M

String

수신자 번호

c1

0 < n < 32767

M

Integer

콜 아이디

response

request message


result

1


Integer

결과

1.5.3.6singletransfer


key

range

M/O

type

desc

request

fname

sstransfer

M

String

서비스 이름

this

64

M

String

수신자 번호

c1

0 < n < 32767

M

Integer

콜 아이디

called

64

M

String

협의 대상자 번호

uui

256

O

String

User to User Information Data

attach

uei

1024

O

String

User Extend Information Data


ci

1024

O

String

Campaign Information Data

response

request messagem


result

1


Integer

결과

1.5.3.7consult


key

range

M/O

type

desc

request

fname

consult

M

String

서비스 이름

this

64

M

String

수신자 번호

c1

0 < n < 32767

M

Integer

콜 아이디

called

64

M

String

협의 대상자 번호

mode

0 / 1

M

Integer

0=TRANSFER / 1=CONFERENCE

uui

256

O

String

User to User Information Data

attach

uei

1024

O

String

User Extend Information Data


ci

1024 byte

O

String

Campaign Information Data

response

request message


result

1


Integer

결과

1.5.3.8confer


key

range

M/O

type

desc

request

fname

confer

M

String

서비스 이름

this

64

M

String

수신자 번호

c1

0 < n < 32767

M

Integer

Active 콜 아이디

held

64

M

String

Held 대상자 번호

c2

0 < n < 32767

M

Integer

Held 콜 아이디

response

request message


result

1


Integer

결과

1.5.3.9transfer


key

range

M/O

type

desc

request

fname

transfer

M

String

서비스 이름

this

64

M

String

수신자 번호

c1

0 < n < 32767

M

Integer

Active 콜 아이디

held

64

M

String

Held 대상자 번호

c2

0 < n < 32767

M

Integer

Held 콜 아이디

response

request messagem


result

1


Integer

결과

1.5.3.10bargein


key

range

M/O

type

desc

request

fname

bargein

M

String

서비스 이름

this

64

M

String

수신자 번호

called

0 < n < 2^31

M

String

감청 대상자 번호

response

request message


result

1


Integer

결과

1.5.4Agent

1.5.4.1logon


key

range

M/O

type

desc

request

fname

logon

M

String

서비스 이름

this

64

M

String

수신자 번호

agent

id

64

M

String

agent ID

group

0 < n < 10^6

M

String

그룹

channel

0 <= n < 8

M

String

로그인 채널

voice = 0

twitter = 1

facebook = 2

reserved = 3

chat = 4

video = 5

email = 6

fax = 7

wmode

0 < n < 5

M

Integer

AUX_WORK = 1

AFTCAL_WK = 2

AUTO_IN = 3

MANUAL_IN = 4

response

request message


result

1


Integer

결과

1.5.4.2logoff


key

range

M/O

type

desc

request

fname

logoff

M

String

서비스 이름

this

64

M

String

수신자 번호

agent

id

64

M

String

agent ID

group

0 < n < 10^6

M

String

그룹

reason

0< n <= 9

M

String

사유 코드

response

request message


result

1


Integer

결과

1.5.4.3notready


key

range

M/O

type

desc

request

fname

notready

M

String

서비스 이름

this

64

M

String

수신자 번호

agent

id

64

M

String

agent ID

reason

0< n <= 9

M

String

사유 코드

response

request message


result

1


Integer

결과

1.5.4.4ready


key

range

M/O

type

desc

request

fname

ready

M

String

서비스 이름

this

64

M

String

수신자 번호

agent

id

64

M

String

agent ID

reason

0< n <= 9

M

String

사유 코드

response

request message


result

1


Integer

결과

1.5.4.5afterwork


key

range

M/O

type

desc

request

fname

afterwork

M

String

서비스 이름

this

64

M

String

수신자 번호

agent

id

64

M

String

agent ID

reason

0< n <= 9

M

String

사유 코드

response

request messagem


result

1


Integer

결과

1.5.5Event

1.5.5.1Event


key

type

desc

event

fname

String

event (고정값)

id

Integer

이벤트 번호

msid

Integer

미디어 번호

this

String

이벤트 대상 번호

cnid

String

콜 고유 번호

cnsq

Integer

콜 고유 번호 시퀀스

tag

Integer


ftime

String

서버 이벤트 발행 시간

yyyy/mm/dd/hh/mm/ss/msec

2016/02/04 15:28:43.01

call

c1

Integer

Call의 reference ID

c2

Integer

Call이 변경 되었을 경우 첫번째 Call ID

c3

Integer

Call이 변경 되었을 경우 두번째 Call ID

cause

Integer

Event Cause

ctype

Integer

콜 타입1 : Inbound 2 : Outbound

3 : Internal 4 : Consult

5 : Transfer 6 : Conference

ohter

Integer

Calling Device가 MonitorParty와 다를 때 Calling Device (ANI)

third

Integer

Calling Device가 monitor와 같을 때의 Calling Device

called

Integer

회의 또는 전환 호일 때 협의를 시도한 Device

origin

Integer

Inbound Call에 대한 교환기의 entry point 또는 Outbound Call에 대한 교환기의 exit point

uui

String

User to User Information Data

queue

dn

Integer

Queue 번호

wqueue

Integer

Queue에 대기중인 호의 개수

wtime

Integer

Queue에 대기중인 호의 대기시간

attach

uei

Integer

User Extend Information Data

ci

Integer

Campaign Information Data

agent

id

String

Agent ID

reason

Integer

사유 코드

wmode

Integer

로그인시 설정된 Work Mode

1.6ErrorCode

1.6.1nxproxy

1.6.1.1rio에 대한 ErrorCode 정의

name

value

desc

SUCCSSS

1

성공

NOT_SUPPORT

-4001

알수 없는 서비스명

RESPONSE_FAIL

-4005

응답실패

TIME_OUT

-4006

응답타임아웃

LOGIN_FAIL

-4007

로그인 실패

BAD_LOGIN

-4008

유효하지 않은 세션 (로그인 상태 아님)

MONITOR_ADD_FALL

-4009

모니터 추가 실패

INVALID_JSON_TYPE

-4010

Json 형식 에러

INVALID_PARAMS

-4011

필수 값 누락

SERVER_UNKNOWN

-4901

미들웨어 연결 안됨

1.6.2Web Socket

1.6.2.1Web Socket에 대한 ErrorCode 정의

name

value

desc

CLOSE_NORMAL

1000

Normal closure; the connection successfully completed whatever purpose for which it was created.

CLOSE_GOING_AWAY

1001

The endpoint is going away, either because of a server failure or because the browser is navigating away from the page that opened the connection.

CLOSE_PROTOCOL_ERROR

1002

The endpoint is terminating the connection due to a protocol error.

CLOSE_UNSUPPORTED

1003

The connection is being terminated because the endpoint received data of a type it cannot accept (for example, a text-only endpoint received binary data).

CLOSE_NO_STATUS

1005

Reserved. Indicates that no status code was provided even though one was expected.

CLOSE_ABNORMAL

1006

Reserved. Used to indicate that a connection was closed abnormally (that is, with no close frame being sent) when a status code is expected.

Unsupported Data

1007

The endpoint is terminating the connection because a message was received that contained inconsistent data (e.g., non-UTF-8 data within a text message).

Policy Violation

1008

The endpoint is terminating the connection because it received a message that violates its policy. This is a generic status code, used when codes 1003 and 1009 are not suitable.

CLOSE_TOO_LARGE

1009

The endpoint is terminating the connection because a data frame was received that is too large.

Missing Extension

1010

The client is terminating the connection because it expected the server to negotiate one or more extension, but the server didn't.

Internal Error

1011

The server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request.

Service Restart

1012

The server is terminating the connection because it is restarting.

Try Again Later

1013

The server is terminating the connection due to a temporary condition, e.g. it is overloaded and is casting off some of its clients.


1014


TLS Handshake

1015

Reserved. Indicates that the connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can't be verified).