i often observe the problem that admitting does not work:
using SDK 1.8.6, i open a meeting as host via the websdk with waiting room enabled
a user joins with a native client(linux/windows/sdk)
i admit the user via ZoomMtg.putOnHold({hold: false, userId: 1234, success_callback: …})
the corresponding success callback for ZoomMtg.putOnHold() is called
i can observe that the status of the client changes, as the it tries to reconnect.
the admitted user disappears from the waiting room list
nevertheless, sometimes/often reconnecting does not work, i can wait for minutes and watch the joining client trying to reconnect, but it does not succeed.
i also observed this behaviour by using your built-in ‘admit’ js button(the top blue bar that appears when a user comes into the waiting room).
Thank you for reaching out to the Zoom Developer Forum. I wasn’t able to reproduce this issue on my end. I just have a couple of questions to get started:
Does this happen with one user, device, or network?
Do you see any errors in the browser console?
Are you able to provide a meeting ID where this happened?
Do you have the same issues when using the Sample Web App?
Hi Max, I can confirm the behaviour with the putOnHold call @harald.glanzer described above,. I always need to wait for about ~ 5 seconds between each call to get it work, otherwise I get an error:
Thank you for reaching out to the Zoom Developer Forum. I see that if I make calls to putonhold() too frequently on v1.9.0, I get the following error message:
zoomus-websdk.umd.min.js:2 putOnHold 3633 You have reached the API limit for this call.
This is when using the Sample Web App. Are you able to share a public git repo of the code you’re using? I’ll investigate this code you’re using further.
the only thing we do is trying to admit multiple users in a short amount of time (within ~ one second).
We can get it work if we wait with the next putOnHold call for about five seconds.
This is our call we’re using the local websdk based on the sample-web-app.
I quickly tested it with a dirty hack and the current sample web app with the same results I expected before (first participant admit works as expected beginning with the second one I get the error 3633)
What am I doing wrong?:
Thank you for providing additional information. In the example provided, you’re encountering error 3633 because you are calling the function within a loop with no logic to throttle the requests. In this fashion, it’s possible that requests are being sent out within milliseconds of each other which would cause the rate limit error that we’re seeing.
I hope that helps! Let me know if you have any questions.
I’m curious about how you manage the user.id information between connection / disconnection of your users ?
You problem seems to be related to what i already reported here :
I did not check the details, but it looks like you keep track of userId on a list (waitingRoomParticipants) and invoke the function to put them back & so on. But because of the user id renewal stuf, it would work the first time only since your users are going to reconnect when putting back on the meeting from the waiting room and thus change their user id information. It might be the cause of the error code you get, because it’s kinda weird to receive such a message about rate limit when you are clearly not requesting much the API… if that’s the real cause, then Zoom should also fix that incorrect error code handling. (If not please just ignore)
If that’s not the real issue, it might also comes from the fact that you permanently add new user data to your list since the id of a user is renewed when reconnecting to your meeting from the waiting room.
Since you’re doing a loop from that list that potentially grow indefinitely (you do not seem to purge it), you may reach the API rate limit during one of your loop processing.
@MaxM So it looks like this whole user identity thing i reported a while ago is still not fixed. Could you please re-open my thread (see above) with a status update ? You’ve published a feature that is “half coded” and un-usable, that’s a pity. I think we all want to use it so, when is it going to work ?
can you provide me a short sample of how you achieve admitting all participants with less than 5 sec’ waiting in between each putOnHold command (with the sample web app)?
Because the only way I can do this is waiting 5 seconds between each putOnHold call
@nvivot we do not send the users back to the waiting room and let them join again. In our usecase the users only join the waiting room and the host decide which users he want to join the meeting → so no userid renewal
Thank you for your question. I tested this extensively today and I saw that the interval between rate limit errors depended on the device/network that I was testing on. In most cases, I saw that it took ~4-6 seconds on my end as well.
That makes sense with an async function like this so I then tried adding the next call to putOnHold() within its own success callback but that didn’t seem to change the behavior.
Given such, I’ve since reached out to our engineering team to see if they are able to provide any insight into the API rate limit of this function. I’ll be sure to keep you posted here.
While I was testing, I used the following code in order to throttle the function calls. Here I used the lodash throttle() and the getAttendeesList() just to make testing easier.
As you’ve shown, this can be accomplished in a variety of ways including using the inMeetingServiceListener() function and built-in setTimeout() function:
Our engineering team confirmed that there was a 5 second rate limit on this function to prevent DDOS attacks. They are lowering the the rate limit to one call per second in the upcoming release (1.9.5).