채널
채널
Game Chat에서 채널은 사용자들이 그룹으로 소통할 수 있는 가상의 공간입니다. 채널을 통해 사용자는 특정 주제나 목적에 맞게 정보를 공유하고, 팀워크를 강화하며, 커뮤니케이션을 조직화할 수 있습니다. 채널은 업무 효율을 높이고, 특정 그룹 내 커뮤니케이션을 중앙집중화하여 관리할 수 있는 유용한 도구입니다. 아래는 Game Chat의 채널 기능에 대한 자세한 설명입니다.
채널의 주요 기능
그룹 커뮤니케이션: 채널을 생성하여 특정 그룹의 멤버들과 소통할 수 있습니다. 이는 프로젝트 팀, 부서, 클럽 등 다양한 형태의 그룹에 적합합니다.
메시지 및 파일 공유: 채널 내에서는 텍스트 메시지, 이미지, 동영상, 문서 등 다양한 형태의 파일을 쉽게 공유할 수 있습니다.
실시간 업데이트: 채널 내의 모든 활동은 실시간으로 업데이트되어, 모든 참여자가 최신의 정보를 접할 수 있습니다.
관리자 제어: 채널의 생성자 또는 관리자는 채널 설정을 변경하거나 사용자를 추가/제거할 권한을 가집니다.
통화 및 화상회의 기능: 일부 채널에서는 음성 통화나 화상 회의를 지원하여, 멤버 간의 대화를 더욱 효과적으로 할 수 있습니다.
알림 설정: 사용자는 채널별로 알림을 설정하여 중요한 메시지를 놓치지 않도록 할 수 있습니다.
검색 기능: 채널 내의 대화나 파일을 쉽게 검색할 수 있어, 필요한 정보를 빠르게 찾을 수 있습니다.
채널 관리
채널 생성: 사용자는 목적에 맞는 채널을 새로 생성할 수 있으며, 채널명, 설명, 멤버 등의 정보를 설정할 수 있습니다.
채널 초대: 채널의 관리자는 다른 사용자를 채널에 초대할 수 있습니다. 초대받은 사용자는 초대를 수락하거나 거절할 수 있습니다.
멤버 관리: 관리자는 채널 멤버의 권한을 설정하거나 멤버를 채널에서 제거할 수 있습니다.
보안
데이터 보안: 채널 내의 모든 데이터는 암호화되어 전송되며, 서버에 안전하게 저장됩니다.
개인 정보 보호: 채널 내에서 공유되는 정보는 채널 멤버들 사이에서만 접근 가능하며, 외부에 유출되지 않도록 보호됩니다.
Game Chat의 채널 기능을 활용하면 조직 내 또는 개인적인 소통을 원활하게 하고, 정보를 효과적으로 관리할 수 있습니다. 이러한 특성은 특히 대규모 조직이나 다양한 프로젝트를 관리할 때 매우 유용합니다.
채널 생성
모든 대화는 채널을 생성해야 하며 채널에 참여해야 정상적으로 채팅을 할 수 있습니다. 아래는 채널을 생성하고 구독하는 방법을 안내합니다.
await nc.createChannel(new NBaseSDK.Channel
{
name = "New Channel",
type =[TYPE], // PUBLIC or PRIVATE
customField = [CustomField]
});
NAME
string
채널 이름
O
TYPE
string
채널 종류 ( PUBLIC or PRIVATE )
O
UniqueID
string
고유한 ID
X
push
boolean
푸시 알림 여부
X
linkUrl
string
링크 여부
X
imageUrl
string
링크 여부
X
integrationId
string
연동 기능 (번역, 보이스 등)
X
disabled
string
채널 사용여부
X
members
array
PRIVATE 일 경우 참여 가능한 아이디
X
CustomField
string
사용자 정의 필드, JSON String으로 넣으면 다양하게 활용 가능
X
참고
보안을 위해서 클라이언트에서 채널을 생성하는 것보다는 서버를 통한 채널을 생성을 추천해 드립니다.
채널 구독
원하는 채널에 가입(방 참여)합니다. 참여된 채널에는 구독 해제할 때까지 재접속 시에도 자동으로 참여하게 됩니다.
Hashtable option = new Hashtable
{
{ "language", "en" } // 자동 번역시 필요한 옵션 이외에도 다양한 옵션 추가 가능합니다.
};
await nc.subscribe([CHANNEL_ID], option);
채널 구독 해제
해당 채널에 대한 가입을 해지합니다. 해당 채널에서 더 이상 메시지를 받을 수 없습니다.
await nc.unsubscribe([CHANNEL_ID]);
참여자 리스트
(특정 채널에 대해) 참여자 리스트를 가져올 수 있습니다.
Hashtable filter = new Hashtable
{
{ "channel_id", channelId }
};
Hashtable sort = new Hashtable
{
{ "created_at", -1 }
};
Hashtable option = new Hashtable
{
{ "offset", 0 },
{ "per_page", 10 }
};
var subscriptions = await nc.getSubscriptions(filter, sort, option);
foreach (var subscription in subscriptions.edges)
{
string id = subscription.node.id.ToString();
Console.WriteLine("[CloudChatSample] id={0}", id);
}
Parameters
filter
object
쿼리를 필터 모든 필드에 대해서 검색 가능
sort
object
소트하고자 하는 필드의 필터 정의 (오름차순 "1", 내림차순 "-1")
option
object
옵션이 존재할 경우 아래 참고
Options
offset
number
시작 offset
per_page
number
리턴하는 개수(최대 100개)
응용편
특정 채널에 온라인 접속 상태인 접속자 목록만 가져오려면 filter에 online을 true로 추가해 주십시오.
Hashtable filter = new Hashtable
{
{ "channel_id", [CHANNEL_ID] },
{ "online" , true}
};
Hashtable sort = new Hashtable
{
{ "created_at", -1 }
};
Hashtable option = new Hashtable
{
{ "offset", 0 },
{ "per_page", 10 }
};
var subscriptions = await nc.getSubscriptions(filter, sort, option);
채널 구독
Subscription Data Class
IDTypeDescriptionid
string
유니크 아이디
channel_id
string
채널 아이디
user_id
string
유저 고유 아이디
created_at
string
생성 일자
online
boolean
온라인 여부
push
boolean
푸시 참여 여부
language
string
접속 언어
channel
string
채널 정보
mark.user_id
string
마지막 메시지 보낸 사용자
mark.message_id
string
마지막 메시지 아이디
mark.sort_id
string
마지막 메시지 정렬 ID
mark.unread
string
마지막 메시지 이후 안읽은 메시지 갯수
채널 정보
Channel Data Class
id
string
채널 아이디 (unique)
project_id
string
프로젝트 아이디
unique_id
string
개발사에서 설정 가능한 채널 아이디 (unique)
name
string
채널 이름
user_id
string
(채널을 생성한) 유저 아이디
unique_id
string
채널 고유 ID
default_lang
string
기본 언어
lang
string
현재 접속 중인 이용자의 언어
members
string
Private일 경우 참여된 사용자 목록
last_message
array
마지막 메시지 정보 [MessageType] 참고
push
boolean
푸시 메시지 지원 여부 (Private 채널일 경우)
state
boolean
채널 상태
customField
string
사용자 정의 데이터
created_at
string
생성 일자
updated_at
string
갱신 일자
채널 데이터 가져오기
프로젝트의 채널 데이터를 목록 형태로 가져오려면 아래 코드를 사용해 주십시오.
Hashtable filter = new Hashtable
{
{ "state", true }
};
Hashtable sort = new Hashtable
{
{ "created_at", -1 }
};
Hashtable option = new Hashtable
{
{ "offset", 0 },
{ "per_page", 10 }
};
var channels = await nc.getChannels(filter,sort,option);
foreach (var channel in channels.edges)
{
string id = channel.node.id.ToString();
Console.WriteLine("[CloudChatSample] id={0}", id);
}
Parameters
filter
object
쿼리를 필터 모든 필드에 대해서 검색 가능
O
sort
object
소트하고자 하는 필드의 필터 정의
X
option
object
옵션이 존재할 경우 아래를 참고
X
Options
offset
number
시작 offset
per_page
number
리턴하는 개수(최대 100개)
개별 채널
개별 채널에 대한 정보를 가져올 수 있습니다.
Channel channel = await nc.getChannel(id);
채널 내 사용자 초대
PRIVATE 채널의 경우 참여하고자 하는 사용자를 초대합니다.
await nc.addUsers(newChannelId, new string[] { "ID", "ID" });
채널 내 사용자 삭제
PRIVATE 채널의 경우 참여된 사용자를 삭제합니다.
await nc.removeUsers(channelId, new string[] { "ID", "ID" });
채널 내 사용자 차단
채널 내에 사용자를 차단합니다. 채널을 생성한 권한을 가지고 있는 유저나 전체 관리자만 사용이 가능합니다.
Hashtable option = new Hashtable
{
{ "timeout", [종료시간(초)] },
{ "reason", [차단사유] }
};
await nc.banUser(channelId, userId, options);
Options Data Class
timeout
string
차단 시간 (seconds)
reason
string
차단 사유
채널 내 사용자 차단 해제
채널 내에 차단한 사용자의 차단을 해제합니다. 채널을 생성한 권한을 가지고 있는 유저나 전체 관리자만 사용이 가능합니다.
await nc.unbanUser(channelId, userId);
채널 삭제
해당 채널을 삭제합니다 (한 개 또는 여러 개를 삭제할 수 있습니다).
Channel channel = await nc.deleteChannel([CHANNEL_ID]);
채널 수정
채널 정보를 업데이트합니다.
Channel channel = await nc.updateChannel([CHANNEL_ID],new NBaseSDK.Channel
{
name = "Update Channel",
type =[TYPE], // PUBLIC or PRIVATE
customField = [CustomField]
});
Last updated