Как обеспечить доступность членов очереди вызовов RingCentral?

Как я могу получить доступность очереди вызовов для участников очереди для каждой очереди, которая отображается на онлайн-портале учетной записи? Я специально хочу, чтобы статусы Available, Busy и Unavailable отображались в пользовательском интерфейсе в разделе «Доступность участников» для каждой очереди.

Я нашел несколько API-интерфейсов очереди вызовов, которые могут перечислять очереди и участников очереди, но они обеспечивают доступность участников, как и пользовательский интерфейс.

API очереди вызовов:

Изображение ниже взято из статья об очереди вызовов – доступность пользователей и обработка вызовов

Доступность участников очереди вызовов RingCentral


person Grokify    schedule 12.03.2019    source источник


Ответы (1)


Вышесказанное находится на правильном пути. Как только список членов очереди станет доступен, вы можете запросить у каждого пользователя доступность его или ее очереди.

Примечание. Доступность очереди пользователя, представленная ниже, одинакова для всех очередей, в которых он присутствует, поэтому для представления по очереди эту информацию необходимо объединить со списком членства в очереди. Это можно получить из очереди или с точки зрения пользователя:

Чтобы управлять доступностью отдельных очередей, добавьте или удалите пользователя из интересующих очередей, что можно сделать с помощью Редактировать 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