Выше на правильном пути. Как только список участников очереди станет доступен, вы можете запросить каждого пользователя о доступности его или ее очереди.
Примечание: Доступность очереди пользователя, представленная ниже, одинакова для всех очередей, в которых они присутствуют, поэтому для проведения презентации по очереди эту информацию необходимо объединить со списком участников очереди. Это можно получить из очереди или с точки зрения пользователя:
Чтобы управлять доступностью отдельной очереди, добавьте / удалите пользователя из интересующих очередей, что можно сделать с помощью Редактировать API членов очереди вызовов .
Для обоих шагов запросите API получения статуса пользователя. Пример приведен ниже.
Получить 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