Question
People commonly ask on the Zoom Developer Forum:
How can I retrieve participant names and identify meeting participants (ideally by email) in real time when using the Zoom Meeting SDK for Linux, especially in scenarios where participant names may duplicate? What methods can I use to map participant IDs to their display names and emails, and how do the different IDs (GetUserId vs GetPersistentId) relate to webhook or API IDs?
Answer
To effectively retrieve participant names and identify meeting participants using the Zoom Meeting SDK for Linux, you can follow these steps:
Retrieving Participant Names
- Access the Participants Controller: First, obtain the participants controller from your meeting service:
cpp
IMeetingParticipantsController* participantCtl = m_meetingService->GetMeetingParticipantsController();
- Get the Participants List: Retrieve the list of participants, which consists of user IDs:
cpp
auto list = participantCtl->GetParticipantsList();
- Fetch User Information: For each user ID in the list, you can obtain the participant's display name:
cpp IUserInfo* user = participantCtl->GetUserByID(user_id); const wchar_t* name = user->GetUserName(); // This returns the participant’s display name
This approach allows you to convert the IDs obtained from GetParticipantsList
into names by using GetUserByID
followed by IUserInfo
and GetUserName()
.
Identifying Participants by Email
Identifying participants by email, particularly for external guests, requires a combination of SDK events and external data:
- OAuth Consent: Ensure that you require OAuth consent (specifically the
user:read
scope) from each participant. This means that each participant must install your application to grant the necessary permissions. During the meeting, you can correlate SDK user IDs with the users who authorized:
- Use the
Get a User
endpoint to fetch their email after obtaining their user ID.
- Understanding User IDs:
GetUserId()
: This ID is valid only for the current meeting session.GetPersistentId()
: This ID is intended to remain stable across multiple meetings for the same user, making it a better choice for cross-meeting identification. However, be aware that some developers have reported inconsistencies with persistent IDs across meetings, so it's advisable to validate this behavior in your environment.
- Utilizing Meeting Registration: If your meetings require registration, you can capture the
registrant_id
from themeeting.participant_joined
webhook. You can then call theGet a Meeting Registrant
endpoint to retrieve the registrant’s email. This method works well for external guests who register for the meeting.
If you prefer not to build your own mapping solution, consider using third-party APIs like Recall.ai, which provide meeting bots and calendar integrations to help associate meeting participants with their emails.
Additional Considerations
- It is important to note that there is no single SDK call that returns participant emails for all users, especially for external guests.
- When correlating SDK participant IDs with webhook payloads, such as
participant_user_id
, thorough testing is necessary to confirm the mappings. - The
ListMeetingParticipants
API is another option but requires a Business or higher plan.
Zoom Developer Forum Examples
Some examples of this question are: