Вышесказанное находится на правильном пути. Как только список членов очереди станет доступен, вы можете запросить у каждого пользователя доступность его или ее очереди.
Примечание. Доступность очереди пользователя, представленная ниже, одинакова для всех очередей, в которых он присутствует, поэтому для представления по очереди эту информацию необходимо объединить со списком членства в очереди. Это можно получить из очереди или с точки зрения пользователя:
Чтобы управлять доступностью отдельных очередей, добавьте или удалите пользователя из интересующих очередей, что можно сделать с помощью Редактировать API участников очереди вызовов.
Для обоих шагов запросите API Get User Status. Пример приведен ниже.
Получить API статуса пользователя:
Пример запроса и ответа выглядит следующим образом:
Запрос:
GET /restapi/v1.0/account/{accountId}/extension/{extensionId}/presence
Ответ:
HTTP 200 OK
{
"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
}
Используйте следующее, чтобы получить доступность очереди пользователя:
1) Настройка очереди пользователей
Свойство пользователя «Не беспокоить» dndStatus
используется для указания того, принимает или не принимает вызовы пользователь, в том числе для очередей вызовов. Пользователь может установить для своего dndStatus
одно из четырех следующих значений, где «Отдел» — это другое название очереди вызовов:
DoNotAcceptAnyCalls
DoNotAcceptDepartmentCalls
TakeAllCalls
TakeDepartmentCallsOnly
Это можно примерно сопоставить с:
- Недоступно для вызовов из очереди:
DoNotAcceptAnyCalls
или DoNotAcceptDepartmentCalls
- Доступно для вызовов очереди:
TakeAllCalls
или TakeDepartmentCallsOnly
2) Общая доступность пользователей
Следующим шагом является проверка свойства presenceStatus
, которое представляет собой перечисляемую строку со следующими значениями: Offline
, Busy
, Available
. Offline
сопоставляется с Unavailable
в пользовательском интерфейсе. Это общая доступность как для личных вызовов, так и для вызовов очереди.
3) Доступность участников очереди
Чтобы создать доступность члена очереди, объедините два вышеуказанных свойства, как в следующем псевдокоде.
Я добавил дополнительное условие «Доступно» ниже, которое строго не требуется, но полезно для объяснения:
member_availability =
user.dndStatus == "DoNotAcceptAnyCalls" ? "Unavailable" :
user.dndStatus == "DoNotAcceptDepartmentCalls" ? "Unavailable" :
user.presenceStatus == "Offline" ? "Unavailable" :
user.presenceStatus == "Busy" ? "Busy" :
user.presenceStatus == "Available" ? "Available" : "Available"
Это дает пользователю доступ ко всем очередям, в которых он находится, поэтому это необходимо сопоставить либо со списком участников очереди, либо со списком очередей пользователя.
Пример кода
Вот некоторый код оболочки Ruby, который я написал, чтобы упростить обновление статуса очереди пользователя здесь:
RingCentral Ruby SDK extension_presence.rb
person
Grokify
schedule
12.03.2019