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 - плагин для обмена событиями с веб-приложениями, написанными на веб-конструкторе.