feat(bot): bypass max participants limit for bot users
Adjust the maximum participants logic to exempt bot users from being counted towards the participant limit.
This commit is contained in:
parent
86ea21e52b
commit
8697de71e8
@ -83,7 +83,7 @@ trait UserJoinMeetingReqMsgHdlr extends HandlerHelpers {
|
|||||||
|
|
||||||
if (maxParticipants > 0 && //0 = no limit
|
if (maxParticipants > 0 && //0 = no limit
|
||||||
RegisteredUsers.numUniqueJoinedUsers(liveMeeting.registeredUsers) >= maxParticipants &&
|
RegisteredUsers.numUniqueJoinedUsers(liveMeeting.registeredUsers) >= maxParticipants &&
|
||||||
!userHasJoinedAlready) {
|
!userHasJoinedAlready && !regUser.bot) {
|
||||||
Left(("The maximum number of participants allowed for this meeting has been reached.", EjectReasonCode.MAX_PARTICIPANTS))
|
Left(("The maximum number of participants allowed for this meeting has been reached.", EjectReasonCode.MAX_PARTICIPANTS))
|
||||||
} else {
|
} else {
|
||||||
Right(())
|
Right(())
|
||||||
|
@ -67,7 +67,7 @@ object Users2x {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def numUsers(users: Users2x): Int = {
|
def numUsers(users: Users2x): Int = {
|
||||||
users.toVector.filter(u => !u.bot).length
|
users.toVector.length
|
||||||
}
|
}
|
||||||
|
|
||||||
def numActiveModerators(users: Users2x): Int = {
|
def numActiveModerators(users: Users2x): Int = {
|
||||||
|
@ -1076,7 +1076,7 @@ public class MeetingService implements MessageListener {
|
|||||||
message.name, message.role, message.locked, message.avatarURL, message.webcamBackgroundURL, message.bot,
|
message.name, message.role, message.locked, message.avatarURL, message.webcamBackgroundURL, message.bot,
|
||||||
message.guest, message.guestStatus, message.clientType);
|
message.guest, message.guestStatus, message.clientType);
|
||||||
|
|
||||||
if(m.getMaxUsers() > 0 && m.countUniqueExtIds() >= m.getMaxUsers()) {
|
if(m.getMaxUsers() > 0 && m.countUniqueExtIds() >= m.getMaxUsers() && !user.isBot()) {
|
||||||
m.removeEnteredUser(user.getInternalUserId());
|
m.removeEnteredUser(user.getInternalUserId());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1864,6 +1864,8 @@ class ApiController {
|
|||||||
Boolean reenter = meeting.getEnteredUserById(us.internalUserId) != null;
|
Boolean reenter = meeting.getEnteredUserById(us.internalUserId) != null;
|
||||||
// User are able to rejoin if he already joined previously with the same extId
|
// User are able to rejoin if he already joined previously with the same extId
|
||||||
Boolean userExtIdAlreadyJoined = meeting.getUsersWithExtId(us.externUserID).size() > 0
|
Boolean userExtIdAlreadyJoined = meeting.getUsersWithExtId(us.externUserID).size() > 0
|
||||||
|
// Bot users should not be affected by max partiicpants limitation
|
||||||
|
Boolean isBot = us.bot
|
||||||
// Users that already joined the meeting
|
// Users that already joined the meeting
|
||||||
// It will count only unique users in order to avoid the same user from filling all slots
|
// It will count only unique users in order to avoid the same user from filling all slots
|
||||||
int joinedUniqueUsers = meeting.countUniqueExtIds()
|
int joinedUniqueUsers = meeting.countUniqueExtIds()
|
||||||
@ -1873,7 +1875,7 @@ class ApiController {
|
|||||||
log.info("Entered users - ${enteredUsers}. Joined users - ${joinedUniqueUsers}")
|
log.info("Entered users - ${enteredUsers}. Joined users - ${joinedUniqueUsers}")
|
||||||
|
|
||||||
Boolean reachedMax = joinedUniqueUsers >= maxParticipants;
|
Boolean reachedMax = joinedUniqueUsers >= maxParticipants;
|
||||||
if (enabled && !rejoin && !reenter && !userExtIdAlreadyJoined && reachedMax) {
|
if (enabled && !rejoin && !reenter && !userExtIdAlreadyJoined && reachedMax && !isBot) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user