User presence is the right place to find this information and this can be done statically via the REST API and via real-time updates using the Subscription API's Push Notifications.
The status shown in the softphone is an combination of several different values in user presence and can be as shown below.
The following KB article indicates how the status is determined:
Presence - View Presence via Favorites | RingCentral Phone

The status of their phone will be displayed as Available, Do Not Disturb, and Busy. Contacts on Invisible or Offline will be seen as Invisible.
The "Get User Status API" (aka Presence API) will return an object like the following:
{
"uri": "https://platform.ringcentral.com/restapi/v1.0/account/403228676008/extension/403228676008/presence",
"extension": {
"uri": "https://platform.ringcentral.com/restapi/v1.0/account/403228676008/extension/403228676008",
"id": 403228676008,
"extensionNumber": "101"
},
"presenceStatus": "Available",
"telephonyStatus": "NoCall",
"userStatus": "Available",
"dndStatus": "TakeAllCalls",
"allowSeeMyPresence": true,
"ringOnMonitoredCall": false,
"pickUpCallsOnHold": true
}
From this, user status can be built using this pseudocode:
user_status =
!user.allowSeeMyPresence ? "Invisible" :
user.presenceStatus == "Offline" ? "Invisible" :
user.dndStatus == "DoNotAcceptAnyCalls" ? "Do Not Disturb" :
user.telephonyStatus == "CallConnected" ? "On a Call" :
user.telephonyStatus == "OnHold" ? "On Hold" :
user.presenceStatus == "Busy" ? "Busy" : "Available"
Once a page you display this info, you can also update it in real time by creating a subscription to the presence endpoints for the users you wish to receive updates for.