뒤끝 채팅 특정 채널 이용

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 베이스/채팅/데이터베이스/월드 SDK 버전 :
  • 프로젝트명 :
  • 스테이터스 코드 :
    #if UNITY_EDITOR
    _chatClient.SendJoinOpenChannel(“test”, “test-1”);
    #else
    _chatClient.SendJoinOpenChannel(“global”, “server-1”);
    #endif
  • 에러 코드 :
  • 에러 메시지 :

뒤끝 개발팀을 통한 별도의 기술지원이 작업이 필요한 요청은 help@backnd.com 으로 문의해주시기 바랍니다.

Unity 에디터상 특정 채팅 채널을 접속하려고 합니다.
위의 코드를 작성해도 현재는 계속 global server-1 채팅 채널로 접속하고 있습니다.

작업중
일시적으로 test, test-1로 생성해서 이용했지만 다른 라이브 이용자가 test, test-1 채널로 접속을 해서 삭제를 했습니다.

가이드라인 주시면 확인해보겠습니다.

안녕하세요 개발자님.
문의 내용에 대한 답변이 지연되어 죄송합니다.

문의주신 코드 기준으로는 Unity 에디터 실행 시 test / test-1 채널로 접속되어야 합니다.
현재 증상 기준으로는 다음 두 가지를 우선 확인해 보시는 것을 권장드립니다.

  1. 다른 위치에 동일한 호출부 존재 여부
    재접속, 씬 전환, 채팅 초기화 등의 과정에서 global / server-1로 접속하는 별도 로직이 있을 수 있습니다.
    프로젝트 전체에서 SendJoinOpenChannel 호출부를 검색하여 추가 호출이 있는지 확인 부탁드립니다.

  2. 전처리 분기 동작 여부 확인
    UNITY_EDITOR 분기가 실제로 실행되고 있는지 확인하기 위해 해당 구문 내에 Debug.Log를 추가하여 로그가 출력되는지 확인 부탁드립니다.
    또한 .asmdef를 사용 중인 경우에는 해당 스크립트가 어떤 Assembly에서 빌드되고 있는지 함께 확인해 보시는 것을 권장드립니다.

확인 후에도 동일 현상이 지속된다면 프로젝트 정보아 함께 채팅 접속 관련 전체 코드 흐름과 채팅 SDK/서버 버전 정보를 함께 전달해 주시면 추가 확인해 보겠습니다.

다시 시도했으나 동일하게 global, server-1로 접속을 합니다.
test라는 채널을 다시 unity, server-1로 생성해서 시도했으나 동일하게 global, server-1로 이동합니다.

보다 정확한 확인을 위해 프로젝트 정보 및 채팅 접속 관련 전체 코드 흐름(코드 전문),
그리고 채팅 SDK/서버 버전 정보 공유 요청드립니다.

서버 버전은 금일 확인해서 업데이트 했습니다

ChattingPopup을 열면

        _chatClient = new ChatClient(this, new ChatClientArguments
        {
            Avatar = deckInfo.Player.ToString(),
            Metadata = metadata,
        });

#if UNITY_EDITOR
        _chatClient.SendJoinOpenChannel("unity", "server-1");
#else
        _chatClient.SendJoinOpenChannel("global", "server-1");
#endif

호출이 됩니다.

singleton manager에 IChatClientListener 상속받아서 사용하고 있습니다.

_chatClient.SendJoinPrivateChannel(“unity”, 1, “1234”); 로 프라이빗 채널 생성해서 입장하려고 해도 global로 입장이 되고 있습니다. global server-1의 fallback 기능을 끄면 채널을 찾지 못해 에러가 발생합니다.

  1. 코드 상 프라이빗 채널이 아닌 오픈채널 입장 코드만을 사용중인 것으로 확인됩니다.
    채널 정보에 맞는 코드를 확인하여 적용해주시기 바랍니다.

    // 프라이빗 채널 타입의 채널 입장 함수 입니다. 채널 그룹, 채널 번호를 넣어서 보내 줍니다.
    ChatClient.SendJoinPrivateChannel(string channelGroup, ulong channelNumber, string password = "")
    
  2. fallback 설정된 채널이 존재하는 경우 기본적으로 채팅 서버 접속시 fallback 채널에 우선 자동으로 입장됩니다.
    다른 채널로 입장이 필요하신 경우 fallback 채널 입장이 완료된것을 확인한 후,
    명시적으로 입장을 희망하시는 채널로 추가 입장시도가 되도록 구성해주셔야 합니다.
    (채팅은 여러 채널에 동시 접속해 있을 수 있는점도 참고해 주시기 바랍니다.)

안내드린 내용에 따라 다시한번 확인해 주시고,
계속해서 다른 채널로 입장이 이루어지지 않는 경우 관련 코드 전문과 함께,
프로젝트 정보도 함께 공유해 주시기 바랍니다.

_chatClient.SendJoinPrivateChannel(“unity”, 1, “1234”); 코드는 동작하지 않아 원복한 상황입니다.

명시적으로 입장을 희망하시는 채널로 추가 입장시도가 되도록 구성해주셔야 합니다.
=> 입장 완료후 변경하는 로직으로 시도해보겠습니다.

프로젝트 정보는 픽셀 테이머즈입니다.

좋아요 1
    public void OnJoinChannel(ChannelInfo channelInfo) 
   { 
//생략
       if (channelInfo.ChannelGroup == "global")
            _chatClient.SendLeaveChannel(channelInfo.ChannelGroup, channelInfo.ChannelName, channelInfo.ChannelNumber);
   } 

     public void OnLeaveChannel(ChannelInfo channelInfo)
    {
#if UNITY_EDITOR || TEST_PURCHASE
        _chatClient.SendJoinPrivateChannel("unity", 1, "1234");
#endif
    }

이렇게 구성을 하고 동작을 하니

최종적으로 원하는 채널에 접속을 합니다.
public void OnJoinChannel(ChannelInfo channelInfo)
{
}
image

다만, 동일하게 채팅을 사용했을 때 아래와 같은 에러가 발생합니다.

OnError() 함수에서 NOT_JOIN_CHANNEL param:null

// 채팅 메시지를 입력 하는 함수 입니다. 채널 그룹, 채널 이름, 채널 번호, 메시지를 넣어서 보내 줍니다.
ChatClient.SendChatMessage(string channelGroup, string channelName, UInt64 channelNumber, string message)

메시지를 보낼때도 그 정보로 해당하는 채널 정보를 포함해 호출해야합니다.
해당 에러는 입장되어있는 채널이 아닐때 발생하는 에러니 발송 정보를 확인해주시기 바랍니다.

image

아래와 같이 채널 번호까지 잘 전달하고 있습니다.

말씀해주신 프로젝트 명이 확인되지 않습니다.
정확한 프로젝트 정보 요청드립니다.

project_pixel 입니다

확인 시, 채널 접속은 정상적으로 이루어졌으나,그 이후 연결이 짧은 시간에 끊기는 상황으로 확인됩니다.
Update 함수 호출이 이루어지고 있는지 확인해 주시기 바라며,
사용하고 계신 SDK 버전도 확인 요청드립니다.

Update 호출은 정상적으로 이루어지고 있습니다.
void Update() => _chatClient?.Update();
void OnApplicationQuit() => _chatClient?.Dispose();

SDK 버전은 5.18.0
채팅은 1.4.0 입니다.

아래 안내드리는 코드로 테스트를 진행해봐 주실 수 있을까요?

public void OnJoinChannel(ChannelInfo channelInfo)
{
    if (channelInfo.ChannelGroup == "global")
        _chatClient.SendLeaveChannel(channelInfo.ChannelGroup, channelInfo.ChannelName, channelInfo.ChannelNumber);
    else if (channelInfo.ChannelGroup == "unity")
        _chatClient.SendChatMessage(channelInfo.ChannelGroup, channelInfo.ChannelName, channelInfo.ChannelNumber, "Hello from Private Channel!");
}

public void OnLeaveChannel(ChannelInfo channelInfo)
{
#if UNITY_EDITOR || TEST_PURCHASE
    _chatClient.SendJoinPrivateChannel("unity", 1, "1234");
#endif
}

image

이전과 동일한 증상입니다.

현재 원인 확인이 정확히 이루어지지 않고 있어 내부에서 해당 프로젝트로 직접 확인 테스트를 진행해드리고자 합니다.
이에 동의해주시는 경우 간단한 동의 말씀 남겨주시면 커스텀계정(backndtest)을 생성하여 테스트를 진행해 볼 수 있도록 하겠습니다.
빠르게 해결해드리지 못해 죄송합니다.

네 확인 부탁드립니다!

공유드린 코드 및 개발자문서 내 제공중인 튜토리얼 패키지를 통해 테스트를 진행하였고,
이상 없이 채널 접속 및 메시지 전송이 이루어짐을 확인하였습니다.

현재 사용하고 계신 환경 및 클라이언트 코드에 원인이 있을 것으로 예상되며,
이 이상의 정확한 확인은 원격 지원을 통해 실제 이용 환경에서 확인을 해드려야 할 것으로 보입니다.

원격 지원은 크롬 원격 데스크톱을 통해 진행하고 있습니다.
가능하신 시간 및 엑세스 코드 정보를 DM으로 전달해주시면 담당 개발자를 통해 확인이 진행될 수 있도록 하겠습니다.

내부 보안으로 인해 원격 지원은 괜찮습니다.
내부에서 최대한 해결해보도록 하겠습니다.
감사합니다.