{ "id": "ShariXKnowledgeBasicBotBPMN", "page": "sharixopen:knowledge:scenarios:basic_bot", "area": "open", "type": "procedure", "title": "Диагностический XMPP-обработчик open_basic_bot", "status": "review", "schema_version": 1, "relations": { "related_to": [ "ShariXKnowledgeOpenKnowledgeModulesHandlers", "ShariXKnowledgeScenarios" ], "depends_on": [ "ShariXKnowledgeOpenKnowledgeModulesHandlers" ], "verified_by": [ "ShariXKnowledgeVerification" ] }, "extensions": { "taxonomy": { "domain": "integrations", "lifecycle": "implemented", "component": "handlers_examples, handlers_backend", "parents": [ "ShariXKnowledgeScenarios" ], "terms": [ "audience_developer", "audience_operator", "audience_administrator", "audience_support", "audience_ai", "product_sharix_open", "material_scenario", "topic_operations_diagnostics", "topic_handlers_blockly", "topic_handlers_runtime", "xmpp", "first_party_handler", "bpmn", "blockly", "generated_python" ] }, "diagram": { "format": "bpmn", "executable": false }, "source_evidence": [ { "repository": "sharix-open-handlers-examples", "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_basic_bot.py", "sha256": "5c981c5fbafdf2390816425d987e55310d42135c8ce2f38bbbf18fc050307d06" }, { "repository": "sharix-open-handlers-examples", "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_basic_bot.json", "sha256": "c04234ef2ea2ca293f8a60971a1fd7df3289a61a044469249f0c68d77b511e67" }, { "repository": "sharix-open-handlers-examples", "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde" }, { "repository": "sharix-open-handlers-examples", "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "first_party_operations/open_basic_bot.py", "sha256": "89b14be72b09de5a269109ab1a2ae3f41fc67f3cb26f03e712a041f7770679ea" }, { "repository": "sharix-open-handlers-examples", "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "config.py", "sha256": "7b23db9ed283d3bbc3cf2cfbd5d41c629f6be507c3ca38c611572d08a75743a4" }, { "repository": "sharix-open-handlers-backend", "commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "first_party_blockly_codegen.py", "sha256": "7f4dc6607ad62f3150c58de6341b758ebe97f81bd936c9ec033b7d86fed44640" }, { "repository": "sharix-open-handlers-backend", "commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/first_party_handler_runtime.py", "sha256": "fb5ee98561b029de9291e73c2a08205cc9fc2b7b239abffe4a4bb24f56093bdb" }, { "repository": "sharix-open-handlers-backend", "commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "main.py", "sha256": "66b7df94fedbec931ed4cb2d4e1afd9cf0386e14ed0932e22b15eb301cd792d7" }, { "repository": "sharix-open-handlers-backend", "commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "runtime_provider.py", "sha256": "c311d3b0721d18d8eccc9cd7fba155108bf285df3002507ee915ee73b797a2f4" }, { "repository": "sharix-open-handlers-backend", "commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/JabberBot.py", "sha256": "7fbd4d1f41bc867109b73dbb632efcfae920269a1aaf6da0e577cc70838820f1" } ], "handler_process": { "handler_id": "open_basic_bot", "source_kind": "git_builtin", "canonical_python_verified": true, "reviewed_on": "2026-10-29", "generator": "tools/generate_handler_bpmn.py", "generator_sha256": "488101a6be2f8f43d63ce966760be9f1c3664c88d88bed17ce0d6bfee9563cae", "models": { "startup": "ae8147b66ba26fb7417a6c237e9607ca4b3f95aa5be630f8c167ce2f701f0c46", "filter": "6845c89ca53a7cc6cb08ae065905eacc56b463ab85b890e1cd54a4997f4eafb4" }, "canonical_renderer": "handlers_backend/first_party_blockly_codegen.py", "typed_operations": [ "xmpp_diagnostic_basic" ] }, "classification": { "schema": "sharix.knowledge.classification.v1", "products": [ "sharix_open" ], "audiences": [ "developer", "operator", "administrator", "support", "ai" ], "material": "scenario", "topics": [ "operations/diagnostics", "handlers/blockly", "handlers/runtime" ], "tag_terms": [ "audience_developer", "audience_operator", "audience_administrator", "audience_support", "audience_ai", "product_sharix_open", "material_scenario", "topic_operations_diagnostics", "topic_handlers_blockly", "topic_handlers_runtime", "xmpp", "first_party_handler", "bpmn", "blockly", "generated_python" ], "registry_document": "ShariXKnowledgeClassification", "state_meaning": "implemented — описана проверенная реализация исходников; серверный runtime отдельно; review — состояние текста" }, "editorial_review": { "date": "2026-10-31", "scope": "Конкретизация действий, условий, результатов и диагностики; перечисления; исходные BPMN сохранены", "current_source_records_verified": 10, "original_source_evidence_recheck": "После git fetch все исходные SHA-256 совпали; source_evidence содержит текущие проверенные commits", "canonical_regeneration": { "kind": "first_party", "compared_python_paths": [ "handlers/open_basic_bot.py" ], "generator_sources_verified": 11, "handler_executed": false }, "runtime_checked": false, "correction": "Строка «Сообщение отправлено» пишется до send_message; сам лог не подтверждает успех вызова или доставку" } }, "content_sha256": "99b71eade93ad4d4af93f813d564096d2e108df5998d317b939246b5792894f4", "schema": 1 } ====== Диагностический XMPP-обработчик open_basic_bot ====== ~~NOCACHE~~ **Назначение:** [[sharixopen:knowledge:classification:materials#scenarij_processa|Сценарий процесса]]. **Продукт:** [[sharixopen:knowledge:classification:products#sharix_open|ShariX Open]]. **Для кого:** [[sharixopen:knowledge:classification:audiences#razrabotchik|Разработчик]] · [[sharixopen:knowledge:classification:audiences#operator_razvjortyvanija|Оператор развёртывания]] · [[sharixopen:knowledge:classification:audiences#administrator|Администратор]] · [[sharixopen:knowledge:classification:audiences#podderzhka|Поддержка]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]]. **Темы:** [[sharixopen:knowledge:classification:topics#diagnostika|Эксплуатация → Диагностика]] · [[sharixopen:knowledge:classification:topics#blockly|Обработчики → Blockly]] · [[sharixopen:knowledge:classification:topics#runtime|Обработчики → Runtime]]. **Область:** ShariX Open. **Обработчик:** ''open_basic_bot''. Это системный first-party handler без типа/рабочего статуса Ticket. 31.10.2026 исходники повторно получены из Git. First-party Python совпал с каноническим renderer; отдельно проверены операция xmpp_diagnostic_basic и общий launcher. Сам обработчик и его внешние действия при анализе не запускались. Выбранная версия, настройки и работоспособность конкретной установки проверяются отдельно. ===== Назначение и канонический контракт ===== Бот предназначен для минимальной диагностики XMPP: * при запуске вызывает отправку сообщения самому себе; * callback записывает факт получения разрешённых входящих сообщений; * заказ и Ticket этим обработчиком не изменяются; * сбор отчётов других handlers и диалог поддержки здесь не реализованы. Каноническая цепочка: - Blockly workspace содержит typed root и операцию xmpp_diagnostic_basic. - Из workspace генерируется Python с bind_first_party_handler. - Runtime сверяет program tuple с каталогом builtin handler. - Проверяет runtime module, build_binding и полноту XMPP binding. Несовпадение контракта отклоняется. Реализацию операции анализируют отдельно от короткого generated wrapper. Реализация typed operation находится в ''first_party_operations/open_basic_bot.py'' и тоже включена в закреплённые источники. Побайтовое совпадение маленького generated wrapper не заменяет анализа этого файла и общего launcher. BPMN описательные, isExecutable=false; Blockly XML/JSON при запуске не интерпретируется. ===== Запуск и внешнее XMPP-соединение (BPMN) ===== {"notes": ["BPMN isExecutable=false; first-party Blockly генерирует Python binding.", "Runtime сверяет operation tuple с каталогом и строит binding; Blockly в runtime не интерпретируется.", "Диагностический send самому себе не проверяет весь бизнес-процесс и не ждёт подтверждения доставки."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_basic_bot.py", "repository": "sharix-open-handlers-examples", "sha256": "5c981c5fbafdf2390816425d987e55310d42135c8ce2f38bbbf18fc050307d06"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_basic_bot.json", "repository": "sharix-open-handlers-examples", "sha256": "c04234ef2ea2ca293f8a60971a1fd7df3289a61a044469249f0c68d77b511e67"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "first_party_operations/open_basic_bot.py", "repository": "sharix-open-handlers-examples", "sha256": "89b14be72b09de5a269109ab1a2ae3f41fc67f3cb26f03e712a041f7770679ea"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "config.py", "repository": "sharix-open-handlers-examples", "sha256": "7b23db9ed283d3bbc3cf2cfbd5d41c629f6be507c3ca38c611572d08a75743a4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "first_party_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "7f4dc6607ad62f3150c58de6341b758ebe97f81bd936c9ec033b7d86fed44640"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/first_party_handler_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "fb5ee98561b029de9291e73c2a08205cc9fc2b7b239abffe4a4bb24f56093bdb"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "main.py", "repository": "sharix-open-handlers-backend", "sha256": "66b7df94fedbec931ed4cb2d4e1afd9cf0386e14ed0932e22b15eb301cd792d7"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "runtime_provider.py", "repository": "sharix-open-handlers-backend", "sha256": "c311d3b0721d18d8eccc9cd7fba155108bf285df3002507ee915ee73b797a2f4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/JabberBot.py", "repository": "sharix-open-handlers-backend", "sha256": "7fbd4d1f41bc867109b73dbb632efcfae920269a1aaf6da0e577cc70838820f1"}]} runtime_start runtime_binding runtime_connect runtime_ok runtime_send runtime_return runtime_end runtime_failed runtime_Flow_0 runtime_Flow_0 runtime_Flow_1 runtime_Flow_1 runtime_Flow_2 runtime_Flow_2 runtime_Flow_3 runtime_Flow_6 runtime_Flow_3 runtime_Flow_4 runtime_Flow_4 runtime_Flow_5 runtime_Flow_5 runtime_Flow_6 Общий launcher: - Загружает выбранную Python version. - Регистрирует message callback и запускает XMPP loop. - Ждёт connected_event не дольше TIME_TO_CONNECT. - Если соединение не установлено — возвращает ненулевой результат; далее действует общая политика внутренних перезапусков. Успешный import ещё не означает соединение. После подключения операция: - Записывает диагностические строки в журнал. - Вызывает send_message на собственный JID с JID и локальным datetime в тексте. - Возвращает управление без ожидания echo, receipt или ответа пользователя. - При нормальном возврате launcher останавливает XMPP loop и завершает запуск. Постоянного listener в этой операции нет. Повтор со стороны внешнего service manager определяется его конфигурацией. Что подтверждают наблюдаемые признаки: * **Строка «Сообщение отправлено»:** записана до send_message, поэтому сама не подтверждает даже успешный возврат этого вызова. * **Нормальный возврат операции:** вызов отправки не бросил исключение; доставка и прочтение этим не доказаны. * **Успешное завершение launcher:** относится к этому диагностическому запуску, а не к готовности всех бизнес-handler API. Отсутствие собственного echo до остановки само по себе не доказывает отказ XMPP. ===== Что делает входящий callback (BPMN) ===== {"notes": ["BPMN isExecutable=false; first-party Blockly генерирует Python binding.", "Runtime сверяет operation tuple с каталогом и строит binding; Blockly в runtime не интерпретируется.", "Диагностический send самому себе не проверяет весь бизнес-процесс и не ждёт подтверждения доставки."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_basic_bot.py", "repository": "sharix-open-handlers-examples", "sha256": "5c981c5fbafdf2390816425d987e55310d42135c8ce2f38bbbf18fc050307d06"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_basic_bot.json", "repository": "sharix-open-handlers-examples", "sha256": "c04234ef2ea2ca293f8a60971a1fd7df3289a61a044469249f0c68d77b511e67"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "first_party_operations/open_basic_bot.py", "repository": "sharix-open-handlers-examples", "sha256": "89b14be72b09de5a269109ab1a2ae3f41fc67f3cb26f03e712a041f7770679ea"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "config.py", "repository": "sharix-open-handlers-examples", "sha256": "7b23db9ed283d3bbc3cf2cfbd5d41c629f6be507c3ca38c611572d08a75743a4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "first_party_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "7f4dc6607ad62f3150c58de6341b758ebe97f81bd936c9ec033b7d86fed44640"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/first_party_handler_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "fb5ee98561b029de9291e73c2a08205cc9fc2b7b239abffe4a4bb24f56093bdb"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "main.py", "repository": "sharix-open-handlers-backend", "sha256": "66b7df94fedbec931ed4cb2d4e1afd9cf0386e14ed0932e22b15eb301cd792d7"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "runtime_provider.py", "repository": "sharix-open-handlers-backend", "sha256": "c311d3b0721d18d8eccc9cd7fba155108bf285df3002507ee915ee73b797a2f4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/JabberBot.py", "repository": "sharix-open-handlers-backend", "sha256": "7fbd4d1f41bc867109b73dbb632efcfae920269a1aaf6da0e577cc70838820f1"}]} callback_start callback_type callback_sender callback_log callback_end callback_ignore callback_Flow_0 callback_Flow_0 callback_Flow_1 callback_Flow_2 callback_Flow_1 callback_Flow_3 callback_Flow_4 callback_Flow_3 callback_Flow_5 callback_Flow_5 callback_Flow_2 callback_Flow_4 Входящий callback: - Пропускает только chat и normal. - Отбрасывает resource у JID отправителя. - Проверяет bare sender по allowlist: open_basic_bot или test_user в настроенном EJ_HOST. - Проверяет body is not None, без требования непустой строки. - Записывает только «Сообщение получено». Callback не выполняет текст как команду и не отправляет echo. Время его работы ограничено жизненным циклом launcher. ===== Настройка и диагностика ===== JID строится из botname и EJ_HOST; credentials загружает штатная конфигурация, значения секретов в Wiki не публикуются. Используйте существующий путь управления runtime version/config и штатные журналы. Не подменяйте его отдельным интерпретатором Blockly. Диагностику разделить на этапы: - Выбранная версия и bootstrap. - Binding contract. - Установление XMPP в пределах TIME_TO_CONNECT. - Вызов send и его ошибка/нормальный возврат. - Фактическое получение: тип, bare JID, allowlist и работающий в этот момент процесс. У этого бота нет Ticket recheck timer и waiting reason; параметры ожидания SERVICE_REQUEST к нему неприменимы. ===== Проверенные источники ===== Git SHA/SHA-256 и модели закреплены в metadata/BPMN, сборщик сверяет источники перед упаковкой. При анализе бот, отправка сообщений и runtime config с секретами не исполнялись/не читались. Общий автоматический hook Wiki пока не завершён. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_basic_bot.py|sharix-open-handlers-examples / handlers/open_basic_bot.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/generated_handler_blocks/open_basic_bot.json|sharix-open-handlers-examples / generated_handler_blocks/open_basic_bot.json]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/catalog.py|sharix-open-handlers-examples / catalog.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/first_party_operations/open_basic_bot.py|sharix-open-handlers-examples / first_party_operations/open_basic_bot.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/config.py|sharix-open-handlers-examples / config.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/first_party_blockly_codegen.py|sharix-open-handlers-backend / first_party_blockly_codegen.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/first_party_handler_runtime.py|sharix-open-handlers-backend / core/first_party_handler_runtime.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/main.py|sharix-open-handlers-backend / main.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/runtime_provider.py|sharix-open-handlers-backend / runtime_provider.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/JabberBot.py|sharix-open-handlers-backend / core/JabberBot.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa. ===== Связанные материалы ===== * [[sharixopen:knowledge:modules:handlers|Модуль обработчиков]] * [[sharixopen:knowledge:scenarios:start|Индекс сценариев]] ~~SHARIX_KNOWLEDGE_RELATED~~