# How to identify users using SDK during live meetings

**URL:** <https://devforum.zoom.us/t/how-to-identify-users-using-sdk-during-live-meetings/106697>\
**Category:** Meeting SDK\
**Tags:** webhooks, api, sdk\
**Created:** [March 28, 2024, 7:57am UTC](https://devforum.zoom.us/t/how-to-identify-users-using-sdk-during-live-meetings/106697 "2024-03-28T07:57:15Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![harsh3](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/harsh3/32/57332_2.png) [@harsh3](https://devforum.zoom.us/u/harsh3)\
**Post date:** [March 28, 2024, 7:57am UTC](https://devforum.zoom.us/t/how-to-identify-users-using-sdk-during-live-meetings/106697/1 "2024-03-28T07:57:15Z")

</div>

**Meeting SDK Type and Version**  
We are using linux meeting SDK, version 5.16.1

**Description**  
Hi team, we have implemented a bot using the meeting SDK that joins our user’s meetings, subscribes to raw audio, and transcribes the audio in realtime. For this purpose, we currently associate all the user information against the user name that we get using the IUserInfo-\>GetUserName() method. But this approach doesn’t scale well as users can join from conference rooms, and multiple participants in the meeting may have same name. We do have API access via the zoom admin OAuth, and hence can use zoom APIs for this purpose.

We are exploring options to get the email info of the participants from a live meeting which our bot has joined. These are the following approaches that we figured, and wanted to check with the community on how they solve similar use-cases -

1. Subscribe to zoom webhook events (specifically `meeting:participant_joined`), and then cross match the `participant_user_id` with the persistent\_id that we get back from the meeting SDK: IUserInfo-\>GetPersistentId(). Wanted to check which of the id from the webhook event payload would match the id that we get back in meeting SDK for participants.  
This approach has some drawbacks like we would receive webhook events for all meetings irrespective of whether our bot has joined the meeting or not.

2. Use [ListMeetingParticipants](https://developers.zoom.us/docs/api/rest/reference/account/methods/#operation/dashboardMeetingParticipants) API to get the same information as the webhook event but this API is only available for Business or higher plans.

3. Receive callbacks for `onUserJoin` event in the meeting SDK and use some other API to cross match the `user_id` from the meeting SDK with the zoom user.

Note that we also want to be able to identify external participant emails who have been invited to the meeting using calendar (Google or Outlook).  
Thanks in advance!

---

<div class="post-metadata">

**Author:** ![amanda-recallai](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/amanda-recallai/32/44747_2.png) [@amanda-recallai](https://devforum.zoom.us/u/amanda-recallai)\
**Post date:** [March 29, 2024, 10:57pm UTC](https://devforum.zoom.us/t/how-to-identify-users-using-sdk-during-live-meetings/106697/2 "2024-03-29T22:57:51Z")

</div>

Hey @harsh3 ,

This is a bit of a tricky one. As you’ve deduced, the emails of users external to your Zoom account aren’t exposed, and so you need a way to map a user ID to their email. You can get the `user_id` in several ways, but the key here is actually mapping that ID to an email.

There a few ways to go about this.

### 1. OAuth permission

The first way involves getting access to the `user:read` scope for the user by having the user install your app via OAuth. Then, you can use the [Get a User](https://developers.zoom.us/docs/api/rest/reference/user/methods/#operation/user) endpoint to map the user ID to their email.

In practice, this means adding this scope to your Meeting SDK App and directing the user through an OAuth flow to receive a token with the necessary permissions.

The obvious downside here is that this would require every participant in the call to provide this permission by going through the OAuth flow.

At [Recall.ai](https://www.recall.ai/), we have an API and managed infrastructure for meeting bots, and use a similar mechanism in our Zoom OAuth integration.

### 2. Meeting Registration

Another potential solution here is to leverage [meeting registration](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065026).

When users register, you’ll have access to the `registrant_id` (e.g. from the [`participant_joined`](https://developers.zoom.us/docs/api/rest/reference/zoom-api/events/#operation/meeting.participant_joined) webhook).

Then you can then use the [Get a Meeting Registrant](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetingRegistrantGet) endpoint to fetch their email.

### 3. Recall.ai

A final alternative is to use [Recall.ai](https://www.recall.ai/) instead.

It’s a simple 3rd party API that lets you use meeting bots to get raw audio/video from meetings without you needing to spend months to build, scale and maintain these bots.

We have a calendar integration with Google Calendar and Microsoft Outlook that ties the meeting data to a user’s calendar, making it simple to map a given meeting participant’s data to their email.

Let me know if you have any questions!

---

<div class="post-metadata">

**Author:** ![harsh3](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/harsh3/32/57332_2.png) [@harsh3](https://devforum.zoom.us/u/harsh3)\
**Post date:** [March 31, 2024, 4:08pm UTC](https://devforum.zoom.us/t/how-to-identify-users-using-sdk-during-live-meetings/106697/3 "2024-03-31T16:08:24Z")

</div>

Thanks for the detailed explanation @amanda-recallai!

I understood #2, however I’m not sure if we would be able to apply meeting registration for the meetings of our customers.  
However, for #1 and for Recall, how does it map the user’s id from the meeting SDK? (For the linux SDK there are two different user ids that we can get back for a meeting - [user\_id](https://marketplacefront.zoom.us/sdk/meeting/linux/class_i_user_info.html#a3d9f4eb7ca6da129a8ff91c9dcd5e5d6) and [persistent\_id](https://marketplacefront.zoom.us/sdk/meeting/linux/class_i_user_info.html#a529c83af69b48ec984c498f8c44e1ee0)).

---

<div class="post-metadata">

**Author:** ![amanda-recallai](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/amanda-recallai/32/44747_2.png) [@amanda-recallai](https://devforum.zoom.us/u/amanda-recallai)\
**Post date:** [April 4, 2024, 9:58pm UTC](https://devforum.zoom.us/t/how-to-identify-users-using-sdk-during-live-meetings/106697/4 "2024-04-04T21:58:08Z")

</div>

GetUserId() returns an ID for the user that is only valid for the duration of the meeting.

GetPersistentId() returns a persistent ID for the user, and so you should use this ID to resolve a user across all of their meetings/to their specific user info.

---

<div class="post-metadata">

**Author:** ![emotioniq](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/emotioniq/32/62111_2.png) [@emotioniq](https://devforum.zoom.us/u/emotioniq)\
**Post date:** [August 12, 2024, 4:07pm UTC](https://devforum.zoom.us/t/how-to-identify-users-using-sdk-during-live-meetings/106697/5 "2024-08-12T16:07:38Z")

</div>

@amanda-recallai I try to get persistant ID of user, but in different meetings this ID is different. So, how I can resolve a user across all of their meetings/to their specific user info
