Присутствие пользователя является правильным местом для поиска этой информации, и это можно сделать статически через REST API и через обновления в режиме реального времени, используя Push-уведомления API подписки.
Состояние, отображаемое в программном телефоне, представляет собой комбинацию нескольких различных значений в присутствии пользователя и может быть таким, как показано ниже.
В следующей статье базы знаний показано, как определяется статус:
Присутствие - Просмотр присутствия через избранное | RingCentral Phone
Состояние их телефона будет отображаться как Доступно, Не беспокоить и Занято. Контакты невидимого или автономного режима будут рассматриваться как невидимые.
" Получить API статуса пользователя " (он же API присутствия) вернет объект, подобный следующему:
{
"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
}
Исходя из этого, статус пользователя может быть построен с использованием этого псевдокода:
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"
Когда страница отображает эту информацию, вы также можете обновить ее в режиме реального времени, создав подписку на конечные точки присутствия для пользователей, для которых вы хотите получать обновления.