聊天室标签功能
更新时间: 2024/03/14 16:36:34
聊天室的标签功能通过在登录和发消息时设置标签相关字段来达到个性化的消息发送和接收的效果。
聊天室标签功能
- 禁言/解禁某个标签的用户,此接口只允许管理员或者聊天室的创建者调用,调用后,凡是设置了该标签的用户均不能发送消息,比如禁言了标签A,则登录时设置了标签["A","B"]的客户也不能发送消息
- 查询某个标签下的在线用户数,注意相同账号登录多端的情况下,在线用户数算1个
- 查询某个标签下的在线成员列表,这是一个分页查询的接口,对于多端登录的用户,本接口会返回多条记录
- 修改聊天室用户的标签,修改 tag 后会通知被修改人的所有在线端并广播通知聊天室内所有用户
- 查询标签下的聊天室历史消息,注意可传多个标签
登录
登录时支持设置两个参数:
- 第一个参数叫tags,用于标识本次登录所在的长连接归属于哪些标签,是一个json的数组,同一个长连接最多支持设置10个标签,每个标签最多32个字符,如:["abc", "def"]
- 第二个参数叫notifyTargetTags,是一个标签表达式,表示本次登录以及随后的登出操作产生的进出通知应该广播给哪些标签用户,若缺省则服务器会根据tags自动自动生成一个标签表达式,生成的规则是将tags中的所有标签通过and关键词进行组合,表示只有同时设置了所有tags中的标签的用户能收到我的进出通知
SDK发消息
支持设置一个参数,叫notifyTargetTags,是一个标签表达式,表示本条消息发送给哪些人,如果缺失则会使用登录时设置的notifyTargetTags
API发消息
支持设置一个参数,叫notifyTargetTags,是一个标签表达式,表示本条消息发送给哪些人,如果缺失则会发给所有人
标签表达式
标签表达式的作用用于设定聊天室的通知/消息的投递对象,表达式支持设置交并集,也支持设置正则匹配,并且可以使用括号来设置表达式中的优先级(类似于加减乘除四则运算中的括号),每个标签表达式限制最多128个字符
以下是一些标签表达式的示例:
1)匹配标签abc
{"tag": "abc"}
2)匹配标签abc或者def
{"tag": "abc"} or {"tag": "def"}
3)匹配标签abc且def
{"tag": "abc"} and {"tag": "def"}
4)使用正则匹配标签abc
{"tag": "abc.*", "matchType": "regex"}
5)匹配标签abc或者def,并且,同时正则匹配标签123或456
({"tag": "abc"} or {"tag": "def"}) and ({"tag": ".*123", "matchType": "regex"} or {"tag": "456.*", "matchType": "regex"})
聊天室标签相关接口
监听聊天室标签变更
监听聊天室标签变更事件后,当聊天室标签别修改后,会受到回调,包含变更标签的聊天室 ID 和变更后的标签信息。
- 原型
java/**
* 注册/注销标签更新观察者
*
* @param observer 观察者
* @param register true为注册,false为注销
*/
public void observeTagsUpdate(Observer<ChatRoomTagsUpdateEvent> observer, boolean register);
更新聊天室标签
java/**
* 更新聊天室标签
* @param roomId 当前聊天室id
* @param tagsInfo 标签信息
* @return
*/
InvocationFuture<Void> updateChatRoomTags(String roomId, ChatRoomTagsInfo tagsInfo);
ChatRoomTagsInfo 参数说明:
参数 | 说明 |
---|---|
tags | 可以设置多个,json_array格式,例子:["tag1", "tag2"],如果要删除,则null即可,上传空数组代表启用标签功能但是不属于任何标签组 |
notifyTargetTags | 更新标签的通知的目标标签,是一个标签表达式,同时也会改变该连接掉线时的通知对象,传null或空字符串表示允许通知聊天室所有成员,具体见标签表达式 |
needNotify | true表示,如果需要通知,则会产生一条通知 |
ext | 通知扩展字段 |
此文档是否对你有帮助?