Getting the list of participants assigned to a breakout room, but who are currently in the main session, while the user is in a BOR

A feature I need for my app is to display the list of all participants in the meeting - both in the main session and in the breakout rooms - with an indication of where they currently are (e.g. “in Room 3”).

I’ve (partially) got this to work by listening to onParticipantChange and onMeetingConfigChanged; then collecting the participants and their rooms from the getBreakoutRoomList and those in the main session with getMeetingParticipants.

The reason for taking this 2-legged approach, rather than just reading the .unassigned property from the BreakoutRoomsResponse, is that participants, who are assigned to a room, but then returned to the main session, still appear in the BreakoutRoomsResponse (and in Zoom’s participant list) under the BOR they were in.

This stops working once the user joins a breakout room, because getMeetingParticipants there returns only those participants who are in the same BOR.

The only solution I could think of so far is the /metrics/meetings/{meetingId}/participants API call, which requires Business plan and is not what this app is intended for.

Is there a way to achieve this with Zoom SDK that I’ve overlooked, or should I make a feature request and hope for the best? )

Zoom Apps Configuration
React, Node.js

1 Like

@biinster Would you be comfortable to share some more details about the app or use case? It will help us understand event/API requirements better to design a solution.

I don’t have a ready solution for you, but we took this in as feature request. I will follow up once we have any news.

1 Like

Hi Evgeny and thanks for getting back to me!

This is for a classroom management app, where the teacher is expected to utilise breakout rooms a lot and needs to have as much of a panorama of the class as possible.

I’d say at a glance there are 2 ways to go about this:

  • Add a flag to the BreakOutRoomParticipantWithStatus telling if the participant is actually in the breakout room or is just assigned to it but is actually hanging around in the main session.


  • “Globalise” the participant migration events and the getMeetingParticipants call:
    1. Make onParticipantChange, instead of firing when a participant leaves or enters the current meeting or current BOR, get triggered on a participant entering or leaving any room, including the main session, or alternatively bind onBreakoutRoomChange to all participants, and not just to self.
    2. Have getMeetingParticipants return all participants and not just those in the current UUID (be it the main session or a breakout room).
    3. Add a property (e.g. room) to the Participant type describing where the participant really is.

Either would be much appreciated!
Thanks again

Hi @biinster please, check the updated documentation:
BreakOutRoomParticipantWithStatus has the flag participantStatus that has two values: “assigned” or “joined”.

Does it solve the problem? If not, can you please elaborate, what are the edge cases when it doesn’t help?