Get a persistent id on participants in meetings

Hey there,

So I am building a bot that joins meetings and interacts with participants. I would like for the bot to be able to consistently identify participants even if they leave and rejoin. I tried to use the persistentID from the IUserInfo but that still seems to change every time a user leaves and rejoins. I am using the Meeting SDK for Linux.

  • Is there any way to get an actual persistent ID for users?
  • What is the purpose of the persistentID and in what way is it persistent?

Thank you,
Noah

Hi , @noahviktorschenk,

Great question! The persistent ID for users is session-based. Each time a user leaves and rejoins, they will be assigned a new ID. However, this persistent ID can be used to identify the user throughout their entire session lifecycle across platforms. So if the user joins via web or Windows SDK, you’ll be able to use the persistent ID to identify them.

Thank you for the quick response @donte.zoom. What would you then recommend to identify users across sessions, if there are any?

@noahviktorschenk ,

When it comes to identifying users across sessions, you have the option to leverage the Customer ID, which is an ID you provide when joining the meeting that can be used as a custom tracking ID.

Regarding Persistent ID, it is similar to user ID but persists when switching between breakout rooms and the main meeting. Since a breakout room is actually a distinct meeting instance under the hood, a given user will have a different user ID when they move between breakout rooms and the main meeting

Meeting SDK Linux: IUserInfo

https://marketplacefront.zoom.us/sdk/meeting/linux/class_i_user_info.html

Thank you for the clarification @donte.zoom.

If I understood it correctly the Customer ID requires me to configure their join params, correct?

In my case, the meeting is an open meeting where people join via an invite link, so I am not sure if I can use this. Could you clarify this?

Yes, that’s correct, @noahviktorschenk ! In your case, you can rely on the persistent user ID to track users consistently across sessions when they transition between a main meeting and breakout rooms. This ID remains the same in such scenarios.

However, if a user leaves and rejoins a meeting, their user ID will change. To handle this, you can implement a backend tracking solution using unique URLs for each participant with the Zoom REST API and Webhooks. Here’s how:

1. Creating Meetings with Registration

To streamline participant tracking, you can set up meetings with automatic registration and provide each participant with a unique URL. This approach ensures that users join with the email they used during registration, regardless of their Zoom client login status.

1a. Create a Meeting with Registration
Set up the meeting with automatic registration, disable multiple device login, and ensure manual approval.

POST /users/{userId}/meetings
{
  "start_time": "2024-09-20T14:00:00Z",
  "timezone": "America/Los_Angeles",
  "topic": "Participant Tracking Configuration",
  "type": 2,
  "duration": 15,
  "settings": {
    "allow_multiple_devices": false,
    "join_before_host": true,
    "waiting_room": false,
    "approval_type": 1,
    "registration_type": 2,
    "audio": "both"
  }
}

1b. Add Meeting Registrants

Register users programmatically.

POST /meetings/{meetingId}/registrants
{
  "email": "rachel.ruskin@whoareyou.com",
  "first_name": "Rachel",
  "last_name": "Ruskin",
  "auto_approve": true
}

2. Creating Meetings Without Registration

If you prefer not to use registration, you can track users by utilizing Webhooks. For instance, the meeting.participant_joined event provides a unique identifier for each participant. You can ingest this data into your system for tracking purposes.

Learn More: meeting.participant_joined Webhook Documentation

3. Creating Unique Invite Links

You can also generate unique join URLs for each attendee using the meetingInviteLinksCreate endpoint.

POST /users/{userId}/meetings
{
  "attendees": [
    {
      "join_url": "https://example.com/j/11111",
      "name": "Jill Chill"
    }
  ]
}

I hope this helps! Let us know if you have any more questions or clairfications.

Thank you for the detailed walkthrough @donte.zoom.

The bot I am build will be joining meetings from external accounts as well, so I can’t use number 1 or 3. Can I use number 2 even when the meeting is hosted by another account that I do not have access to?

Thank you

You’re welcome, @noahviktorschenk! Since the meeting is hosted by another account that you don’t have access to, you won’t receive the webhook events.

Okay, @donte.zoom, is there any way to get a user’s email since they must be persistent, correct?

Also, is the userId always unique, or can there be duplicates across meetings? Can I be sure that no user will ever have the same userId across any meeting?

Hi @noahviktorschenk,

You should be able to get the email address of a user given their userId by calling the Get Users endpoint (Users APIs - Zoom Developers). This will return a bunch of information about this user, including their email address.

This will require that your users have your Zoom app installed on their account and that you have the necessary scopes to call this endpoint.

You can also get access to information about meeting participants through the Recall.ai API. Here’s a link to our docs where you can see the information we expose for each participant in the meeting: Meeting Participants & Metadata

@noahviktorschenk ,

Also, check out the support documentation on email addresses:

Thank youy very much for the help, this will work.

1 Like