# Access in-meeting user info

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

> The code on this page works with either the **default UI** or the **custom UI**.

After joining a meeting, access information for each meeting participant through `IMeetingParticipantsController` and `IMeetingParticipantsCtrlEvent`.

Use one of several different IDs, each serving its own purpose, to access user information.

-   Customer key - A developer-supplied identifier that may be passed in through the `MeetingOptions` instance used to join a meeting.
-   User ID - A nonpersistent, unique per-user identifier assigned by Zoom for the current meeting. If a user leaves and rejoins the same meeting, they get a new user ID assigned each time they join. This is also reassigned when switching between the main meeting and breakout rooms.
-   Persistent ID - A per-user identifier assigned by Zoom for the current meeting and all submeetings, such as breakout rooms. This per-user identifier will not be reassigned in the same meeting or submeeting, but users in different meetings may have the same ID value.
-   Participant ID - A unique per-user identifier assigned by Zoom to a user's account. This persists across all meetings for an account. You can't access this ID through the macOS SDK, but can retrieve it through the REST API.

When a user joins a meeting, get their `IUserInfo` object.

```cpp
    ZOOMSDK::IMeetingService* meetingService_ = nullptr;

    void RegisterParticipantEvents()
    {
        meetingService_->GetMeetingParticipantsController()->SetEvent(this);
    }

    void onUserJoin(ZOOMSDK::IList<unsigned int>* lstUserID,
                    const zchar_t* strUserList = nullptr) override
    {
        if (!lstUserID)
            return;

        for (int i = 0; i < lstUserID->GetCount(); ++i)
        {
            unsigned int userID = lstUserID->GetItem(i);
            ZOOMSDK::IUserInfo* userInfo =
                meetingService_->GetMeetingParticipantsController()->GetUserByUserID(userID);
        }
    }
```

Use the `IUserInfo` to access data specific to that user.

Get the customer key.

```cpp
userInfo.GetCustomerKey()
```

Get the user's avatar picture path, if available.

```cpp
userInfo.GetAvatarPath()
```

Get the user ID.

```cpp
userInfo.GetUserID()
```

Get the username.

```cpp
userInfo.GetUserName()
```

Get the persistent ID.

```cpp
userInfo.GetPersistentId()
```

Each user in a meeting or webinar has a role assigned to one of these values under `UserRole`.

-   `USERROLE_NONE` - No role has been assigned.
-   `USERROLE_HOST` - The host of the current meeting or webinar.
-   `USERROLE_COHOST` - A co-host of the current meeting or webinar.
-   `USERROLE_PANELIST` - A panelist in the current meeting or webinar.
-   `USERROLE_BREAKOUTROOM_MODERATOR` - The breakout room moderator.
-   `USERROLE_ATTENDEE` - An attendee of the current meeting or webinar.

Get the user's role in the current meeting.

```cpp
userInfo.GetUserRole()
```

Determine whether a given user is the current user.

```cpp
userInfo.IsMySelf()
```

---
