群系统消息(Web SDK).md
11.5 KB
当有用户申请加群等事件发生时,管理员会收到邀请加群系统消息,相应的消息会通过群系统消息展示给用户。群系统消息类型主要有以下几种:
//群系统消息类型
var WEB_IM_GROUP_SYSTEM_TYPE = {
"JOIN_GROUP_REQUEST": 1, //申请加群请求(只有管理员会收到)
"JOIN_GROUP_ACCEPT": 2, //申请加群被同意(只有申请人能够收到)
"JOIN_GROUP_REFUSE": 3, //申请加群被拒绝(只有申请人能够收到)
"KICK": 4, //被管理员踢出群(只有被踢者接收到)
"DESTORY": 5, //群被解散(全员接收)
"CREATE": 6, //创建群(创建者接收, 不展示)
"INVITED_JOIN_GROUP_REQUEST": 7, //邀请加群(被邀请者接收)
"QUIT": 8, //主动退群(主动退出者接收, 不展示)
"SET_ADMIN": 9, //设置管理员(被设置者接收)
"CANCEL_ADMIN": 10, //取消管理员(被取消者接收)
"REVOKE": 11, //群已被回收(全员接收, 不展示)
"CUSTOM": 255//用户自定义通知(默认全员接收)
};
目前是通过定义群系统消息监听事件来处理群系统消息的。示例:
//监听(多终端同步)群系统消息,方法都定义在 webim_demo_group_notice.js 文件中
//注意每个数字代表的含义,例如,
//1 表示监听申请加群消息,2 表示监听申请加群被同意消息,3 表示监听申请加群被拒绝消息
var groupSystemNotifys = {
"1": onApplyJoinGroupRequestNotify, //申请加群请求(只有管理员会收到)
"2": onApplyJoinGroupAcceptNotify, //申请加群被同意(只有申请人能够收到)
"3": onApplyJoinGroupRefuseNotify, //申请加群被拒绝(只有申请人能够收到)
"4": onKickedGroupNotify, //被管理员踢出群(只有被踢者接收到)
"5": onDestoryGroupNotify, //群被解散(全员接收)
"6": onCreateGroupNotify, //创建群(创建者接收)
"7": onInvitedJoinGroupNotify, //邀请加群(被邀请者接收)
"8": onQuitGroupNotify, //主动退群(主动退出者接收)
"9": onSetedGroupAdminNotify, //设置管理员(被设置者接收)
"10": onCanceledGroupAdminNotify, //取消管理员(被取消者接收)
"11": onRevokeGroupNotify, //群已被回收(全员接收)
"255": onCustomGroupNotify//用户自定义通知(默认全员接收,暂不支持)
};
*Demo 提供了查看群系统消息通知的入口: *
申请加群
触发时机:当有用户申请加群时,群管理员会收到申请加群消息,管理员决定是否同意对方加群。
Demo 提供了查看加群申请的入口:
示例:
//监听 申请加群 系统消息
function onApplyJoinGroupRequestNotify(notify) {
console.info("执行 加群申请 回调: %s", JSON.stringify(notify));
var data = [];
var timestamp = notify.MsgTime;
notify.MsgTimeStamp = timestamp;
notify.MsgTime = webim.Tool.formatTimeStamp(notify.MsgTime);
data.push(notify);
$('#get_apply_join_group_pendency_table').bootstrapTable('append', data);
$('#get_apply_join_group_pendency_dialog').modal('show');
var reportTypeCh = "[申请加群]";
var content = notify.Operator_Account + "申请加入您的群";
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, timestamp);
}
申请加群被同意
触发时机:当管理员同意加群请求时,申请人会收到同意加群的消息。
示例:
//监听 申请加群被同意 系统消息
function onApplyJoinGroupAcceptNotify(notify) {
console.info("执行 申请加群被同意 回调: %s", JSON.stringify(notify));
//刷新我的群组列表
getJoinedGroupListHigh(getGroupsCallbackOK);
var reportTypeCh = "[申请加群被同意]";
var content = notify.Operator_Account + "同意您的加群申请,附言:" + notify.RemarkInfo;
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}
申请加群被拒绝
触发时机:当管理员拒绝时,申请人会收到拒绝加群的消息。
*示例: *
//监听 申请加群被拒绝 系统消息
function onApplyJoinGroupRefuseNotify(notify) {
console.info("执行 申请加群被拒绝 回调: %s", JSON.stringify(notify));
var reportTypeCh = "[申请加群被拒绝]";
var content = notify.Operator_Account + "拒绝了您的加群申请,附言:" + notify.RemarkInfo;
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}
被管理员踢出群
触发时机:当用户被管理员踢出群组时,用户会收到被踢出群的消息。
示例:
//监听 被踢出群 系统消息
function onKickedGroupNotify(notify) {
console.info("执行 被踢出群 回调: %s", JSON.stringify(notify));
//刷新我的群组列表
getJoinedGroupListHigh(getGroupsCallbackOK);
var reportTypeCh = "[被踢出群]";
var content = "您被管理员" + notify.Operator_Account + "踢出该群";
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}
解散群
触发时机:当群被解散时,全员会收到解散群消息。
*示例: *
//监听 解散群 系统消息
function onDestoryGroupNotify(notify) {
console.info("执行 解散群 回调: %s", JSON.stringify(notify));
//刷新我的群组列表
getJoinedGroupListHigh(getGroupsCallbackOK);
var reportTypeCh = "[群被解散]";
var content = "群主" + notify.Operator_Account + "已解散该群";
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}
创建群
触发时机:当创建群成功时,创建者会收到创建群消息。
*示例: *
//监听 创建群 系统消息
function onCreateGroupNotify(notify) {
console.info("执行 创建群 回调: %s", JSON.stringify(notify));
var reportTypeCh = "[创建群]";
var content = "您创建了该群";
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}
被邀请加群
触发时机:当用户被邀请加入群组时,该用户会收到邀请消息,创建群组时初始成员无需邀请即可入群。
示例:
//监听 被邀请加群 系统消息
function onInvitedJoinGroupNotify(notify) {
console.info("执行 被邀请加群 回调: %s", JSON.stringify(notify));
//刷新我的群组列表
getJoinedGroupListHigh(getGroupsCallbackOK);
var reportTypeCh = "[被邀请加群]";
var content = "您被管理员" + notify.Operator_Account + "邀请加入该群";
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}
主动退群
触发时机:当用户主动退出群组时,该用户会收到退群消息,只有退群的用户自己可以收到。
示例:
//监听 主动退群 系统消息
function onQuitGroupNotify(notify) {
console.info("执行 主动退群 回调: %s", JSON.stringify(notify));
var reportTypeCh = "[主动退群]";
var content = "您退出了该群";
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}
被设为管理员
触发时机:当用户被设置为管理员时,可收到被设置管理员的消息通知,可提示用户。
*示例: *
//监听 被设置为管理员 系统消息
function onSetedGroupAdminNotify(notify) {
console.info("执行 被设置为管理员 回调: %s", JSON.stringify(notify));
var reportTypeCh = "[被设置为管理员]";
var content = "您被群主" + notify.Operator_Account + "设置为管理员";
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}
被取消管理员
触发时机:当用户被取消管理员时,可收到取消通知,可提示用户。
示例:
//监听 被取消管理员 系统消息
function onCanceledGroupAdminNotify(notify) {
console.info("执行 被取消管理员 回调: %s", JSON.stringify(notify));
var reportTypeCh = "[被取消管理员]";
var content = "您被群主" + notify.Operator_Account + "取消了管理员资格";
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}
群被回收
触发时机:当群组被系统回收时,全员可收到群组被回收消息。
*示例: *
//监听 群被回收 系统消息
function onRevokeGroupNotify(notify) {
console.info("执行 群被回收 回调: %s", JSON.stringify(notify));
//刷新我的群组列表
getJoinedGroupListHigh(getGroupsCallbackOK);
var reportTypeCh = "[群被回收]";
var content = "该群已被回收";
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}
用户自定义
触发时机:只有 App 管理员才可以发送自定义系统通知,全员可收到该消息。
发送 API:
/* function sendCustomGroupNotify
* 发送自定义群通知
* params:
* options - 请求参数
* cbOk - function()类型, 成功时回调函数
* cbErr - function(err)类型, 失败时回调函数, err 为错误对象
* return:
* (无)
*/
sendCustomGroupNotify: function(options,cbOk, cbErr) {},
?详细参数说明请参考 在群组中发送系统通知 API。
Demo 增加了发送自定义通知入口,在 Demo 中单击【菜单】-【群组】-【我的群组】。发送自定义群通知如下图:
发送 Demo:
//发送自定义群系统通知
var sendCustomGroupNotify = function () {
var content=$("#sgsm_content").val();
if (content.length < 1) {
alert("发送的消息不能为空!");
return;
}
if (webim.Tool.getStrBytes(content) > MaxMsgLen.GROUP) {
alert("消息长度超出限制(最多" + Math.round(maxLen / 3) + "汉字)");
return;
}
var options = {
'GroupId': $("#sgsm_group_id").val(),
'Content': content
};
webim.sendCustomGroupNotify(
options,
function (resp) {
$('#send_group_system_msg_dialog').modal('hide');
alert('发送成功');
},
function (err) {
alert(err.ErrorInfo);
}
);
};
监听解析 Demo:
//监听 用户自定义 群系统消息
function onCustomGroupNotify(notify) {
console.info("执行 用户自定义系统消息 回调: %s", JSON.stringify(notify));
var reportTypeCh = "[用户自定义系统消息]";
var content = "收到了自己自定义的系统消息";
addGroupSystemMsg(notify.ReportType, reportTypeCh, notify.GroupId,
notify.GroupName, content, notify.MsgTime);
}