聊天室标签功能
更新时间: 2024/08/20 15:45:46
功能简介
网易云信聊天室功能帮助开发者搭建一款应用中的聊天室,广泛应用在社交娱乐、教育直播等场景下。默认情况下,聊天室的消息会向聊天室内所有在线成员下发。从V8.4.0版本开始,新增聊天室标签功能,可以灵活地支持将聊天室消息向聊天室内部分成员下发。也支持仅接收特定的消息。
应用场景
超级小班课
大型多人课堂与小班互动模式结合。1名老师授课时,可将学生分成若干个小班,在小班内进行管理与教学互动,可兼顾直播大班课的教学成本优势和小班课的互动教学效果。
上图是一个典型的超级小班课场景:
- 所有的班级成员均在同一个聊天室下
- 授课老师可以向所有班级发送消息,也可接收所有班级的讨论信息
- 学生仅可以接收班级内的讨论消息,所发送的消息也只能在班级内可见
- 助教角色可自行配置,既可以管理1个班级,也可以管理多个班级
大型直播聊天室
大型直播聊天室场景下,考虑到弹幕刷屏、争论现象,可以对用户进行标签化分组,可以达到以下场景的效果:
- 多位艺人明星同场直播,艺人明星的粉丝可以内部互动,不同明星之间的粉丝不互动
- 体育竞技、电子竞技等,比赛双方的观众可以选择支持的战队,仅在战队粉丝内部互动
- 根据用户特点制订适合自己应用的标签策略,同一个聊天室内,同好、同年龄段的用户之间互相交流
功能详情
聊天室的标签功能通过在登录和发消息时设置标签相关字段来达到个性化的消息发送和接收的效果,具体的流程如下:
登录
登录时支持设置两个参数:
- 第一个参数叫tags,用于标识本次登录所在的长连接归属于哪些标签,是一个json的数组,同一个长连接最多支持设置10个标签,每个标签最多32个字符,如:["abc", "def"]
- 第二个参数叫 notifyTargetTags,是一个标签表达式,表示本次登录以及随后的登出操作产生的进出通知应该广播给哪些标签用户,若缺省则服务器会根据tags自动自动生成一个标签表达式,生成的规则是将tags中的所有标签通过and关键词进行组合,表示只有同时设置了所有tags中的标签的用户能收到我的进出通知
SDK发消息
支持设置一个参数,叫 notifyTargetTags,是一个标签表达式,表示本条消息发送给哪些人,如果缺失则会使用登录时设置的notifyTargetTags
API发消息
支持设置一个参数,叫 notifyTargetTags,是一个标签表达式,表示本条消息发送给哪些人.
新增标签相关接口
新增接口(含SDK的接口和服务器API),具体如下:
- 禁言/解禁某个标签的用户,此接口只允许管理员或者聊天室的创建者调用,调用后,凡是设置了该标签的用户均不能发送消息,比如禁言了标签A,则登录时设置了标签["A","B"]的客户也不能发送消息
- 查询某个标签下的在线用户数,注意相同账号登录多端的情况下,在线用户数算1个
- 查询某个标签下的在线成员列表,这是一个分页查询的接口,对于多端登录的用户,本接口会返回多条记录
- 修改聊天室用户的标签,修改 tag 后会通知被修改人的所有在线端并广播通知聊天室内所有用户
- 查询标签下的聊天室历史消息,注意可传多个标签
标签表达式
标签表达式的作用用于设定聊天室的通知/消息的投递对象,表达式支持设置交并集,也支持设置正则匹配,并且可以使用括号来设置表达式中的优先级(类似于加减乘除四则运算中的括号),每个标签表达式限制最多128个字符
以下是一些标签表达式的示例:
1)匹配标签abc
notifyTargetTags: "{\"tag\": \"abc\"}"
2)匹配标签abc或者def
notifyTargetTags: "{\"tag\": \"abc\"} or {\"tag\": \"def\"}"
3)匹配标签abc且def
notifyTargetTags: "{\"tag\": \"abc\"} and {\"tag\": \"def\"}"
4)使用正则匹配标签abc
notifyTargetTags: "{\"tag\": \"abc.*\", \"matchType\": \"regex\"}"
5)匹配标签abc或者def,并且,同时正则匹配标签123或456
notifyTargetTags: "({\"tag\": \"abc\"} or {\"tag\": \"def\"}) and ({\"tag\": \".*123\", \"matchType\": \"regex\"} or {\"tag\": \"456.*\", \"matchType\": \"regex\"})"
6)匹配所有标签
notifyTargetTags: "{\"tag\": \".*\", \"matchType\": \"regex\"}"
此文档是否对你有帮助?