频道
频道
在 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,允许参与的 ID
X
CustomField
string
自定义字段:可以以 JSON 字符串形式添加,灵活使用各种功能
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 个)
应用示例
如果仅需获取特定频道中在线的用户列表,请在过滤器中将 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
频道 ID
user_id
string
用户唯一 ID
created_at
string
创建日期
online
boolean
在线状态
push
boolean
推送订阅状态
language
string
接入语言
channel
string
频道信息
mark.user_id
string
最后发送消息的用户
mark.message_id
string
最后消息的 ID
mark.sort_id
string
最后消息的排序 ID
mark.unread
string
最后消息之后未读的消息数量
频道信息
Channel Data Class
id
string
频道 ID (unique)
project_id
string
项目 ID
unique_id
string
开发者设置的频道 ID (unique)
name
string
频道名称
user_id
string
(创建频道的)用户 ID
unique_id
string
频道唯一 ID
default_lang
string
默认语言
lang
string
当前连接用户的语言
members
string
如果是 Private,参与用户列表
last_message
array
最后消息信息 [MessageType] 参考
push
boolean
推送消息支持状态(对于私有频道)
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