I've been working a bit with iBeacons (it was a year ago though) and their reliability depends on the brand. An iBeacon has an UUID which you need to add to your app in order for you to listen to the correct iBeacon. Furthermore the iBeacon sends its signal using bluetooth so you need to have bluetooth running on the device with the app doing the listening.
Basically if you want to know when a user enters a room you'll need to set up an iBeacon in the room which sends a signal that the user entering the room catches using your app, and where your app in turn sends some kind of callback to a backend (or however you want to send the information).
You wrote that you want to know when a user enters/leaves his/hers workspace, and to do this with iBeacons the user either needs a unique iBeacon which sends a signal to your app, or the user needs to have your app which catches a signal from an iBeacon placed in the workspace. Furthermore the reliability in the precision of iBeacons are very bad, if there is a wall between the iBeacon and the app searching the signal the distance can easily give a faulty precision of 20m.
It doesn't sound like iBeacons are the way to go. You could of course place iBeacons around, for example, an office and have each user use your app. Your app in turn then listens on the different iBeacons and when it registers a beacon it sends data to a backend API telling that the user has entered the office.
Don't have a solution for you though, sorry :<