🎯 Гайд по системным действиям
Полное описание всех доступных действий с их параметрами и результатами.
📋 Содержание
- action_hub (1 действий)
- event_processor (1 действий)
- scenario_processor (3 действий)
- storage_hub (1 действий)
- telegram_bot_manager (6 действий)
- tenant_hub (6 действий)
action_hub
Описание: Центральный хаб действий для маршрутизации к сервисам
get_available_actions
Описание: Получение всех доступных действий с их метаданными
Входные параметры:
⚙️ Дополнительные параметры
_namespace(string) (опционально) — Кастомный ключ для создания вложенности в_cache. Если указан, данные сохраняются в_cache[_namespace]вместо плоского кэша. Используется для контроля перезаписи при повторных вызовах одного действия. Доступ через{_cache._namespace.field}. По умолчанию данные мержатся напрямую в_cache(плоское кэширование).
Выходные параметры:
result(string) — Результат: success, errorerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки (например, ошибки валидации полей)
response_data(object) — Словарь всех доступных действий с метаданными
Пример использования:
# В сценарии
- action: "get_available_actions"
params:
# Параметры не требуютсяevent_processor
Описание: Сервис для обработки событий от пулинга
process_event
Описание: Обработка события от пулинга
Входные параметры:
data(object) — Сырое событие от пулинга
Выходные параметры:
result(string) — Результат: success, errorerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "process_event"
params:
data: {}scenario_processor
Описание: Сервис для обработки событий по сценариям
process_scenario_event
Описание: Обработка события по сценариям
Входные параметры:
event_type(string, обязательное, мин. длина: 1) — Тип события (message, callback_query, etc.)bot_id(integer, обязательное, мин: 1) — ID бота от которого пришло событие
Выходные параметры:
result(string) — Результат обработки (success/error)error(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "process_scenario_event"
params:
event_type: "example"
bot_id: 123sync_scenarios
Описание: Синхронизация сценариев тенанта: удаление старых → сохранение новых → перезагрузка кэша
Входные параметры:
tenant_id(integer, обязательное, мин: 1) — ID tenant'а для синхронизации сценариевscenarios(array (of object)) — Массив сценариев для синхронизации
Выходные параметры:
result(string) — Результат синхронизации (success/partial_success/error)error(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "sync_scenarios"
params:
tenant_id: 123
scenarios: []sync_tenant_scenarios
Описание: Синхронизация сценариев для тенанта: парсинг scenarios/*.yaml + синхронизация с БД
Входные параметры:
tenant_id(integer, обязательное, мин: 1) — ID тенанта
Выходные параметры:
result(string) — Результат: success, errorerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "sync_tenant_scenarios"
params:
tenant_id: 123storage_hub
Описание: Сервис для управления tenant storage
sync_tenant_storage
Описание: Синхронизация storage для тенанта: парсинг storage/*.yaml + синхронизация с БД
Входные параметры:
tenant_id(integer, обязательное, мин: 1) — ID тенанта
Выходные параметры:
result(string) — Результат: success, errorerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "sync_tenant_storage"
params:
tenant_id: 123telegram_bot_manager
Описание: Сервис управления lifecycle Telegram ботов
get_telegram_bot_info_by_id
Описание: Получение информации о Telegram боте из БД по bot_id (с кэшированием)
Входные параметры:
bot_id(integer, обязательное, мин: 1) — ID ботаforce_refresh(boolean, опционально) — Принудительно обновить кэш
⚙️ Дополнительные параметры
_namespace(string) (опционально) — Кастомный ключ для создания вложенности в_cache. Если указан, данные сохраняются в_cache[_namespace]вместо плоского кэша. Используется для контроля перезаписи при повторных вызовах одного действия. Доступ через{_cache._namespace.field}. По умолчанию данные мержатся напрямую в_cache(плоское кэширование).
Выходные параметры:
result(string) — Результат запросаerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
response_data(object) — Данные бота из БДbot_id(integer) — ID ботаtelegram_bot_id(integer) — ID бота в Telegramtenant_id(integer) — ID тенантаbot_token(string) — Токен ботаusername(string) — Username ботаfirst_name(string) — Имя ботаis_active(boolean) — Активен ли ботbot_command(array) — Команды бота
Пример использования:
# В сценарии
- action: "get_telegram_bot_info_by_id"
params:
bot_id: 123
# force_refresh: boolean (опционально)get_telegram_bot_status
Описание: Получение статуса Telegram бота (пулинг/вебхук, активность)
Входные параметры:
bot_id(integer, обязательное, мин: 1) — ID бота
⚙️ Дополнительные параметры
_namespace(string) (опционально) — Кастомный ключ для создания вложенности в_cache. Если указан, данные сохраняются в_cache[_namespace]вместо плоского кэша. Используется для контроля перезаписи при повторных вызовах одного действия. Доступ через{_cache._namespace.field}. По умолчанию данные мержатся напрямую в_cache(плоское кэширование).
Выходные параметры:
result(string) — Результат запросаerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
response_data(object) — Статус ботаis_polling(boolean) — Идёт ли пулингis_webhook_active(boolean) — Активен ли вебхукis_active(boolean) — Активен ли ботis_working(boolean) — Работает ли бот (polling или webhook)
Пример использования:
# В сценарии
- action: "get_telegram_bot_status"
params:
bot_id: 123set_telegram_bot_token
Описание: Установка токена Telegram бота
Входные параметры:
tenant_id(integer, обязательное, мин: 1) — ID тенантаbot_token(string|None, опционально) — Токен бота или null для сброса
Выходные параметры:
result(string) — Результат: success, errorerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "set_telegram_bot_token"
params:
tenant_id: 123
# bot_token: string|None (опционально)start_telegram_bot
Описание: Запуск Telegram бота (polling или webhook)
Входные параметры:
bot_id(integer, обязательное, мин: 1) — ID бота
Выходные параметры:
result(string) — Результат: success, errorerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "start_telegram_bot"
params:
bot_id: 123stop_telegram_bot
Описание: Остановка Telegram бота
Входные параметры:
bot_id(integer, обязательное, мин: 1) — ID бота
Выходные параметры:
result(string) — Результат: success, errorerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "stop_telegram_bot"
params:
bot_id: 123sync_telegram_bot
Описание: Синхронизация Telegram бота для тенанта: парсинг bots/telegram.yaml + создание/обновление бота + синхронизация команд + запуск
Входные параметры:
tenant_id(integer, обязательное, мин: 1) — ID тенанта
⚙️ Дополнительные параметры
_namespace(string) (опционально) — Кастомный ключ для создания вложенности в_cache. Если указан, данные сохраняются в_cache[_namespace]вместо плоского кэша. Используется для контроля перезаписи при повторных вызовах одного действия. Доступ через{_cache._namespace.field}. По умолчанию данные мержатся напрямую в_cache(плоское кэширование).
Выходные параметры:
result(string) — Результат: success, error, not_founderror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
response_data(object) (опционально) — Данные ответа (bot_id, action)bot_id(integer) — ID ботаaction(string) — Выполненное действие
Пример использования:
# В сценарии
- action: "sync_telegram_bot"
params:
tenant_id: 123tenant_hub
Описание: Сервис-оркестратор для управления тенантами. Координирует синхронизацию через GitHub, делегирует парсинг и синхронизацию специализированным сервисам
get_bot_id_by_tenant_id
Описание: Получение bot_id бота по tenant_id и типу бота. Запрос к БД, к типу мессенджера не привязан.
Входные параметры:
tenant_id(integer, обязательное, мин: 1) — ID тенантаbot_type(string, опционально) — Тип бота (telegram, в будущем whatsapp и др.). Пока поддерживается только telegram.
⚙️ Дополнительные параметры
_namespace(string) (опционально) — Кастомный ключ для создания вложенности в_cache. Если указан, данные сохраняются в_cache[_namespace]вместо плоского кэша. Используется для контроля перезаписи при повторных вызовах одного действия. Доступ через{_cache._namespace.field}. По умолчанию данные мержатся напрямую в_cache(плоское кэширование)._response_key(string) (опционально) — Кастомное имя для основного поля результата (помечено 🔀). Если указано, основное поле будет сохранено в_cacheпод указанным именем вместо стандартного. Доступ через{_cache.{_response_key}}. Работает только для действий, поддерживающих переименование основного поля.
Выходные параметры:
result(string) — Результат: success, errorerror(object) (опционально) — Структура ошибки (NOT_FOUND если у тенанта нет бота данного типа)code(string) —message(string) —
response_data(object) —- 🔀
bot_id(integer) — ID бота в БД
- 🔀
Примечание:
- 🔀 — поле, которое можно переименовать через параметр
_response_keyдля удобного доступа к данным
Пример использования:
# В сценарии
- action: "get_bot_id_by_tenant_id"
params:
tenant_id: 123
# bot_type: string (опционально)get_tenant_status
Описание: Получение статуса тенанта по кэшу: дата последнего обновления, последняя ошибка (без данных о ботах)
Входные параметры:
tenant_id(integer, обязательное, мин: 1) — ID тенанта
⚙️ Дополнительные параметры
_namespace(string) (опционально) — Кастомный ключ для создания вложенности в_cache. Если указан, данные сохраняются в_cache[_namespace]вместо плоского кэша. Используется для контроля перезаписи при повторных вызовах одного действия. Доступ через{_cache._namespace.field}. По умолчанию данные мержатся напрямую в_cache(плоское кэширование).
Выходные параметры:
result(string) — Результат: successresponse_data(object) — Данные кэша тенантаlast_updated_at(string) (опционально) — Дата последнего успешного обновленияlast_failed_at(string) (опционально) — Дата последней ошибкиlast_error(object) (опционально) — Объект последней ошибки (code, message, details)
Пример использования:
# В сценарии
- action: "get_tenant_status"
params:
tenant_id: 123get_tenants_list
Описание: Получение списка всех ID тенантов с разделением на публичные и системные
Входные параметры:
⚙️ Дополнительные параметры
_namespace(string) (опционально) — Кастомный ключ для создания вложенности в_cache. Если указан, данные сохраняются в_cache[_namespace]вместо плоского кэша. Используется для контроля перезаписи при повторных вызовах одного действия. Доступ через{_cache._namespace.field}. По умолчанию данные мержатся напрямую в_cache(плоское кэширование).
Выходные параметры:
result(string) — Результат: success, errorerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
response_data(object) —tenant_ids(array (of integer)) — Массив ID всех тенантовpublic_tenant_ids(array (of integer)) — Массив ID публичных тенантовsystem_tenant_ids(array (of integer)) — Массив ID системных тенантовtenant_count(integer) — Общее количество тенантов
Пример использования:
# В сценарии
- action: "get_tenants_list"
params:sync_all_tenants
Описание: Синхронизация всех тенантов (сначала pull из GitHub, потом синхронизация всех)
Входные параметры:
Выходные параметры:
result(string) — Результат: success, partial_success, errorerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "sync_all_tenants"
params:sync_tenant
Описание: Синхронизация конфигурации тенанта с базой данных (сначала обновляет из GitHub, затем синхронизирует)
Входные параметры:
tenant_id(integer, обязательное, мин: 1) — ID тенанта для синхронизации
Выходные параметры:
result(string) — Результат: success, error, timeout, not_founderror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "sync_tenant"
params:
tenant_id: 123update_tenant_config
Описание: Обновление конфига тенанта (обновляет БД, инвалидирует кэш). Обновляет только переданные поля, остальные не трогает
Входные параметры:
tenant_id(integer, обязательное, мин: 1) — ID тенантаai_token(string|None, опционально) — AI API токен для тенанта (опционально, если не передан - поле не обновляется, если передан null - удаляется)
Выходные параметры:
result(string) — Результат: success, errorerror(object) (опционально) — Структура ошибкиcode(string) — Код ошибкиmessage(string) — Сообщение об ошибкеdetails(array) (опционально) — Детали ошибки
Пример использования:
# В сценарии
- action: "update_tenant_config"
params:
tenant_id: 123
# ai_token: string|None (опционально)