频道管理
更新时间: 2024/03/14 19:21:15
NIM SDK 的QChatChannelServiceInterface
提供管理频道的方法,支持创建、修改、查询和删除频道。
前提条件
已创建服务器。
使用限制
单个服务器的频道数量上限默认为 100 个。
若需要扩展上限,可在控制台配置圈组子功能项(单 server 可创建的 channel 数),具体请参考开通和配置圈组功能。
实现方法
创建频道
调用createChannel
方法在某个服务器下创建频道。
- 调用时可配置是否对传入的频道资料信息进行内容审核。
- 除消息(
message
)频道外,9.3.0 版本新增支持创建实时互动频道类型(media
),创建频道时可通过EChannelInfoType
枚举来选择频道类型。 - 调用时可设置频道的同步模式
syncMode
,0 为不同步频道分组的配置(默认),1 为同步频道分组的配置。只有将同步模式设置为不同步,才能单独设置频道的查看模式viewMode
。 - 调用时可设置频道的查看模式
viewMode
,0 为公开模式(默认),1 为私密模式。公开频道对未被加入该频道的黑名单的用户均可见;私密频道只对该频道白名单中的用户可见。如果设置为同步模式(syncMode=1),那么无法单独设置频道的查看模式(该情况下若设置查看模式将会报 414 错误)。
- 调用时可通过
visitorMode
设置该频道是否对游客可见:- 0:对游客可见
- 1:对游客不可见
- 2:跟随模式(默认),即如果该频道的查看模式(
viewMode
)被设置为“公开”则该频道对游客可见,如果被设置为“私密”则对游客不可见
如果频道的 visitorMode
为跟随模式,且同步模式(syncMode
)为“与频道分组同步”,则当该频道所属的频道分组的查看模式(viewMode
)变更后,该频道对游客的可见性也将变更。例如,在这种情况下,频道分组的查看模式由公开变为私密,则此时该频道对游客从“可见”变为“不可见”。
示例代码如下:
const qchat = new QChat(options);
qchat.qchatChannel.createChannel({
"serverId": "12345",
"name": "1"
})
修改频道
调用updateChannel
方法修改某个频道的信息,如查看模式(公开或私密)、频道名称、频道主题、是否对游客可见、自定义扩展字段等,还可配置是否对修改的频道资料信息进行内容审核。
示例代码如下:
const qchat = new QChat(options);
qchat.qchatChannel.updateChannel({
"serverId": "12345",
"name":"123"
})
删除频道
调用deleteChannel
方法可将某个频道删除。
示例代码如下:
const qchat = new QChat(options);
qchat.qchatChannel.deleteChannel({
"serverId": "12345"
})
频道查询
分页查询频道列表
用户进入服务器后,如果想要获取当前服务器已有(且对该用户可见)的频道,可调用getChannelsByPage
方法分页查询频道列表。
示例代码如下:
const qchat = new QChat(options);
qchat.qchatChannel.getChannelsByPage({
"serverId": "934978",
"timetag": 0,
"limit": 0
})
根据频道 ID 查询频道列表
用户进入服务器后,如果想要检索当前服务器的频道,可调用getChannels
方法根据频道的 ID 进行检索。
示例代码如下:
const qchat = new QChat(options);
qchat.qchatChannel.getChannels({
"channelIds": ["12345"]
})
分页查询频道成员
用户进入频道后,如果想要检索当前频道的成员有哪些(换而言之,当前频道对哪些用户可见),可调用getMembersByPage
方法可分页查询频道成员列表。
示例代码如下:
const qchat = new QChat(options);
qchat.qchatChannel.getMembersByPage({
"serverId": "934978",
"channelId": "869553",
"timetag": 0,
"limit": 100
})
查询频道未读信息
用户进入服务器后,如果想获取频道的未读信息(包括未读数和未读状态),可调用getChannelUnreadInfos
方法进行查询。
示例代码如下:
const qchat = new QChat({...})
qchat.qchatChannel.getChannelUnreadInfos({"channels": [
{
"serverId": "YOUR_SEVERID",
"channelId": "YOUR_CHANNELID"
}
]})
频道未读数管理的更多相关逻辑介绍,请参见频道未读数管理
频道资料内容审核
创建或修改频道时,如果通过AntispamTag
配置了 antiSpamBusinessId
, 那么云信将会对频道资料进行安全通内容审核。antiSpamBusinessId
代表安全通默认内容审核业务以外的自定义内容审核的业务 ID;如需新增自定义内容审核,请联系商务经理进行相关配置,然后前往云信控制台的安全通配置界面获取该业务 ID。
更多圈组内容审核相关说明,请参见圈组内容审核。