添加配置在机器人获取用户信息时指定获取字段

This commit is contained in:
heavyrian2012
2026-02-03 11:24:28 +08:00
parent 4d60231c8c
commit d90bab53ad
6 changed files with 56 additions and 2 deletions
+6
View File
@@ -174,6 +174,12 @@ robot.callback_with_target_info false
## 如果为false,不能@不在会话中的机器人。机器人不在会话中时,也不能回复消息。
robot.mention_external_robot true
## 机器人获取信息允许的字段,可以获取userId/displayName/portrait,其他需要这里配置允许。
## 第一位(1)是name, 第二位(2)是mobile,第三(4)位是email,第四位(8)是address,第五位(16)是company,第六位(32)是extra,
## 第七位(64)是updateDt,第八位(128)是gender,第九位(256)是social,第十位(512)是type。
## 比如允许获取name和email就是5(1+4),允许获取name和mobile和company和type就是531(1+2+16+512),允许全部是1023(1+2+...+512)
#robot.get_user_info_mask 1023
## 频道回调信息是否带上用户clientId和平台类型。
channel.callback_with_client_info false
@@ -47,7 +47,39 @@ public class GetUserAction extends RobotAction {
if (user == null || user.getDeleted() > 0) {
result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST);
} else {
result = RestResult.ok(InputOutputUserInfo.fromPbUser(user));
InputOutputUserInfo outputUserInfo = InputOutputUserInfo.fromPbUser(user);
int mask = messagesStore.getRobotGetUserInfoMask();
if((mask & 1) == 0) {
outputUserInfo.setName(null);
}
if((mask & 2) == 0) {
outputUserInfo.setMobile(null);
}
if((mask & 4) == 0) {
outputUserInfo.setEmail(null);
}
if((mask & 8) == 0) {
outputUserInfo.setAddress(null);
}
if((mask & 16) == 0) {
outputUserInfo.setCompany(null);
}
if((mask & 32) == 0) {
outputUserInfo.setExtra(null);
}
if((mask & 64) == 0) {
outputUserInfo.setUpdateDt(0);
}
if((mask & 128) == 0) {
outputUserInfo.setGender(0);
}
if((mask & 256) == 0) {
outputUserInfo.setSocial(null);
}
if((mask & 512) == 0) {
outputUserInfo.setType(0);
}
result = RestResult.ok(outputUserInfo);
}
setResponseContent(result, response);
} else {
@@ -181,7 +181,7 @@ public final class BrokerConstants {
public static final String ROBOT_Callback_With_Sender_Info = "robot.callback_with_sender_info";
public static final String ROBOT_Callback_With_Target_Info = "robot.callback_with_target_info";
public static final String ROBOT_Mention_External_Robot = "robot.mention_external_robot";
public static final String ROBOT_Get_User_Info_Mask = "robot.get_user_info_mask";
public static final String CHANNEL_Callback_With_Client_Info = "channel.callback_with_client_info";
public static final String CHANNEL_Callback_With_Sender_Info = "channel.callback_with_sender_info";
@@ -222,6 +222,7 @@ public class MemoryMessagesStore implements IMessagesStore {
private boolean mRobotCallbackWithSenderInfo = false;
private boolean mRobotCallbackWithTargetInfo = false;
private boolean mRobotMentionExternalRobot = false;
private int mRobotGetUserInfoMask = 0;
private boolean mChannelCallbackWithClientInfo = false;
private boolean mChannelCallbackWithSenderInfo = false;
@@ -684,6 +685,9 @@ public class MemoryMessagesStore implements IMessagesStore {
try {
mRobotMentionExternalRobot = Boolean.parseBoolean(server.getConfig().getProperty(BrokerConstants.ROBOT_Mention_External_Robot, "false"));
} catch (Exception e) {}
try {
mRobotGetUserInfoMask = Integer.parseInt(server.getConfig().getProperty(BrokerConstants.ROBOT_Get_User_Info_Mask, "0"));
} catch (Exception e) {}
try {
mChannelCallbackWithClientInfo = Boolean.parseBoolean(server.getConfig().getProperty(BrokerConstants.CHANNEL_Callback_With_Client_Info, "false"));
@@ -5014,6 +5018,11 @@ public class MemoryMessagesStore implements IMessagesStore {
return mRobotMentionExternalRobot;
}
@Override
public int getRobotGetUserInfoMask() {
return mRobotGetUserInfoMask;
}
@Override
public boolean isChannelCallbackWithClientInfo() {
return mChannelCallbackWithClientInfo;
@@ -256,6 +256,7 @@ public interface IMessagesStore {
boolean isRobotCallbackWithSenderInfo();
boolean isRobotCallbackWithTargetInfo();
boolean isRobotMentionExternalRobot();
int getRobotGetUserInfoMask();
boolean isChannelCallbackWithClientInfo();
boolean isChannelCallbackWithSenderInfo();
@@ -171,6 +171,12 @@ robot.callback_with_target_info false
## 如果为false,不能@不在会话中的机器人。机器人不在会话中时,也不能回复消息。
robot.mention_external_robot true
## 机器人获取信息允许的字段,可以获取userId/displayName/portrait,其他需要这里配置允许。
## 第一位(1)是name, 第二位(2)是mobile,第三(4)位是email,第四位(8)是address,第五位(16)是company,第六位(32)是extra,
## 第七位(64)是updateDt,第八位(128)是gender,第九位(256)是social,第十位(512)是type。
## 比如允许获取name和email就是5(1+4),允许获取name和mobile和company和type就是531(1+2+16+512),允许全部是1023(1+2+...+512)
#robot.get_user_info_mask 1023
## 频道回调信息是否带上用户clientId和平台类型。
channel.callback_with_client_info false