Websocket User-API
Обзор
Websocket User-API служит для подключения пользовательских приложений.
Требует авторизации и настройки websocket-подключения на конкретные API, доступные пользователю по правам (поле opts.roles сущности user).
Авторизация подключения user-api
Запрос login в рамках user-api может производиться с указанием домена, имени пользователя и пароля.
["login", {"qid":0.19082918216295153,"login":"admin","pwd":"123","td":"test.era-platform.ru"}]
[
"login",
{
"qid":0.19082918216295153,
"rsessionid":"06b64123-0176-13d6-89ab-02004c4f4f50"
}
]
Идентификатор активной сессии может быть взят приложением либо из REST-API /rest/v1/iam/sessions/current,
либо из cookie-файла EraSessionId в браузере, который появляется после проведения авторизации в базовом веб-приложении app-root.
Если метод setup вызывается до авторизации, то в ответе на него все API возвращают "ok", но после авторизации в ответ на запрос login сервер отправит модифицированный список запрошенных API (поле `capabilities):
[
"login_result",
{
"qid":0.19082918216295153,
"result":"ok",
"td":"test.era-platform.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).
Информация о подключении
[
"connection_info",
{
"qid":930293482233
}
]
[
"connection_info_result",
{
"qid":930293482233,
"result":"ok",
"site":"main_site",
"ownertype":"user",
"domain":"test.rootdomain.ru",
"userid":"e7adf0aa-05b7-8163-948c-3392a9660db9",
"sessionid":"0de5ea8b-017d-9458-00d5-7cd30a921f58",
"connectionid":"aa1bd0bb-017d-9638-e89d-7cd30a921f58",
"capabilities":["rest","scripteditor","scriptnotify","subscr"],
"datetime":"2021-12-07T18:48:54.191Z",
"timestamp":1638902934191,
"webservers":["http://192.168.0.112:80"],
"roles":["admin","monitor","scripteditor","stat","test"],
"timezone":"default",
"userlogin":"admin",
"username":"Administrator"
}
]
Доступные User-API
Могут быть настроены и подклчюены следующие capabilities:
-
inited - служебный модуль, подключаемый автоматически, для обработки запросов
setupиlogin. -
loggedin - служебный модуль, подключаемый автоматически после авторизации, для обработки запроса
setupи отправки событийuser_state_changed. -
scriptnotify - модуль для отправки уведомлений из сценариев.
-
scripteditor - модуль для обслуживания клиентского приложения редактора сценариев.
-
rest - управление классами системы (статическими и динамическими).
-
subscr - модуль для обслуживания запросов подписки на события и уведомления.
-
webconstr - плагин для обмена событиями с веб-приложениями, написанными на веб-конструкторе.
-
quota - плагин для работы с сервисом предоставления квот доступа.
Поддерживается подключение плагинов, реализующих и другие произвольные User-API и соответствующие capabilities.