Интеграция через виджет
Самый простой способ — встраиваемый веб-компонент <session-widget>. Добавляется на страницу одним <script> тегом, не требует бэкенда с вашей стороны.
Быстрый старт
<script src="https://sessions-widget.explorer.debex.ru/main.js" type="module"></script>
<session-widget
flow-id="ID_ПРОЦЕССА"
autostart
></session-widget>
Виджет сам загрузит шрифты и стили — никаких дополнительных зависимостей не нужно.
Полный пример
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Интеграция с DEBEX</title>
</head>
<body>
<script src="https://sessions-widget.explorer.debex.ru/main.js" type="module"></script>
<session-widget
style="max-width: 500px; display: block; margin: 0 auto;"
flow-id="b3f70e2e-ed61-4145-a2ed-f69a459a8934"
webhook-url="https://example.com/webhook"
webhook-events='["session_completed", "session_failed"]'
show-cookies="true"
autostart
></session-widget>
<script>
const widget = document.querySelector('session-widget');
widget.addEventListener('sessionStarted', (e) => {
console.log('Сессия создана:', e.detail.session_id);
console.log('Токен:', e.detail.token);
});
widget.addEventListener('sessionUpdated', (e) => {
console.log('Текущий шаг:', e.detail.step_name);
});
widget.addEventListener('sessionCompleted', (e) => {
console.log('Готово! Cookies:', e.detail.cookies);
});
</script>
</body>
</html>
Атрибуты
| Атрибут | Тип | По умолчанию | Описание |
|---|---|---|---|
flow-id |
string | "" |
ID процесса. Если указан — сразу выбирает процесс |
token |
string | "" |
JWT-токен существующей сессии. Если указан — открывает эту сессию |
autostart |
boolean | false |
Автоматически запустить сессию (если все параметры валидны) |
show-cookies |
boolean | false |
Показать cookies в UI после завершения |
show-process-inputs |
boolean | true |
Показать выбор процесса. Включается автоматически, если flow-id невалиден |
show-webhook-inputs |
boolean | true |
Показать настройку вебхуков |
webhook-url |
string | "" |
URL для вебхуков (должен начинаться с https://) |
webhook-events |
JSON | [] |
Список событий для вебхуков, например '["session_completed"]' |
События
Виджет выбрасывает три CustomEvent, на которые можно подписаться через addEventListener:
sessionStarted
Сессия создана, процесс запущен.
widget.addEventListener('sessionStarted', (e) => {
e.detail.session_id // ID сессии
e.detail.token // JWT-токен для доступа к сессии
e.detail.webhook_secret // Секрет для верификации вебхуков (HMAC-SHA256)
e.detail.flow_name // Название процесса
});
sessionUpdated
Состояние сессии изменилось (смена шага, отправка формы).
widget.addEventListener('sessionUpdated', (e) => {
e.detail.step_name // Название текущего шага
e.detail.step_description // Описание шага
e.detail.elements // Элементы формы (см. ниже)
e.detail.is_failed // true, если шаг не удался
});
sessionCompleted
Сессия завершена успешно, cookies получены.
widget.addEventListener('sessionCompleted', (e) => {
e.detail.cookies // Массив cookies
e.detail.is_completed // true
});
Структура cookie
{
"name": "auth_token",
"value": "abc123...",
"domain": ".mos.ru",
"path": "/",
"expires": 1735689600,
"http_only": true,
"secure": true,
"same_site": "Lax"
}
Элементы формы
Каждый шаг содержит массив elements — полей, которые виджет отображает пользователю:
| Тип | Описание |
|---|---|
input |
Текстовое поле (логин, пароль и т.д.) |
select |
Выпадающий список |
input_combined |
Мультисимвольный ввод (OTP-код) |
error |
Сообщение об ошибке |
info |
Информационное сообщение |
{
"code": "login",
"type": "input",
"name": "Логин",
"value": "",
"is_masked": false
}