변경내역
이슈 | 날짜 | 변경 사항 | 기타 |
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)
API 요청후 결과 를 수신 하기 위해 사용 되는 함수입니다.
결과는 JSON 타입으로 전달 됩니다.
함수에 따라 무응답이 있을수 있습니다.
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 |
성공 : 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통화 전달
통화중에 사용 가능합니다.
3자에게 전화를 직접 연결시켜 줍니다.( Blind Tranfer)
- 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 메시지)
Out of Band 방식의 DTMF 입니다.
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 우선모드)
In Band 방식으로 전달이 가능할 경우 in Band 방식으로 DTMF 를 전달 합니다.
만약 In Band 를 지원 하지 않을 경우 INFO 메시지로 전달 합니다.
- 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 설정
Dtls 활성화 설정입니다.
Webrtc 에서 비활성화 지원이 종료 되었습니다
DTLS 는 기본적으로 지원해야 합니다.
- 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 설정
영상 통화시 화면의 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 데이터에 대한 설명 입니다.
로그인, 전화걸기, 받기 등 에 따라서 Type 이 다릅니다.
Callback 이 발생하지 않을경우는 실제 네트워크로 데이터가 전송이 일어 나지 않았을 경우 입니다.
네트워크가 정상적인지 먼저 체크해 주세요.
1.3.3.1SetCallBack
Callback설정 시 발생합니다.
{ "Type": "SetCallBack", "Data": { "result": "Success" } }
1.3.3.2SetSIPCallBack
SIP Packet Callback설정 시 발생합니다.
{ "Type": "SetSIPCallBack", "Data": { "result": "Success" } }
1.3.3.3Init(Sip Stack)
Sip Stack 상태가 변경시 발생됩니다.
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
Register 등록/해지 시 발생합니다.
- 성공
{ "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
SIP Message 를 서버로부터 Message Packet을 받거나 보낼때 발생합니다.
- 발신
{ "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(알람 메시지)
금칙어 발견등 알람 메시지 발생합니다.
구분 | 타입 | 설명 |
---|---|---|
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
알림 이벤트 발생 시 발생합니다. (알림으로 이벤트 설명은 변경 됩니다.)
구분 | 타입 | 설명 |
---|---|---|
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 } }
기타 Status 값
device_error : 장치가 사용 못하는 경우(마이크, 스피커)
network_error : 네트웍 문제로 접속 안됨
dnd : dnd 설정 (true, false)
config_error: 설정 이슈
login_error : 로그인 오류
login_error : 로그인 오류
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
|
|
|
---|---|---|
Cid | String | 수신받은 chatting session 의 call ID 값 |
| 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');