{"id":48833332,"url":"https://github.com/edwards359/support-intake-telegram-bot","last_synced_at":"2026-04-14T22:00:42.469Z","repository":{"id":351160491,"uuid":"1209813452","full_name":"Edwards359/support-intake-telegram-bot","owner":"Edwards359","description":"Telegram bot: AI-assisted support ticket intake (Russian)","archived":false,"fork":false,"pushed_at":"2026-04-13T20:09:40.000Z","size":23,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-13T22:12:47.184Z","etag":null,"topics":["aiogram","openai","python","russian","support-bot","telegram"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Edwards359.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-13T20:05:25.000Z","updated_at":"2026-04-13T20:09:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Edwards359/support-intake-telegram-bot","commit_stats":null,"previous_names":["edwards359/support-intake-telegram-bot"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Edwards359/support-intake-telegram-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Edwards359%2Fsupport-intake-telegram-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Edwards359%2Fsupport-intake-telegram-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Edwards359%2Fsupport-intake-telegram-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Edwards359%2Fsupport-intake-telegram-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Edwards359","download_url":"https://codeload.github.com/Edwards359/support-intake-telegram-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Edwards359%2Fsupport-intake-telegram-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31817128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aiogram","openai","python","russian","support-bot","telegram"],"created_at":"2026-04-14T22:00:24.196Z","updated_at":"2026-04-14T22:00:42.435Z","avatar_url":"https://github.com/Edwards359.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ИИ-ассистент: сбор лидов для отдела продаж (Telegram)\n\n[![CI](https://github.com/Edwards359/support-intake-telegram-bot/actions/workflows/ci.yml/badge.svg)](https://github.com/Edwards359/support-intake-telegram-bot/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\nTelegram-бот для квалификации входящих лидов: диалог с клиентом, извлечение полей через LLM (Chat Completions + JSON Schema), структурированное сообщение в чат менеджеров по продажам.\n\n## Возможности\n\n- пошаговый сбор обязательных полей лида в чате;\n- вызов OpenAI-совместимого API с fallback при сбоях;\n- отправка готового лида в указанный Telegram-чат;\n- запуск локально, в Docker или через Docker Compose.\n\n## Что собирает ассистент\n\n- имя;\n- контакт (телефон, email или Telegram);\n- компания или тип клиента (в т.ч. «частное лицо»);\n- суть интереса / задачи;\n- сроки принятия решения (фиксированные варианты);\n- температура лида: горячий / тёплый / холодный.\n\n## Структура репозитория\n\n```text\n.\n├── bot/                    # aiogram: роутеры, хендлеры\n├── core/                   # настройки, логирование, схемы (SalesLead, LeadSession)\n├── services/               # ассистент, хранилище сессий, уведомления\n├── scripts/                # генерация DOCX/PDF ответа на задание (не в Docker-образе)\n├── assignment/             # сюда пишется готовый DOCX/PDF (локально)\n├── .env.example\n├── .github/workflows/ci.yml\n├── docker-compose.yml\n├── Dockerfile\n├── main.py\n├── requirements.txt\n└── requirements-docs.txt   # зависимости только для сборки отчёта\n```\n\n## Переменные окружения\n\nСкопируйте `.env.example` в `.env` и задайте значения (см. комментарии в шаблоне).\n\n| Переменная | Описание |\n| --- | --- |\n| `TELEGRAM_BOT_TOKEN` | токен бота от [@BotFather](https://t.me/BotFather) |\n| `OPERATOR_CHAT_ID` | ID чата/супергруппы для лидов (часто отрицательный) |\n| `OPENAI_API_KEY` | ключ API |\n| `OPENAI_MODEL` | модель с поддержкой `response_format` типа `json_schema` |\n| `OPENAI_BASE_URL` | базовый URL API (по умолчанию официальный OpenAI) |\n| `LOG_LEVEL` | уровень логирования, например `INFO` |\n\n## Локальный запуск\n\nТребуется Python 3.12+.\n\n**Windows (PowerShell):**\n\n```powershell\ncd \u003cпуть-к-клону-репозитория\u003e\npython -m venv .venv\n.\\.venv\\Scripts\\Activate.ps1\npip install -r requirements.txt\nCopy-Item .env.example .env\n# отредактируйте .env\npython main.py\n```\n\n**Linux / macOS:**\n\n```bash\ncd /path/to/repo\npython3.12 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\ncp .env.example .env\n# отредактируйте .env\npython main.py\n```\n\n## Docker\n\n```bash\ndocker build -t sales-lead-bot .\ndocker run --rm --env-file .env sales-lead-bot\n```\n\nИли Compose (сервис `sales-lead-bot`, подхватывает `.env` в корне проекта):\n\n```bash\ndocker compose up --build -d\n```\n\n## Как это устроено\n\n1. Клиент пишет боту (или жмёт `/start`).\n2. Сессия хранится в памяти процесса (`LeadSession` + история).\n3. `OpenAILeadAssistant` передаёт в модель `current_lead`, историю и новое сообщение.\n4. Модель возвращает JSON: `reply`, `extracted_lead`, `ready_to_submit`.\n5. Когда все обязательные поля заполнены и `ready_to_submit=true`, лид уходит в чат менеджеров.\n6. Клиент получает финальное подтверждение.\n\n## Ответ на задание (DOCX → PDF)\n\n```powershell\npip install -r requirements-docs.txt\npython scripts/build_assignment_doc.py\n```\n\nФайлы появятся в каталоге `assignment/`: `Ответ_на_задание.docx` и при успешной конвертации `Ответ_на_задание.pdf` (для `docx2pdf` на Windows обычно нужен установленный Microsoft Word).\n\n## CI\n\nВ GitHub Actions выполняется установка зависимостей и проверка синтаксиса (`python -m compileall`).\n\n## Важно\n\n- Сессии в памяти: после перезапуска бота контекст диалогов теряется.\n- Если у пользователя есть `@username`, бот может подставить его как контакт по умолчанию.\n- Не коммитьте `.env` и секреты.\n\n## Репозиторий на GitHub\n\n[github.com/Edwards359/support-intake-telegram-bot](https://github.com/Edwards359/support-intake-telegram-bot)\n\n```bash\ngit clone https://github.com/Edwards359/support-intake-telegram-bot.git\ncd support-intake-telegram-bot\n```\n\nПеред коммитом проверяйте `git status`: в индексе не должно быть `.env`. Если Git сообщает о **dubious ownership** для каталога на диске `D:`, добавьте путь в исключения:  \n`git config --global --add safe.directory \"D:/полный/путь/к/клону\"`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedwards359%2Fsupport-intake-telegram-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedwards359%2Fsupport-intake-telegram-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedwards359%2Fsupport-intake-telegram-bot/lists"}