Websocket User-API

Обзор

Websocket User-API служит для подключения пользовательских приложений. Требует авторизации и настройки websocket-подключения на конкретные API, доступные пользователю по правам (поле opts.roles сущности user).

Авторизация подключения user-api

Запрос login в рамках user-api может производиться с указанием домена, имени пользователя и пароля.

Запрос авторизации с указанием логина, пароля и домена:
["login", {"qid":0.0.19082918216295153,"login":"admin","pwd":"123","domain":"test.rplatform.ru"]
Запрос авторизации по активной сессии:
["login", {"qid":0.0.19082918216295153,"rsessionid":"06b64123-0176-13d6-89ab-02004c4f4f50"]

Идентификатор активной сессии может быть взят приложением либо из REST-API /rest/v1/iam/sessions/current, либо из cookie-файла RSessionId в браузере, который появляется после проведения авторизации в базовом веб-приложении app-root.

Если метод setup вызывается до авторизации, то в ответе на него все API возвращают "ok", но после авторизации в ответ на запрос login сервер отправит модифицированный список запрошенных API (поле `capabilities):

["login_result", {
   "qid":0.0.19082918216295153,
   "result":"ok",
   "td":"test.rplatform.ru",
   "login":"admin",
   "register":"ok",
   "sessionid":"f098f576-0176-1572-b7ce-02004c4f4f50",
   "capabilities":[
     {"key":"scripteditor","result":"ok"},
     {"key":"scriptnotify","result":"ok"},
     {"key":"test","result":"error","errormsg":"Access denied by IAM (route not found)"}]}]

После авторизации подключения производится его регистрация на сервисе Registrar, где оно поддерживается все время, пока активно. Информация о подключениях доступна клиентам сервиса Registrar, в том числе через API и из сценариев (компоненты "Операция", например, где возможен поиск с фильтрацией и маскировкой). Идентификаторы подключений могут использоваться в компоненте сценариев "Операция с websocket-подключением" для отправки событий и запросов удаленному приложению/системе, а также управлять обменом файлами.

websocktemp - каталог для временных файлов

Каждое websocket-подключение привязано к сессии пользователя. На каждом веб-сервере, обслуживающем websocket-подключение, находится временный каталог этой сессии, доступ к которому есть:

  • у приложений через REST-API /rest/v1/fs/targets/websocktemp в рамках той же сессии;

  • у сценариев компонентом "Операция с websocket-подключением" с выбранной категорией "файлы websocktemp".

Каталог websocktemp и всё его содержимое автоматически удаляется с веб-сервера в следующих случаях:

  • сервер или функциональная роль веб-сервера перезагрузились;

  • по истечении 30 секунд после закрытия последнего websocket-подключения в рамках этой сессии на этом веб-сервере, если к этому времени не появилось новых websocket-подключений с этой сессией.

Состояния

Вне зависимости от того, какие api подключены с помощью метода setup, сервер всегда уведомляет каждое подключение об изменениях состояния авторизованного пользователя.

["user_state_changed", {"presence":"registered", "state":"undefined"}]
  • presence - состояние, которое заказывается самим пользователем. Рассматривается системой как раздел (например: registered, away, callcenter).

  • state - дочернее состояние внутри конкретного presence. Генерируется сервером на основании внутренней логики обслуживания (например: free, busy, break внутри callcenter).

Доступные User-API

Могут быть настроены и подклчюены следующие capabilities:

  • inited - служебный модуль, подключаемый автоматически, для обработки запросов setup и login.

  • loggedin - служебный модуль, подключаемый автоматически после авторизации, для обработки запроса setup и отправки событий user_state_changed.

  • scriptnotify - модуль для отправки уведомлений из сценариев.

  • scripteditor - модуль для обслуживания клиентского приложения редактора сценариев.

  • chatagent - модуль для обслуживания клиенстких приложений оператора чат-центра.

Поддерживается подключение плагинов, реализующих и другие произвольные User-API и соответствующие capabilities.

  • webconstr - плагин для обмена событиями с веб-приложениями, написанными на веб-конструкторе.