# getBOUserByUserID is not correct

**URL:** <https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623>\
**Category:** iOS\
**Created:** [October 9, 2021, 6:07pm UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623 "2021-10-09T18:07:15Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![KAZUMA87](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/kazuma87/32/37556_2.png) [@KAZUMA87](https://devforum.zoom.us/u/KAZUMA87)\
**Post date:** [October 9, 2021, 6:07pm UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/1 "2021-10-09T18:07:15Z")

</div>

Hello ,

getBOUserByUserID is supposed to take userId as an argument, but it seems to accept only bo user id. if userId is given, it returns as nil, but if bo user id is given, MobileRTCBOUser Object is returned.

Isn’t this behavior a mistake?

Thanks.

**Which Mobile Meeting SDK version?**  
CustomUI  
Version 5.7.6

Swift

---

<div class="post-metadata">

**Author:** ![Michael\_Condon](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael_condon/32/13543_2.png) [@Michael\_Condon](https://devforum.zoom.us/u/Michael_Condon)\
**Post date:** [October 11, 2021, 8:43pm UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/2 "2021-10-11T20:43:57Z")

</div>

Hey @KAZUMA87,

Thanks for using the dev forum!

This was a known issue and has since been resolved in a recent hotfix update. Can you update to the latest version?

Thanks!  
Michael

---

<div class="post-metadata">

**Author:** ![KAZUMA87](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/kazuma87/32/37556_2.png) [@KAZUMA87](https://devforum.zoom.us/u/KAZUMA87)\
**Post date:** [October 12, 2021, 11:56am UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/3 "2021-10-12T11:56:47Z")

</div>

Hello @Michael_Condon ,

I tried it with the following code, but it still returned nil, so I don’t think it’s working correctly.

`let BOUser = MobileRTC.shared().getMeetingService()? .getDataHelper()? .getBOUser(byUserID: zoomuserid)`

If the user is not assigned to the Breakoutroom, nil will be returned? If that’s the case, please tell me how to assign any user to the Breakoutroom.

The SDK is version v5.7.6.1076(iOS). CustomUI is used.

Can you please check?

Best Regards.

---

<div class="post-metadata">

**Author:** ![Michael\_Condon](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael_condon/32/13543_2.png) [@Michael\_Condon](https://devforum.zoom.us/u/Michael_Condon)\
**Post date:** [October 15, 2021, 12:39am UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/4 "2021-10-15T00:39:15Z")

</div>

Hey @KAZUMA87,

You need to assign the user by calling the method [assignUser:toBO:](https://marketplacefront.zoom.us/sdk/meeting/ios/interface_mobile_r_t_c_b_o_creator.html#a2449b766288747da4d62eeedbb74de59)

Thanks!  
Michael

---

<div class="post-metadata">

**Author:** ![KAZUMA87](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/kazuma87/32/37556_2.png) [@KAZUMA87](https://devforum.zoom.us/u/KAZUMA87)\
**Post date:** [October 15, 2021, 1:37am UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/5 "2021-10-15T01:37:33Z")

</div>

Hello @Michael_Condon ,

Thanks for the reply.  
I used assignUser:toBO to assign the user, but I don’t think I get the correct result. I think it differs from the documentation. I am doing it as follows

1. Create BO  
`let boid = MobileRTC.shared().getMeetingService()? .getCreatorHelper()? .createBO("TEST ROOM")`

2. Get unassigned users  
`let unassign:Array = (MobileRTC.shared().getMeetingService()? .getDataHelper()? .getUnassignedUserList()))!`

3. Obtain user information

```auto
let boassign = MobileRTC.shared().getMeetingService()? .getDataHelper()? .getBOUser(byUserID: unassign[i] as! String)
print(boassign.getName())

```

→The user name has been obtained.

1. Assign a user  
`MobileRTC.shared().getMeetingService()? .getCreatorHelper()? .assignUser(unassgin[i] as! String, toBO: boid!)`

2. Start BO  
`MobileRTC.shared().getMeetingService()? .getAdminHelper()? .startBO()`

3. Get information from Zoom’s user ID  
`let BOUser = MobileRTC.shared().getMeetingService()? .getDataHelper()? .getBOUser(byUserID: zoomuserid)`

4. Result  
`print(BOUser)`  
→nil  
`print(BOUser?.getId())`  
→nil

**Expected result**  
let boassign = MobileRTC.shared().getMeetingService()? .getDataHelper()? .getBOUser(byUserID: zoomuserid as! String)  
print(boassign.getId())

→return BoUserid

**What we want to do**  
I want to assign a specified user to a specified BO.

**Here is Full Code**

```auto
let unassgin:Array = (MobileRTC.shared().getMeetingService()?.getDataHelper()?.getUnassignedUserList())!
            for i in 0..<unassgin.count{
                let boassign = MobileRTC.shared().getMeetingService()?.getDataHelper()?.getBOUser(byUserID: unassgin[i] as! String)
                print(boassign?.getName())//return valid username
                MobileRTC.shared().getMeetingService()?.getCreatorHelper()?.assignUser(unassgin[i] as! String, toBO: boid!)
                MobileRTC.shared().getMeetingService()?.getAdminHelper()?.startBO()
                let BOUser = MobileRTC.shared().getMeetingService()?.getDataHelper()?.getBOUser(byUserID: zoomuserid)
                print(" *****BOUser*****")
                print(BOUser)//return nii
                print(" *****BOID*****")
                print(BOUser?.getId())//return nil
            }

```

Thanks.

---

<div class="post-metadata">

**Author:** ![Michael\_Condon](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael_condon/32/13543_2.png) [@Michael\_Condon](https://devforum.zoom.us/u/Michael_Condon)\
**Post date:** [October 20, 2021, 7:08pm UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/6 "2021-10-20T19:08:28Z")

</div>

Hey @KAZUMA87,

A user will not become a BO user until the breakout rooms have started. I see you are calling startBO(), however, this is in rapid succession with assigning the user and retrieving the user. This looks to me like this is a race condition. The order of operations should be:

Get user → create BO room → give sdk time to finish creating the breakout room → assign user → give sdk time to finish assigning the user → start the breakout room → give sdk time to finish opening up the breakout rooms → get bo user.

But I think all of these are being done at the same time, which is why it is always nil.

Thanks!  
Michael

---

<div class="post-metadata">

**Author:** ![KAZUMA87](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/kazuma87/32/37556_2.png) [@KAZUMA87](https://devforum.zoom.us/u/KAZUMA87)\
**Post date:** [October 21, 2021, 8:54am UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/7 "2021-10-21T08:54:57Z")

</div>

Hello @Michael_Condon ,

I tried to wait for about 10 seconds before getting it, but it still returned nil.

I rewrote the code as follows

```auto
let unassgin:Array = (MobileRTC.shared().getMeetingService()? .getDataHelper()? .getUnassignedUserList()))! //-> maybe at this point we can get the BOuserid?
        let boid = MobileRTC.shared().getMeetingService()? .getCreatorHelper()? .createBO("TEST ROOM")
        DispatchQueue.main.asyncAfter(deadline: .now()+10){
            for i in 0... <unassgin.count{
                MobileRTC.shared().getMeetingService()? .getCreatorHelper()? .assignUser(unassgin[i] as! String, toBO: boid!)
            }
            DispatchQueue.main.asyncAfter(deadline: .now()+10){
                MobileRTC.shared().getMeetingService()?.getAdminHelper()?.startBO()
                DispatchQueue.main.asyncAfter(deadline: .now()+10){
                   let BOUser = MobileRTC.shared().getMeetingService()?.getDataHelper()?.getBOUser(byUserID: zoomuserid as! String)
                    print(BOUser)//->output nil
                }
            }
        }

```

let unassgin:Array = (MobileRTC.shared().getMeetingService()?.getDataHelper()?.getUnassignedUserList())!  
I think I can get the BOUserid at the time of calling “getUnassignedUserList()”, and I can have the user join the BO, but I can’t assign any user to the appropriate BORoom because I can’t determine which BOUserid the BOUserid I got belongs to.

MobileRTC.shared().getMeetingService()?.getDataHelper()?.getBOUser(byUserID: zoomuserid as! String)  
If I give BOUserid instead of zoomuserid, I get the result instead of nil, but BOUserid is returned instead of zoomuserid.

If there is any mistake, please let me know.

Best Regards.

---

<div class="post-metadata">

**Author:** ![jeremy.provost](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jeremy.provost/32/12182_2.png) [@jeremy.provost](https://devforum.zoom.us/u/jeremy.provost)\
**Post date:** [October 21, 2021, 9:14pm UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/8 "2021-10-21T21:14:33Z")

</div>

I’ve used this part of the SDK extensively, and unfortunately I don’t think that is the purpose of the `getBOUser` function. The documentation states:

> get bo meeting object by bo user id

It is intended to be used to lookup a `MobileRTCBOUser` by their BO user ID. As far as I can tell the SDK does not offer the functionality that you’re looking for, to be able to associate a `MobileRTCBOUser` with a `MobileRTCMeetingUserInfo` or vice versa. I would love to be able to do that as well so hopefully Zoom will take this as a feature request.

---

<div class="post-metadata">

**Author:** ![Michael\_Condon](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael_condon/32/13543_2.png) [@Michael\_Condon](https://devforum.zoom.us/u/Michael_Condon)\
**Post date:** [October 28, 2021, 8:45pm UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/9 "2021-10-28T20:45:34Z")

</div>

Hey @KAZUMA87.

Are you trying to get a User object for a user in a breakout room or trying to get the user Id for a user who is in a breakout room?

Thanks!  
Michael

---

<div class="post-metadata">

**Author:** ![KAZUMA87](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/kazuma87/32/37556_2.png) [@KAZUMA87](https://devforum.zoom.us/u/KAZUMA87)\
**Post date:** [November 6, 2021, 6:10pm UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/10 "2021-11-06T18:10:15Z")

</div>

@Michael_Condon , @jeremy.provost

Sorry for the late reply.  
Later, I managed to programmatically implement sorting to breakout rooms, etc., so this problem has been solved. However, there are times when I cannot get into the breakout room even if joinBo() returns True, is there any way to deal with this?  
However, there are very few means of sorting to breakout rooms and methods, so please expand the API.

- Assigning a specified user to a specified breakout room
- Judging whether or not a breakout room has started

Thanks.

---

<div class="post-metadata">

**Author:** ![Michael\_Condon](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael_condon/32/13543_2.png) [@Michael\_Condon](https://devforum.zoom.us/u/Michael_Condon)\
**Post date:** [November 9, 2021, 6:19pm UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/11 "2021-11-09T18:19:32Z")

</div>

Hey @KAZUMA87,

There are a few callbacks that should be of use here:

onStartBOError in MobileRTCBOAdminDelegate will be called if there was an issue starting the breakout rooms. onBOCreateSuccess in MobileRTCBOCreatorDelegate will be called when the BO was successfully created.

As for

> [@KAZUMA87](#):
>
> Assigning a specified user to a specified breakout room

can you clarify what information you are looking for?

Thanks!  
Michael

---

<div class="post-metadata">

**Author:** ![KAZUMA87](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/kazuma87/32/37556_2.png) [@KAZUMA87](https://devforum.zoom.us/u/KAZUMA87)\
**Post date:** [November 10, 2021, 2:56am UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/12 "2021-11-10T02:56:13Z")

</div>

Hello @Michael_Condon,

The breakout room was written for me to create, and I don’t see a problem with it.

When I do a attendee.joinBo(), it returns true, but sometimes it doesn’t actually join the breakout room, and it says “not joined”. I don’t know what the difference is. Is there a method for detecting if it is in the “not joined” state?

Thanks.

---

<div class="post-metadata">

**Author:** ![Michael\_Condon](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael_condon/32/13543_2.png) [@Michael\_Condon](https://devforum.zoom.us/u/Michael_Condon)\
**Post date:** [November 11, 2021, 11:44pm UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/13 "2021-11-11T23:44:35Z")

</div>

Hey @KAZUMA87,

We do not currently have a callback for this event.

Thanks!  
Michael

---

<div class="post-metadata">

**Author:** ![KAZUMA87](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/kazuma87/32/37556_2.png) [@KAZUMA87](https://devforum.zoom.us/u/KAZUMA87)\
**Post date:** [November 12, 2021, 1:00am UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/14 "2021-11-12T01:00:55Z")

</div>

Hello @Michael_Condon ,

I understand that there is no callback.  
Is there any solution to the fact that sometimes I cannot enter the breakout room even though joinBO() is true?

Thanks.

---

<div class="post-metadata">

**Author:** ![Michael\_Condon](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael_condon/32/13543_2.png) [@Michael\_Condon](https://devforum.zoom.us/u/Michael_Condon)\
**Post date:** [November 12, 2021, 10:30pm UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/15 "2021-11-12T22:30:52Z")

</div>

Hey @KAZUMA87,

I think the only way to check this would be to look at the current attendees within a breakout room.

Thanks!  
Michael

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [December 13, 2021, 8:31am UTC](https://devforum.zoom.us/t/getbouserbyuserid-is-not-correct/58623/16 "2021-12-13T08:31:47Z")

</div>

Closed on December 13, 2021, 8:31am UTC

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
