1.NxWebApi 개발 가이드 문서

Edit

변경내역

이슈

날짜

변경 사항

기타

Release 1.0

2018.09.19

2018.09.27

2018.10.01

2018.10.02

2018.10.05

2018.10.10

2018.10.11

2018.10.31

2019.01.22


2019.03.12

2019.05.03


2020.11.24

2021.03.16

2021.03.25

2021.04.22

2021.05.11

2021.05.12

2022.04.06

2022.05.06

2022.06.20



2023.11.14

양산 초품

API 흐름도 추가

Json Data 추가 (id)

Consultation Call 추가

Connecting Event 추가

Remote Hold/Resume 성공 Event 처리

Dtmf 신호 추가

서버 재접속 관련 로직 추가

화상 및 화면공유 추가

Message Packet 처리 추가

Receive Status에 media 추가

login, mute Parameter 추가

화면 전환 기능 추가(ChangeDevice)

추가기능 정의

착신전환 기능 추가

금칙어 알람 메시지 추가

시나리오봇 추가

고객 영상 통화 추가

카카오채팅 연동 추가

CTI Gateway 연동 추가

네이버톡톡 연동추가

채팅 감청 기능 추가

카메라 전환 함수 추가

Grissom













Kenneth

Kenneth

Kenneth

Kenneth

Kenneth

Kenneth

Kenneth

Kenneth

Kenneth



Kenneth

본 매뉴얼의 내용은 사전 통지 없이 변경될 수 있으며, 사용하는 그림은 예시를 위한 것으로 실제와 다를 수 있습니다. 또한 별도 설명이 없는 한 용례에 사용된 회사, 이름, 데이터 등은 실제 데이터가 아닙니다.


넥서스의 서면 승인 없이는 어떠한 형식으로도 본 매뉴얼의 일부 또는 전부를 무단으로 복제하거나 사용할 수 없으며, 넥서스는 본 매뉴얼의 기술상 또는 편집상 오류나 누락에 대해 책임지지 않습니다.

ⓒ 2012 NEXUS Inc., All rights reserved.


소프트웨어 제품 (소프트웨어 제품에 포함된 모든 이미지 사진, 애니메이션, 비디오, 오디오, 음악, 텍스트 등), 부속 인쇄물, 소프트웨어의 복사본 등에 대한 소유권 및 저작권은 넥서스에 있습니다. 넥서스와의 사용권 계약에 따라 계약서에 명기된 사항을 제외하고는 본 매뉴얼의 구입이 특허권, 상표권, 저작권, 지적 소유권 등의 양도를 의미하는 것은 아닙니다. 넥서스의 제품과 매뉴얼은 저작권법에 의해 보호됩니다.

1.1목적

이 문서는 WAiV API가이드 문서입니다.

1.2범위

이 문서 사용범위는 관련된 엔지니어가 사용합니다.
이 문서 사용범위는 관련된 개발자가 사용합니다.

1.2.1API연동 하기

1.2.1.1연동하기

nxWebApi.js를 html에 소스 추가합니다.

<script src="./nxWebApi.js"></script>

html에 <audio> 추가합니다. (상대방 음성 송출을 위해 필요합니다.)

<audio id="audio_remote" autoplay="autoplay"> </audio>

1.2.1.2API 기본 흐름도

그림 1-1API 흐름도

1.3개발가이드

1.3.1기능리스트

1.3.1.1서버 접속 및 로그인

Function
nxWebApi.Login(ip, id, password, dn, display_name, websocket_url, push_token, server_reconnect_cnt, server_reconnect_term,user_agent, use_subscribe, register_kind, user_id, location);
Parameters

Name

Type

Descrption

Ip

string

서버명(realm)

Id

string

로그인 아이디

Password

string

로그인 비밀번호

Dn

string

내선번호

display_name

string

표시 이름 - 내선번호랑 동일하게

websocket_url

string

웹소켓 주소 -U PBX 주소

push_token

string

모바일 푸쉬 토큰(미사용시 : "default") - 모바일에서만 사용

server_reconnect_cnt

string

서버 재접속 시도 횟수 설정 (기본값 : 5회)

server_reconnect_term

string

서버 재접속 시도 주기(기본값 : 5밀리초)

user_agent

string

User의 정보

use_subscribe

Bool

채팅 이벤트 수신 여부(true or false)

register_kind

string

로그인 시도 시 로그인 종료 설정(기본값 : "call")

채팅 로그인시 'chat' 으로 세팅

user_id

string

미사용

location

string

User의 위치 정보 - 모바일에서만 사용

Stun servers

string

Stun 서버 값 ( 빈값은 "[]")

[전화 로그인 샘플]

nxWebApi.Login($("#realm").val(),
            $("#agentId").val(),
            $("#agentPwd").val(),
            $("#agentDn").val(),
            $("#agentDn").val(),
            $("#serverUrl").val(),
            'ios-token-key',2,2000,'',true,'call','',null, '[]');

[채팅 로그인 샘플]

nxWebApi.Login($("#realm").val(),
                       $("#agentId").val(),
                       $("#agentPwd").val(),
                       $("#agentDn").val(),
                       $("#agentDn").val(),
            $("#serverUrl").val(),
            '',2,2000,'',true,'chat');
Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

실제 로그인 결과에 대한 응답은 3.1.3 Callback 으로 들어옵니다.

아래 CallBack 설정(Response) 항목을 참조 하세요.

1.3.1.2로그아웃

내선 인증을 해제하고, 서버에 연결을 종료 합니다.

is_reload 가 true 일 경우 로그아웃시 화면을 리로드 합니다.

Function
nxWebApi.Logout(desc, is_reload);
Parameters

Name

Type

필수

Descrption

desc

string

N

설명

is_reload

Bool

N

화면 리로드 설정(기본값은 true)

None

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.3CallBack 설정(Response)

CallBack String 의 경우 CallBack 응답 json 구조 항목을 참고해 주세요.

아래 SIPCallBack 설정 을 사용하시면, 실제 SIP protocal 을 이용해서 주고 받는 패킷을 볼수 있습니다.

Function
nxWebApi.SetCallBack(function_name);
Parameters

Name

Type

Descrption

function_name

function(string)

CallBack Event 받을 function 이름

파라미터의 경우 JSON 형식의 String 값이 들어옵니다.

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

Example code
//Callback 설정 함수
function SetCallBackTest() {
    console.log("SetCallBackTest");
    nxWebApi.SetCallBack(CallbackTest); //function point
}

//Callback Event 함수
function CallbackTest(callBackData) {
    console.log(callBackData) //json Data
}

1.3.1.4SIPCallBack 설정(SIP Packet)

실제 함수 호출시 SIP Packet 의 수신/발신 데이터를 콜백으로 전달 하는 함수 입니다.

디버깅 용도로 사용합니다. 실제 적용시는 제거해도 무방합니다.

Function
nxWebApi.SetSIPCallBack(function_name);
Parameters

Name

Type

Descrption

function_name

function(string)

SIP Packet CallBack Event 받을 function 이름

파라미터는 SIP packet string 입니다.

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

Example code
//SIP Packet Callback 설정 함수
function SetCallBackTest() {
    console.log("SetCallBackTest");
    nxWebApi.SetSIPCallBack(CallbackTest); //function point
}

//SIP Packet Callback Event 함수
function CallbackTest(callBackData) {
    console.log(callBackData) //string
}

1.3.1.5전화 걸기

Function
nxWebApi.MakeCall(callnum, type, location);
Parameters

Name

Type

필수

Descrption

callnum

string

Y

발신 번호

type

string

N

전화 타입 (default : Audio)

1. Audio : 음성

2. Video : 화상

3. AudioVideo : 음성,화상

4. ScreenShare : 화면공유

location

string

N

User의 위치정보

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.6전화 응답

수신된 전화에 대해 응답을 합니다.

Function
nxWebApi.Answer(call_id);
Parameters

Name

Type

필수

Descrption

call_id

string

N

콜백 응답으로 전달되는 Cid 값

멀티콜 사용시 특정 콜에 대한 응답시 사용

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.7통화 종료

수신 또는 통화중인 전화를 종료 합니다.

Function
nxWebApi.Clear(call_id);
Parameters

Name

Type

필수

Descrption

call_id

string

N

콜백 응답으로 전달되는 Cid 값

멀티콜 사용시 특정 콜에 대한 응답시 사용

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.8통화 보류

Function
nxWebApi.Hold();
Parameters

None

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.9통화 보류 해제

Function
nxWebApi.Resume();
Parameters

None

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.10통화 전달

Function
nxWebApi.Transfer(transfernum,type);
Parameters

Name

Type

필수

Descrption

transfernum

string

Y

전화를 전달 할 전화번호

type

string

N

기본값은 null

Message : 채팅 전달일 경우 사용

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.11메시지

Function
nxWebApi.Message(to, message, kind)
Parameters

Name

Type

Descrption

to

string

내용을 받을 DN 번호

message

string

내용

kind

string

chat : 채팅 관련(Default)

roster : 사용자 정보 관련

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.12DTMF(Dual Tone Multiple Frequency)

1.3.1.12.1DTMF(INFO 메시지)

Function
nxWebApi.Dtmf(message);
Parameters

Name

Type

Descrption

Message

String

전송 될 신호

( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *, #)

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.12.2DTMF(in Band 우선모드)

Function
nxWebApi.Insert_Dtmf(message);
Parameters

Name

Type

Descrption

Message

String

전송 될 신호

( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *, #)

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.13DND(Do Not Disturb)

Function
nxWebApi.Dnd(enable);
Parameters

Name

Type

Descrption

enable

bool

true : DND

false: DND 해지

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.14카메라 전환(안드로이드폰에서 사용 가능)

Function
nxWebApi.ChangeDevice();
Parameters

None

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.15송화차단

자신의 마이크 음성이 상대방에게 전달하지 않게 합니다.

Function
nxWebApi.Mute(type, enable);
Parameters

Name

Type

Descrption

type

string

송화차단 할 미디어

Audio: 음성

Video:영상

AudioVideo: 음성 + 영상

enable

bool

true : 송화차단,

false: 송화차단 해지

1.3.1.16DTLS 설정

Function
nxWebApi.SetDtls(dtlsUse);
Parameters

Name

Type

Descrption

dtlsUse

bool

true : dtlss 사용,

false: dtls 미사용 (default)

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.17수신중 착신전환

전화 수신중 다른 전화번호로 착신전환 합니다.

Function
nxWebApi.MovedTemporarily(number);
Parameters

Name

Type

Descrption

Number

String

착신전환할 전화번호(DN)

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.18착신전환 설정

통화 수신시 자동으로 착신전환 처리 합니다.

웹브라우저의 로컬저장소에 설정이 저장되어서, 캐쉬 삭제시 설정이 초기화 됩니다.

Function
nxWebApi.SetCallMove(number);
Parameters

Name

Type

Descrption

Number

String

착신전환할 전화번호(DN)

빈값일 경우 착신전환 해제

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.19Video Frame Rate 설정

웹브라우저의 로컬저장소에 설정이 저장되어서, 캐쉬 삭제시 설정이 초기화 됩니다.

Function
nxWebApi.SetVideoFrameRate(maxFrameRate);
Parameters

Name

Type

Descrption

maxFrameRate

Int

Default : 15

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.3.1.20감청(콜아이드)

콜아이드(Cid) 를 사용하여 감청을 합니다.

Function
nxWebApi.MonitorCall( callNum, callId, type );
Parameters

Name

Type

필수

Descrption

callNum

string

Y

monitor(고정)

callId

string

Y

감청할 콜아이디(Cid)

Type

string

N

Audio:음성통화(기본값)

Video: 영상통화

Message:채팅

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

Example code
var cid = "NX_00010044630732B30242";
if( cid.length > 0 && txtTo.length > 0 ){
   nxWebApi.MonitorCall('monitor', cid);
}

1.3.1.21감청(내선 번호)

통화중인 내선 정보를 이용해서 감청을 합니다.

Function
nxWebApi.MonitorCallWithFromTo( callNum, fromDN, toDN, Type );
Parameters

Name

Type

필수

Descrption

callNum

string

Y

monitor(고정)

fromDN

string

Y

감청할 빌신 DN

toDN

string

Y

감청할 수신 DN

Type

string

N

Audio:음성통화(기본값)

Video: 영상통화

Message:채팅

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

Example code
var txtFrom = "1001";
var txtTo = "1002";
if( txtFrom.length > 0 && txtTo.length > 0 ){
   nxWebApi.MonitorCallWithFromTo('monitor', txtFrom, txtTo);
}

1.3.1.22카메라 전환

통화중인 카메라를 전환 합니다.(전방, 후방)

Function
nxWebApi.VideoDeviceSwitch();
Parameters

[NONE]

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

Example code
var result = nxWebApi.VideoDeviceSwitch();
console.log("camera switch : "+ result );

1.3.2CallBack 응답 json 구조

1.3.2.1구조

Node1

Node2

Descrption

Kind


이벤트 종류(SIP or CTI)

Type


이벤트 Type

Data

status

이벤트 상태

desc

이벤트 설명

dn

상대방 번호

result

성공 유무

id

세션 고유 id

1.3.3CallBack Type별 설명 및 응답

Callback 이 발생하지 않을경우는 실제 네트워크로 데이터가 전송이 일어 나지 않았을 경우 입니다.

네트워크가 정상적인지 먼저 체크해 주세요.

1.3.3.1SetCallBack

{
  "Type": "SetCallBack",
  "Data": {
    "result": "Success"
  }
}

1.3.3.2SetSIPCallBack

{
  "Type": "SetSIPCallBack",
  "Data": {
    "result": "Success"
  }
}

1.3.3.3Init(Sip Stack)

성공
{
  "Kind": "SIP",
  "Type": "Init",
  "Data": {
    "status": "init_ok",
    "desc": "OK"
  }
}
실패
{
  "Kind": "SIP",
  "Type": "Init",
  "Data": {
    "status": "init_failed",
    "desc": "INIT FAILED(-1)"
  }
}
종료(시작이후 네트워크 이슈등으로 Stack 이 종료됨)
{
  "Kind": "SIP",
  "Type": "Init",
  "Data": {
    "status": "stopped",
    "desc": "Stack stopped"
  }
}

1.3.3.4Register

성공
{
  "Kind": "SIP",
  "Type": "Register",
  "Data": {
    "status": "connected",
    "desc": "OK"
  }
}
실패
{
  "Kind": "SIP",
  "Type": "Register",
  "Data": {
    "status": "terminated",
    "desc": "Disconnected"
  }
}

1.3.3.5Connecting

{
  "Kind": "SIP",
  "Type": "Connecting",
  "Data": {
    "status": "connecting",
    "desc": "Call in progress...",
    "dn": "2590",
    "id": 2
  }
}

1.3.3.6Trying

{
  "Kind": "SIP",
  "Type": "Trying",
  "Data": {
    "status": " i_ao_request",
    "desc": "Trying",
    "dn": "3008",
    "id": 7
  }
}

1.3.3.7Ringing

{
  "Kind": "SIP",
  "Type": "Ringing",
  "Data": {
    "status": " i_ao_request",
    "desc": "Ringing",
    "dn": "3008",
    "id": 7
  }
}

1.3.3.8Receive

{
  "Kind": "SIP",
  "Type": "Receive",
  "Data": {
    "status": "i_new_call",
    "desc": "Incoming Call",
    "dn": "3008",
    "id": 7,
    "media": "audio or video"
  }
}

1.3.3.9InCall

{
  "Kind": "SIP",
  "Type": "InCall",
  "Data": {
    "status": "connected",
    "desc": "In call",
    "dn": "3008",
    "id": 7
  }
}

1.3.3.10RemoteHold

요청
{
  "Kind": "SIP",
  "Type": "RemoteHold",
  "Data": {
    "status": "m_remote_hold",
    "desc": "Hold/Resume state changed",
    "dn": "3008",
    "id": 7
  }
}
완료
{
  "Kind": "SIP",
  "Type": "RemoteHold",
  "Data": {
    "status": "m_remote_hold_ok",
    "desc": "Incoming Request ",
    "dn": "3008",
    "id": 7
  }
}

1.3.3.11RemoteResume

요청
{
  "Kind": "SIP",
  "Type": "RemoteResume",
  "Data": {
    "status": "m_remote_resume",
    "desc": "Hold/Resume state changed",
    "dn": "3008",
    "id": 7
  }
}
완료
{
  "Kind": "SIP",
  "Type": "RemoteResume",
  "Data": {
    "status": "m_remote_resume_ok",
    "desc": "Incoming Request ",
    "dn": "3008",
    "id": 7
  }
}

1.3.3.12Message

발신
{
  "Kind": "SIP",
  "Type": "Message",
  "Data": {
    "status": "i_message_send",    
    "desc": "Send message",
    "content": "테스트"
  }
}
수신
{
  "Kind": "SIP",
  "Type": "Message",
  "Data": {
    "status": "i_new_message",
    "desc": "Incoming  Request",
    "content": "테스트"
  }
}

1.3.3.13Hold

{
  "Kind": "SIP",
  "Type": "Hold",
  "Data": {
    "status": "m_local_hold_ok",
    "desc": "OK",
    "dn": "2590",
    "id": 5
  }
}

1.3.3.14Resume

{
  "Kind": "SIP",
  "Type": "Resume",
  "Data": {
    "status": "m_local_resume_ok",
    "desc": "OK",
    "dn": "2590",
    "id": 5
  }
}

1.3.3.15Clear

{
  "Kind": "SIP",
  "Type": "Clear",
  "Data": {
    "status": "terminated",
    "desc": "Call terminated",
    "dn": "2590",
    "id": 5
  }
}

1.3.3.16Message_C(알람 메시지)

표 1-1content 상세 정보

구분

타입

설명

type

text

알람 : alarm

code

text

금칙어 : C00001

message

text

금칙어

{
  "Kind": "SIP",
  "Type": "Message_C",
  "Data": {
    "status": "i_customs_message",
    "desc": "Incoming Message",
    "content": {
      "type": "alarm",
      "code": "C00001",
      "message": "바보"
    },
    "dn": "customer",
    "Cid": "NX_00020009605BF4A6_161656744744efb1441f283b70",
    "virtualAgent": "3105"
  }
}

1.3.3.17Notify

표 1-2Data 상세 정보

구분

타입

설명

status

text

o_ect_notify : 각종 이벤트 알림

alert : 오류 알림

dnd :DND 설정 정보

device_error : 장치가 사용 못하는 경우(마이크, 스피커)

network_error : 네트웍 문제로 접속 안됨

dnd : dnd 설정 (true, false)

config_error: 설정 이슈

login_error : 로그인 오류

content

text

status = alert 일 경우 사용

alert 내용

desc

text

status =notify 일 경우 사용

flag

boolean

status =dnd 일 경우 사용

true : DND on

false : DND off

Default
{
  "Kind": "SIP",
  "Type": "Notify",
  "Data": {
    "status": "o_ect_notify",
    "desc": "Busy Here",
    "dn": "3008"
  }
}
Alert
{
  "Kind": "SIP",
  "Type": "Notify",
  "Data": {
    "status": "alert",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<alert>\r\n<type>DUPLICATE</type>\r\n<remote_ip>10.10.10.190</remote_ip>\r\n<remote_port>60975</remote_port>\r\n<message>This account is logged in from another device.</message>\r\n</alert>\r\n"
  }
}
DND
{
  "Kind": "SIP",
  "Type": "Notify",
  "Data": {
    "status": "dnd",
    "flag": true
  }
}

1.3.3.18시나리오 봇

Function
nxWebApi.Message_C( message );
Parameters

Name

Type

Descrption

Message

Json

시나리오 봇 수신

{

"TYPE": "SCENARIO",

"MESSAGE": {

"KEYWORD": "HOME",

"MENU_ID": "CHAT_ROOT",

"TITLE": "WELCOME NEXUS",

"TYPE": "CONTENT",

"NAME": "시나리오 시작",

"URL": "http://nexus.co.kr",

"DESC": "환영합니다. 넥서스커뮤니티 입니다.\\n 무엇을 도와드릴까요?",

"COUNT_BUTTONS": 3,

"BUTTONS": [

{

"KEYWORD": "솔루션",

"MENU_ID": "SOLUTION",

"TITLE": "솔루션 문의",

"TEXT": "제품을 소개해 드립니다."

} {

"KEYWORD": "직원",

"MENU_ID": "EMPLOYEE",

"TITLE": "직원 문의",

"TEXT": "직원을 조회합니다."

}

],

"TAIL": [

{

"KEYWORD": "HOME",

"MENU_ID": "CHAT_ROOT"

},

{

"KEYWORD": "NEXT",

"MENU_ID": "NEXT"

}

],

"COUNT_TAIL": 3

},

"NAME": "시나리오 시작"

}



시나리오봇 응답

{

"TYPE": "SCENARIO",

"MESSAGE": {

"SCENARIO": "CHAT",

"KEYWORD": "솔루션",

"MENU_ID": "SOLUTION"

}

}

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.4상담원 채팅(고객과의 채팅)

1.4.1기능리스트

1.4.1.1고객 채팅 응답

Function
nxWebApi.Answer(cid);
Parameter

Name

Type

필수

Descrption

cid

string

N

수신받은 chatting session 의 call ID 값

멀티채팅 사용시 특정 채팅에 대한 응답시 사용

CallBack

Name

Type

Descrption

고객 채팅 요청 데이터

(카카오)

JSON

{

"Kind": "SIP",

"Type": "Receive",

"Data": {

"status": "i_new_call",

"desc": "Incoming Call",

"dn": "01071170435",

"Cid": "NX_0001000A62786F920",

"id": "2",

"virtualAgent": "3101",

"ChatType": "KAKAO",

"userKey": "9Hs5exoqd0TRDoN3PwVlFQ",

"senderKey": "w4m8cj",

"media": "message"

}

}

고객 채팅 요청 데이터

(네이버톡톡)


{

"Kind": "SIP",

"Type": "Receive",

"Data": {

"status": "i_new_call",

"desc": "Incoming Call",

"dn": "01071170435",

"Cid": "NX_0001000A6",

"id": "2",

"virtualAgent": "3101",

"ChatType": "NAVER_TALK_TALK",

"userKey": "9Hs5exoqd0TRDoN3PwVlFQ",

"senderKey": "w4m8cj",

"media": "message"

}

}

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

고객과의 채팅 받기 응답시 즉기 메시지로 인사말을 보내야 한다. (아래 메시지 보내기 참조)

1.4.1.2고객 채팅 받기(상당톡 받기)

1.4.1.2.1callback

공통
{
  "Kind": "SIP",
  "Type": "Message_C",
  "Data": {
    "status": "i_customs_message",
    "desc": "Incoming Message",
    "content": (채팅타입 DATA),
    "dn": "customer",
    "Cid": "NX_00010044630732B30242",
    "virtualAgent": "2516",
    "ChatType": "(CHAT_TYPE)",
    ...
  }
}
필드 설명

Name

Type

Descrption

Cid

String

수신받은 chatting session 의 call ID 값

ChatType

String

NEXUS: jedai

KAKAO: kakao상담톡

NAVER_TALK_TALK : 네이버톡톡

LINE: 라인 상담톡

WECHAT: Wechat

Content

Json

메시지

chattype 별로 content 형식이 상이 합니다.


chatType : NEXUS

{

"type": "text",

"message": "안녕하세요. ",

}


chatType : KAKAO

{

"user_key": "d79qoms4yqoO",

"sender_key": "ad00d48bf63f6f29f641cec728c7907848ac56ac",

"time": 1620799898394,

"serial_number": 2515430630652094576,

"type": "text",

"content": "J"

}


chatType: NAVER_TALK_TALK

{

"serial_number": "9Hs5exoqd0TR-00B4-62786F8E",

"partner_id": "w4m8cj",

"user_id": "9Hs5exoqd0TRDoN3PwVlFQ",

"message_id": "75",

"message_type": "text",

"message": {

"text": "(고객)문의합니다-1",

"input_type": "typing"

},

"mobile": true,

"e164": "01071170435",

"user_name": ""

}

virtualAgent

string

VDN (한명의 상담원이 여러 채팅을 받기 위해 사용하는 값)

Web chat(ChatType:NEXUS)
{
  "Kind": "SIP",
  "Type": "Message_C",
  "Data": {
    "status": "i_customs_message",
    "desc": "Incoming Message",
    "content": {
      "type": "text",
      "message": "111"
    },
    "dn": "customer",
    "Cid": "NX_0001000E609B6C38_1620795381e74a1f546ce6917e",
    "virtualAgent": "3015",
    "ChatType": "NEXUS"
  }
}
Kakao(ChatType:KAKAO)
{
  "user_key": "D0aymZKqUIuR",
  "session_id": "173113717",
  "sender_key": "ad00d48bf63f6f29f641cec728c7907848ac56ac",
  "time": 1661415974265,
  "serial_number": 2856142969634154274,
  "type": "text",
  "content": "1",
  "e164": "01029115543",
  "user_name": "ㄴㄴ",
  "agree_type": 0,
  "chat_type": "KAKAO"
}
Naver Talk Talk(ChatType:NAVER_TALK_TALK)
{
  "chat_type": "NAVER_TALK_TALK",
  "serial_number": "9Hs5exoqd0TR-0339-6307316D",
  "sender_key": "w4m8cj",
  "user_key": "9Hs5exoqd0TRDoN3PwVlFQ",
  "message_id": "838",
  "message_type": "text",
  "message": {
    "text": "테스트",
    "input_type": "typing"
  },
  "mobile": true,
  "is_message_attachment": false,
  "e164": "01071170435",
  "user_name": ""
}
WeChat(ChatType:WECHAT)
{
  "sender_key": "wx57a9116a1ef9fe9b",
  "user_key": "onyTa51iuqT3kSuXD-Qr8wMZPfXo",
  "touser": "gh_2446bf8b480b",
  "time": 1661413349,
  "type": "text",
  "content": "1",
  "serial_number": 23785719989546739,
  "e164": "01029115543",
  "user_name": "ㄴㄴ",
  "agree_type": 0,
  "chat_type": "WECHAT"
}

1.4.1.3Web Chat 시나리오 봇 연동

Function
nxWebApi.Message_C( message );
Parameters

Name

Type

Descrption

Message

Json

시나리오 봇 수신

{

"TYPE": "SCENARIO",

"MESSAGE": {

"KEYWORD": "HOME",

"MENU_ID": "CHAT_ROOT",

"TITLE": "WELCOME NEXUS",

"TYPE": "CONTENT",

"NAME": "시나리오 시작",

"URL": "http://nexus.co.kr",

"DESC": "환영합니다. 넥서스커뮤니티 입니다.\\n 무엇을 도와드릴까요?",

"COUNT_BUTTONS": 3,

"BUTTONS": [

{

"KEYWORD": "솔루션",

"MENU_ID": "SOLUTION",

"TITLE": "솔루션 문의",

"TEXT": "제품을 소개해 드립니다."

} {

"KEYWORD": "직원",

"MENU_ID": "EMPLOYEE",

"TITLE": "직원 문의",

"TEXT": "직원을 조회합니다."

}

],

"TAIL": [

{

"KEYWORD": "HOME",

"MENU_ID": "CHAT_ROOT"

},

{

"KEYWORD": "NEXT",

"MENU_ID": "NEXT"

}

],

"COUNT_TAIL": 3

},

"NAME": "시나리오 시작"

}



시나리오봇 응답

{

"TYPE": "SCENARIO",

"MESSAGE": {

"SCENARIO": "CHAT",

"KEYWORD": "솔루션",

"MENU_ID": "SOLUTION"

}

}

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.4.1.4메시지 보내기 (chatType : NEXUS)

Function
nxWebApi.Message_CToSelect( cid, message, chatType);
Parameters

Name

Type

Descrption

Cid

String

수신받은 chatting session 의 call ID 값

Message

Json

메시지{

"type": "text",

"message": "안녕하세요. ",

"file_data": []

}


파일 (파일2개, 미리보기는 1개만 지원)

{

"type": "file",

"message": "",

"file_data": [

{

"name": "testImage1.jpg",

"size": "1204136",

"url": "http://118.219.54.237/call-message/testImage1.jpg",

preview_url": "http://1.1.1.1./testImage1_preview.jpg" },

{

"name": "testImage2.doc",

"size": "1401208",

"url": "http://118.219.54.237/call-message/testImage2.jpg",

"mime_type" = "application/msword",

"preview_url": ""

}

]

}

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.4.1.5메시지 보내기 (chatType : KAKAO)

Function
nxWebApi.Message_CToSelect( cid, message, chatType );
Parameters

Name

Type

Descrption

Cid

String

수신받은 chatting session 의 call ID 값

Message

Json

메시지{

"message_type": "TX",

"message": "안녕하세요. "

}



자세한 내용은 카카오 상담톡 API 문서를 참조 하세요

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

대화방이 존재하지 않음 : -502

Code : -502 (대화방 존재하지 않음)

대화방이 존재 하지 않을 경우 에러가 발생하고, 자동으로 대화방은 종료 됩니다.

1.4.1.6메시지 보내기 (chatType : NAVER_TALK_TALK)

Function
nxWebApi.Message_CToSelect( cid, message , chatType);
Parameters
  • Name

  • Type

  • Descrption

Cid

String

수신받은 chatting session 의 call ID 값

  • Message

Json

{

"message_type": "text",

"message": {

"text": "(상담사)안녕하세요 무었을 도와드릴까요?-1"

}

}



자세한 내용은 네이버톡톡 API 문서를 참조 하세요

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.4.1.7메시지 보내기 (chatType : WECHAT)

Function
nxWebApi.Message_CToSelect( cid, message, chatType );
Parameters

Name

Type

Descrption

Cid

String

수신받은 chatting session 의 call ID 값

Message

Json

메시지{

"message_type": "TX",

"message": "안녕하세요. "

}



자세한 내용은 WeChat Biz 상담톡 API 문서를 참조 하세요

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.4.1.8채팅방 종료

Function
nxWebApi.Clear(cid);
Parameters

Name

Type

Descrption

Cid

String

수신받은 chatting session 의 call ID 값

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.4.1.9카카오 상담톡 대화방 입장(기존 대화방 세션이 존재할 경우)

Function
nxWebApi.MakeCallKakao(user_key, sender_key);
Parameters

Name

Type

Descrption

user_key

String

기본 대화방에 수신사용자 id

sender_key

String

기존 대화방에 수신 프로필 id

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

1.5고객 화상 통화

1.5.1고객 영상 통화 요청

Function
nxWebApi.Login(ip, id, password, dn, display_name, websocket_url, push_token, server_reconnect_cnt, server_reconnect_term,user_agent, use_subscribe, register_kind, user_id, location);
Parameters

Name

Type

필수

Descrption

Ip

string

Y

Realm 정보

Id

string

Y

대표 영상 수신 DN 또는 상담원 DN

Password

string

N

사용안함 (공백 사용)

Dn

string

N

고객 전화번호

display_name

string

N

고객 이름

websocket_url

string

Y

웹소켓 주소

push_token

string

Y

모바일 푸쉬 토큰(미사용시 : "default")

server_reconnect_cnt

int

N

미사용

server_reconnect_term

int

N

미사용

user_agent

string

N

미사용

use_subscribe

Bool

Y

false

register_kind

string

Y

영상 : "video" , 음성 : "direct"

user_id

string

N

미사용 ("")

location

string

N

미사용 ( null)

Stun servers

string

N

Stun 서버 값 ( 빈값은 "[]")

Return value

구분

Type

Descrption

반환값

Int

성공 : 0

실패 : -1

Example code
nxWebApi.Login('nexuscommunity.net',
               '3015',
               '',
               'custom',
               'custom',
               'wss://jedai.nexuscommunity.net:8061',
               'default',0,0,'',false,'video');