1、聊天室接口开发说明

从v5.3.2开始、sdk增加直播聊天室功能、推出直播领域消息解决方案。

聊天室跟普通的IM群(微信群,QQ群等)相比最大的不同点在于它是一个比较开放的虚拟组织。我们可以将直播聊天室比喻成一个广场,广场是开放无边界的,所有的人都可以随进随出,而群就像一个房间,是一个有边界有容量上限的私密组织,并且进入这个房间需要一定条件,一般是主动申请加入或被邀请加入。

1.1、相关接口:

直播sdk相关接口分2大类别:

1.1.1 后台Rest提供接口。具体参考文档地址://www.yuntongxun.com/doc/sdk/server/2_5_1_8.html

(1) 创建聊天室

(2) 切换聊天室状态(开启/关闭)

1.1.2 SDK接口文档(本页面提供)

H5 SDK内部提供的接口: 进入聊天室、聊天室内发送消息、获取聊天室信息、获取聊天室成员、获取成员信息、对成员进行禁言/拉黑、踢出、修改个人信息、修改聊天室信息、退出聊天室等接口。

1.2、直播聊天室三种成员角色:创建者(权限最高)>管理员>普通成员(权限高的能对权限低的做相应处理)。

(1) 创建者:可以对所有成员进行管理,包括禁言/解除禁言/拉黑/从黑名单移除/踢出/修改聊天室信息。

(2) 管理员:只能对成员进行管理,禁言/解除禁言/拉黑/从黑名单移除/踢出。

(3) 普通成员:无权限

2、聊天室操作代码示例:

✾ 进入聊天室——用户要在聊天室内说话,必须先调用接口进入此聊天室。用户进入聊天室后,不会收到此聊天室的历史消息推送。 如有历史消息需求,可以调用消息查询接口进行显示。

var enterChatroomBuilder = new RL_YTX.EnterChatroomBuilder();
enterChatroomBuilder.setRoomId(roomId);
enterChatroomBuilder.setNickName(nickName);
enterChatroomBuilder.setInfoExt("小龙人");
enterChatroomBuilder.setNotifyExt("霸气侧漏进入房间!");
enterChatroomBuilder.setNeedNotify(2);
RL_YTX.enterChatroom(enterChatroomBuilder,function (e) {
IM.roomNumber = roomId;
callback(e);
},function (err) {
console.error(err);
})
			        

✾ 聊天室内发送消息——跟普通发消息一样,接收者为roomId。

//新建消息体对象
var obj = new RL_YTX.MsgBuilder();
//假设页面存在一个id为file的<input type=”file”>元素 
//获取图片或附件对象
var file = document.getElementById("file").files[0];
//设置图片或附件对象
obj.setFile(file);
//设置发送的文本内容
obj.setText(text);
//设置发送的消息类型1文本消息4 图片消息6 附件消息
//发送非文本消息时,text字段将被忽略,发送文本消息时 file字段将被忽略
obj.setType(1);
//设置接收者
obj.setReceiver(“roomId”);
RL_YTX.sendMsg(obj, function(){
//发送消息成功
//处理用户逻辑,通知页面
}, function(obj){//失败
//发送消息失败
//处理用户逻辑,通知页面刷新,展现重发按钮
}, function(sended, total){
//发送图片或附件时的进度条
		//如果发送文本消息,可以不传该参数
});
			        

✾ 获取聊天室信息——此接口可以远程获取聊天室信息,开发者自行修改页面信息。

var FetchChatroomInfoBuilder = new RL_YTX.FetchChatroomInfoBuilder(IM.roomId);
RL_YTX.fetchChatroomInfo(fetchChatroomInfoBuilder,function (obj) {
console.log(obj);
},function (err) {
console.error(err);
})
			        

✾ 修改聊天室信息——此接口可修改聊天室信息,可单独修改某一项信息。

var updateChatroomInfoBuilder = new RL_YTX.UpdateChatroomInfoBuilder();
updateChatroomInfoBuilder.setRoomId(IM.roomId);
if(type === "roomname"){
updateChatroomInfoBuilder.setRoomName(content);// 修改房间名称
}else if(type === "announcement"){
updateChatroomInfoBuilder.setAnnouncement(content);// 修改房间公告
}else if(type === "roomext"){
updateChatroomInfoBuilder.setRoomExt(content);// 房间信息扩展字段
}
RL_YTX.updateChatroomInfo(updateChatroomInfoBuilder,function (e) {
console.log(e)
callback();
},function (err) {
console.error(err);
})
			        

✾ 获取聊天室成员

var fetchChatroomMembersBuilder = new RL_YTX.FetchChatroomMembersBuilder(IM.roomId);
fetchChatroomMembersBuilder.setRoomId(IM.roomId);
fetchChatroomMembersBuilder.setType(1);//成员类型 1.全部成员 2.指定成员
fetchChatroomMembersBuilder.setUserId(null);// userId为空时,从头查询
fetchChatroomMembersBuilder.setPageSize(20);// 每页数量
RL_YTX.fetchChatroomMembers(fetchChatroomMembersBuilder,function (obj) {
console.log(obj);
IM.addToOnlineList(obj);
},function (err) {
console.error(err);
})
			        

✾ 聊天室角色管理—角色权限高的用户可以对角色权限低的用户设置拉黑状态。

//用于设置聊天室成员类型,分别为管理员、普通成员用户
var UpdateChatRoomMemberRoleBuilder = new RL_YTX.UpdateChatRoomMemberRoleBuilder();
UpdateChatRoomMemberRoleBuilder.setRoomId(IM.roomId);
UpdateChatRoomMemberRoleBuilder.setUserId(memberId);
UpdateChatRoomMemberRoleBuilder.setType(2);//2 管理员 3 普通成员
UpdateChatRoomMemberRoleBuilder.setNeedNotify(2);//是否需要通知, 1 不通知 2 通知
UpdateChatRoomMemberRoleBuilder.setNotifyExt(memberId +"成为管理员" );// 通知信息扩展字段
RL_YTX.updateChatRoomMemberRole(UpdateChatRoomMemberRoleBuilder,function () {
callback();
},function (err) {
console.error(err);
})
			        

✾ 拉黑/移除黑名单—角色权限高的用户可以对角色权限低的用户设置拉黑状态。

var defriendMemberBuilder = new RL_YTX.DefriendMemberBuilder();
defriendMemberBuilder.setRoomId(IM.roomId);// 房间id
defriendMemberBuilder.setUserId(memberId);// 用户id
defriendMemberBuilder.setState(1);//1拉黑 2取消拉黑(默认2)
defriendMemberBuilder.setNeedNotify(2);//是否需要通知, 1 不通知 2 通知 (默认2)
defriendMemberBuilder.setNotifyExt("因为暗恋女主播被踢出去了");//通知信息扩展字段
RL_YTX.defriendMember(defriendMemberBuilder,function (e) {
console.log(e)
callback();
},function (err) {
console.error(err)
})
			        

✾ 对聊天室成员进行禁言/解除禁言—创建者、管理员可以对成员进行禁言/解除禁言

var forbidChatRoomMemberBuilder = new RL_YTX.ForbidChatRoomMemberBuilder();
forbidChatRoomMemberBuilder.setRoomId(IM.roomId);// 房间id
forbidChatRoomMemberBuilder.setUserId(memberId);// 用户id
forbidChatRoomMemberBuilder.setState(1);//1禁言 2取消禁言(默认2)
forbidChatRoomMemberBuilder.setMuteDuration(time);//单位:分钟 当禁言时,需要禁言时长b
forbidChatRoomMemberBuilder.setNeedNotify(2);//是否需要通知, 1 不通知 2 通知 (默认2)
forbidChatRoomMemberBuilder.setNotifyExt("因为暗恋女主播被禁言了");//通知信息扩展字段
RL_YTX.forbidChatRoomMember(forbidChatRoomMemberBuilder,function (e) {
console.log(e)
callback();
},function (err) {
console.error(err)
})				
				        

✾ 聊天室全员禁言/解除禁言—创建者能进行此操作。

var allMuteBuilder = new RL_YTX.AllMuteBuilder();
allMuteBuilder.setRoomId(IM.roomId);
allMuteBuilder.setAllMuteMode(2);// 是否全员禁言 1 不是 2 是
allMuteBuilder.setNeedNotify(2);// 是否需要通知, 1 不通知 2 通知 (默认2)
allMuteBuilder.setNotifyExt("都悄悄地");// 通知信息扩展字段
RL_YTX.AllMuteMode(allMuteBuilder,function (e) {
console.log(e)
callback
},function (err) {
console.error(err)
});
			        

✾ 踢出成员—创建者或管理员可以将权限比自己低的用户踢出聊天室。

var kickMemberBuilder = new RL_YTX.KickMemberBuilder();
kickMemberBuilder.setRoomId(IM.roomId);
kickMemberBuilder.setUserIds([“111”,”222]);
kickMemberBuilder.setNeedNotify(2);
kickMemberBuilder.setNotifyExt("违规");
console.log(kickMemberBuilder);
RL_YTX.kickMember(kickMemberBuilder,function (e) {
console.log(e);
callback();
},function (err) {
console.log(err);
if(err.code === 620010){
console.error('你没有权限');
}
})
			        

✾ 离开聊天室——浏览器端多半为直接关闭浏览器,在关闭浏览器之前触发此事件。(onbeforeunload),或与Connector断开连接之后,自动退出房间。

var exitChatroomBuilder = new RL_YTX.ExitChatroomBuilder();
exitChatroomBuilder.setRoomId(IM.roomId);// 房间id
exitChatroomBuilder.setNeedNotify(2);//是否需要通知, 1 不通知 2 通知 (默认2)
exitChatroomBuilder.setNotifyExt(IM.user_account+ " 退出了聊天室");// 通知信息扩展字段
RL_YTX.exitChatroom(exitChatroomBuilder,function (e) {
callback();
},function (err) {
console.error(err);
})
}
			        

✾ 修改个人信息

var updateMyChatroomMemberInfoBuilder = new RL_YTX.UpdateMyChatroomMemberInfoBuilder();
updateMyChatroomMemberInfoBuilder.setRoomId(IM.roomId);
if(type === "nickname"){
updateMyChatroomMemberInfoBuilder.setNickName(content); //个人昵称
}else if(type === "infoext"){
updateMyChatroomMemberInfoBuilder.setInfoExt(content);// 个人信息扩展字段
}
RL_YTX.updateMyChatroomMemberInfo(updateMyChatroomMemberInfoBuilder,function (e) {
console.log(e)
callback();
},function (err) {
console.error(err);
})
}
			        

✾ 聊天室通知消息-用户加入,退出,被禁言,被踢出,被拉黑,变更角色等,聊天室内的成员都会收到通知消息。

RL_YTX.onCharRoomEventLinstener(callback);
if(obj.type === 1){//有用户加入
}else if(obj.type === 2){//修改聊天室通知
}else if(obj.type === 3){//设置角色通知
}else if(obj.type === 4){//有用户被踢出
}else if(obj.type === 5){//有用户退出
}else if(obj.type === 6){//全员禁言
}else if(obj.type === 7){//聊天室全员取消禁言
}else if(obj.type === 8){//单人禁言
}else if(obj.type === 9){//成员取消禁言
}else if(obj.type === 10){//拉入黑名单
}else if (obj.type === 11){//成员取消拉黑
}else if(obj.type === 12){//聊天室关闭
}else if(obj.type === 14){//修改聊天室信息
}
                    

文档更新时间:2017年9月21日