聊天室标签功能
更新时间: 2024/03/14 17:08:39
聊天室的标签功能通过在登录和发消息时设置标签相关字段来达到个性化的消息发送和接收的效果。
聊天室标签功能
- 禁言/解禁某个标签的用户,此接口只允许管理员或者聊天室的创建者调用,调用后,凡是设置了该标签的用户均不能发送消息,比如禁言了标签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 event 修改通知
*/
- (void)tagsUpdate:(NIMChatroomTagsUpdateEvent *)event;
更新标签
支持随时更新自己的标签
objc/**
* 更新标签
* @param tags 标签
* @param completion 请求完成回调
*/
-(void)updateTags:(nonnull NIMChatroomTagsUpdate *)tags
completion:(nullable NIMChatroomHandler)completion;
- NIMChatroomTagsUpdate 参数列表
参数 | 类型 |
说明 |
---|---|---|
roomId | NSString | 聊天室ID |
tags | NSArray |
标签,可以设置多个,如果不传,则会删掉老的标签 |
notifyTargetTags | NSString | 更新标签的通知的目标标签,是一个标签表达式,同时也会改变该连接掉线时的通知对象,见TagCalculator和TagPattern,如果不传,则会删掉老的notifyTargetTags |
needNotify | BOOL | 是否需要通知,填true则会产生一条通知,类型为325 |
ext | NSString | 通知扩展字段 |
此文档是否对你有帮助?