3.고객채팅 함수

Edit

3.1초기화 및 종료

3.1.1초기화

*  webRtc 초기화를 실행한다. 한번만 실행해야 한다.
kr.co.nexus.webrtclib.CustomChat
public static int start(Context context)
CustomChat.start(getApplicationContext());

3.1.2종료

kr.co.nexus.webrtclib.CustomChat
public static int stop(Context context)
CustomChat.stop(getApplicationContext());

3.2콜백

- 이벤트 콜백은 "otto (event bus)" Lib 를 사용하여 구현되어 있습니다.

> https://github.com/square/otto

3.2.1이벤트 콜백 등록 / 해제

3.2.1.1이벤트 콜백을 받을 otto Bus Event 등록

해당 메소드는 아래의 otto 의 메소드를 wrapping 한 메소드 입니다.

이미 사용 중이라면 중복 사용하지 않아도 됩니다.

- BusProvider.getInstance().register(object);

kr.co.nexus.webrtclib.CustomChat
public static void registerEvent(Object object)
CustomChat.registerEvent(this);

3.2.1.2이벤트 콜백을 받을 otto Bus Event 해제

해당 메소드는 아래의 otto 의 메소드를 wrapping 한 메소드 입니다.

이미 사용 중이라면 중복 사용하지 않아도 됩니다.

- BusProvider.getInstance().unregister(object);

kr.co.nexus.webrtclib.CustomChat
public static void unregisterEvent(Object object)
CustomChat.unregisterEvent(this);

3.2.2이벤트 콜백 수신

- 이벤트 수신에 사용되는 class 는 다음과 같습니다.


> 채팅방 접속/종료

kr.co.nexus.webrtclib.callmsg.event

public class WaivCallMessageConnectEvent


> 채팅방 메시지 수신/발신

kr.co.nexus.webrtclib.callmsg.event

public class WaivCallMessageStatusEvent


> 채팅방 상태

kr.co.nexus.webrtclib.callmsg.event

public class WaivCallMessageEvent

3.2.2.1채팅방 접속/종료 시 이벤트 수신

네트웍으로 인한 연결 종료시는 발생하지 않습니다. 이때는 상태변화 함수를 참고하세요

@Subscribe
public void onWaivCallMessageConnectEvent(WaivCallMessageConnectEvent connectEvent) {
    switch (connectEvent.getEvent()) {
        case WaivCallMessageConnectEvent.EVENT_CONNECTED: {
            // 채팅방 연결
            break;
        }
        case WaivCallMessageConnectEvent.EVENT_CLOSED: {
            // 채팅방 연결 해제
            break;
        }
    }
}

3.2.2.2채팅방 메시지 수신/발신 이벤트 수신

> 채팅 메시지 송/수신 시 사용되는 데이터 클래스

kr.co.nexus.webrtclib.callmsg.data

public class WaivMessageTextData


> 채팅 파일 송/수신 시 사용되는 데이터 클래스

kr.co.nexus.webrtclib.callmsg.data;

public class WaivMessageFileData

@Subscribe
public void onWaivCallMessageEvent(WaivCallMessageEvent messageEvent) {
    boolean isSendMessage = messageEvent.isSendMessage();

    WaivMessageSimpleData waivMessageSimpleData = messageEvent.getWaivMessageSimpleData();
    String type = waivMessageSimpleData.getType();

    switch (type) {
        case WaivMessageSimpleData.TYPE_TEXT: {
            WaivMessageTextData waivMessageTextData = (WaivMessageTextData) waivMessageSimpleData;
            String msg = waivMessageTextData.getMessage();
            if (isSendMessage) {
                // 메시지 발신
            } else {
                // 메시지 수신
            }
            
            break;
        }
        case WaivMessageSimpleData.TYPE_FILE: {
            WaivMessageFileData waivMessageFileData = (WaivMessageFileData) waivMessageSimpleData;

            String fileUrl = waivMessageFileData.getFile_data()[0].getUrl();
            String fileName(waivMessageFileData.getFile_data()[0].getName());
            long fileSize(waivMessageFileData.getFile_data()[0].getSizeLong());
            String previewUrl(waivMessageFileData.getFile_data()[0].getPreview_url());

            if (isSendMessage) {
                // 파일 발신
            } else {
                // 파일 수신
            }

            break;
        }
    }
}

3.2.2.3채팅방 상태 이벤트 수신

@Subscribe
public void onWaivCallMessageStatusEvent(WaivCallMessageStatusEvent statusEvent) {
    LogUtil.info(CALL_MSG_TAG + "onWaivCallMessageStatusEvent, call, status: " + statusEvent.getStatusText());
    switch (statusEvent.getStatus()) {
        case WaivCallMessageStatusEvent.STATUS_DEFAULT: {
            // WebRTCLib 로그됨.
            break;
        }
        case WaivCallMessageStatusEvent.STATUS_CONNECTING: {
            // 채팅방 연결 중...
            break;
        }
        case WaivCallMessageStatusEvent.STATUS_CONNECTED: {
            // 채팅방 연결됨.
            break;
        }
        case WaivCallMessageStatusEvent.STATUS_CLOSE: {
            // 채팅방 연결 해제됨.
            break;
        }
    }
}

3.3채팅방 입장/나가기

3.3.1채팅방 입장

채탕방에 입장을 요청한다. 입장 성공은 이벤트 콜백 으로 확인 가능하다.

"2.2.1 채팅방 접속/종료 시 이벤트 수신" 에서 성공 확인 가능함니다.

kr.co.nexus.webrtclib.CustomChat
public static int connect(Context context,
                          String sipServerUrl,
                          String sipRealm,
                          String dn)
sipServerUrl

접속 uri ex) ws://jedai.nexus.co.kr:8060

sipRealm

접속 Realm ex) /jedai.nexus.co.kr

dn

접속할 채팅방 dn

return

0: 요청성공, 0 미만: 오류코드

Context context = getApplicationContext();
String sipServerUrl= "ws://10.10.10.1:8060";
String sipRealm = "nexus.co.kr";
String dn = "1004";

CustomChat.connect(context,
                   sipServerUrl,
                   sipRealm,
                   dn);

3.3.2채팅방 나가기

로그 아웃 처리를 한다. 로그아웃 성공은 이벤트 콜백으로 확인 가능하다.

"2.2.1 채팅방 접속/종료 시 이벤트 수신" 에서 성공 확인 가능함니다.

kr.co.nexus.webrtclib.CustomChat
public static int close()
return

0: 요청성공, 0 미만: 오류코드

CustomChat.close();

3.4채팅

3.4.1메시지 보내기

메시지 보내기를 요청한다.

"2.2.2 채팅방 메시지 수신/발신 이벤트 수신" 에서 메시지 보내기 성공 확인 가능합니다.

kr.co.nexus.webrtclib.CustomChat
public static int sendMessage(String message)
message

상담원에게 보낼 메시지

return

0: 요청성공, 0 미만: 오류코드

String message = "test message";
CustomChat.sendMessage(message);

3.4.2파일보내기

파일을 보내기를 요청한다.

준비중
준비중