====== ClaptrapBot - Користувацький Telegram бот ====== {{:claptrap.png |}} ClapTrapBot - це інтерактивний телеграм-бот, який надає абонентам швидкий доступ до основних можливостей [[userstats|кабінету користувача]] без необхідності відкривати його в браузері. Через бот користувач може переглядати свій профіль, баланс, історію платежів, робити онлайн-оплати, користуватись кредитом, отримувати сповіщення та звертатися до служби підтримки. Бот особливо зручний для тих, хто користується смартфоном: усі дії виконуються просто у чаті - без паролів, авторизацій і зайвих переходів. ====== Реєстрація вашого бота ====== У випадку, якщо в вас ще немає бота який ви будете використовувати в ролі користувацького бота, для взаємодії з користувачами, можете скористатись [[tgbotfather|наступним посібником]] і створити собі якогось новенького для цього. **Важливо:** не використовуйте, як кабінетного користувацького бота, токен вже існуючого, і прописаного в вас в [[senddog|Собаці-посилаці]], що вже використовується для розсилок вашому персоналу! Використовуйте інший токен іншого бота для цього. Це інша сутність! ====== Веб хук ====== Для роботи ClaptrapBot, в силу своєї інтерактивності, використовує веб хуки. Їх реалізовано для нього в модулі claptrapbot. Тобто базовим посиланням є не що інше ніж https://yourhost.com/billing/?module=claptrapbot Відповідна опція конфігу, вказує на необхідність додаткової авторизації, за допомогою GET параметру auth. Ось так: CLAPTRAPBOT_AUTH_STRING="changeme" Відповідно, повна валідна URL веб хука вашого бота буде в цьому випадку виглядати наступним чином: https://yourhost.com/billing/?module=claptrapbot&auth=changeme **Важливо:** очевидно, що від вас очікується той факт, що ви зміните значення опції CLAPTRAPBOT_AUTH_STRING на якийсь свій рандомний рядок тексту. Не використовуйте для цього токен боту. Просто якийсь інший рандом. Якщо складно придумати - впадіть обличчям на клавіатуру. Так, ви можете залишити опцію порожньою, і використовувати хук взагалі без авторизації, але "щоби що?". ====== Доступ до веб хуку ====== Варто також помітити, що Telegram [[https://core.telegram.org/bots/api#setwebhook|дозволяє]] використовувати як веб-хуки, **тільки https** посилання. І так, тільки на портах 443, 80, 88, 8443. Також очевидно, що якщо ви не знехтували нашими [[security|рекомендаціями що до безпеки]] доступ до адміністративного інтерфейсу білінгу, у вас повинен би бути обмеженим ззовні. Щоб не гратись і не дозволяти доступ поштучно, для Telegram до цілої адмінки, ви можете, прокинути посилання на ваш вебхук в якусь іншу URL засобами вашого веб сервера, ну скажімо [[https://lapaste.in.ua/?v=0kot1hrg|якось так]], або ж скористатись мінімалістичним web-proxy, наприклад [[https://github.com/nightflyza/tgtinygate|tgtinygate aka TGTG]], спеціально зробленим під ці задачі. Також ніхто вас не зобов'язує тримати його прямо на білінговому сервері. Наприклад, ваш Ubilling знаходиться на хості з сірою IP адресою, десь за NAT-ом, або до нього дропаються всі звернення окрім як від вашої внутрішньої інфраструктури. В цьому випадку, ви можете, розмітити TGTG на будь-якому хості, з працюючим https, доступному ззовні: # cd /usr/local/www/apache24/data/ # mkdir tgtinygate_changeme # cd tgtinygate_changeme # fetch https://raw.githubusercontent.com/nightflyza/tgtinygate/refs/heads/main/index.php **Важливо:** З міркувань безпеки використовуйте випадкове ім'я директорії замість tgtinygate_changeme. Ім'я директорії стає частиною URL-адреси вашого веб-хука, тому використання випадкового імені ускладнює зловмисникам вгадування вашого ендпоінта. Приклад: //tgtinygate_a7b19c2d4e1f3// або щось типу //tgtg_9W8k2m5p7q//. Не використовуйте в ролі рандому частину вашого токена! після чого, налаштувати його якось так: $botHookUrl = 'http://yourhiddenhost.com/billing/?module=claptrapbot&auth=changeme'; $connectTimeout = 5; $timeout = 10; $hideExtIP = true; відповідно URL вашого хука буде мати вигляд https://yourpublichost.com/tgtinygate_changeme/ ====== Файли конфігурації ====== Сподіваємось, що наступний набір опцій є доволі самоочевидним і не потребує порядкового розбору. ; Чи ввімкнено ClapTrapBot? CLAPTRAPBOT_ENABLED=1 ; Токен бота CLAPTRAPBOT_TOKEN="1234567890:EXAMPLEfakeToken1234567890ABCDXXXXX" ; Режим відлагодження. Воно вам треба? Воно вам не треба. CLAPTRAPBOT_DEBUG=0 ; Рядок автентифікації - використовується для перевірки на автентичність, запитів до вебхука. Змініть на нормальний. CLAPTRAPBOT_AUTH_STRING="changeme" ; URL вебхука - адреса, яка встановлюється для прийому та обробки запитів від бота. CLAPTRAPBOT_HOOK_URL="https://yourpublichost.com/tgtinygate_changeme/" ; URL кабінету користувача - використовується для отримання даних користувача, авторизації та всякого такого. CLAPTRAPBOT_USERSTATS_URL="https://my.ourisp.com/" ; Кількість кнопок основної клавіатури у рядку CLAPTRAPBOT_PKBD_ROW=2 ; Перелік ID увімкнених функцій ClapTrapBot. Функції буде розташовано на основній клавіатурі в тому ж порядку. CLAPTRAPBOT_FEATURES="profile,announcements,credit,opayz,mypayments,support" ; Обмеження кількості дій за хвилину (APM) для ClapTrapBot. Вкажіть 0, щоб вимкнути. CLAPTRAPBOT_THROTTLE_LIMIT=20 ; Час блокування при перевищенні ліміту (у секундах). Вкажіть 0, щоб вимкнути. CLAPTRAPBOT_THROTTLE_BAN_TIME=120 ; Кількість платежів, що відображаються в списку "Мої платежі" за замовчуванням. CLAPTRAPBOT_MY_PAYMENTS_LIMIT=3 ; ID існуючого тега, для авторизованих користувачів ClapTrapBot. При авторизації тег буде встановлено. При відлогінюванні - знято. Вкажіть 0, щоб вимкнути. CLAPTRAPBOT_USERS_TAGID=0 З боку ж кабінету, в свою чергу потрібен [[xmlagent|XMLAgent REST API]] щонайменше версії 2 (тобто кабінет актуальної версії Ubilling >= 1.5.8) UBA_ENABLED=1 а також ви можете використати наступні опції TG_BOTNAME="ubillingdemobot" TG_BOT_QR=1 щоб зробити, ось таку гарненьку автоматизовану авторизацію з кабінету користувача {{:userstatstgbotauth.png|}} ====== Наявні функції боту ====== Наразі наявними є наступні функції ^ ^ ID функції ^ Опис ^ | 👨‍💼 | profile | Відображає інформацію профілю користувача (ПІБ, адреса, мобільний, тариф, баланс, IP, кредит, стан облікового запису, платіжний ID) | | 📺 | catv | Відображає профіль користувача КТБ (адреса, договір, телефон, тариф, баланс) | | ⏱️ | credit | Дозволяє користувачам запитати або перевірити можливість кредиту з підтвердженням умов надання послуги | | 📢 | announcements | Відображає активні оголошення зі статусом прочитано/непрочитано та можливістю позначити всі як прочитані | | 💳 | opayz | Список доступних методів онлайн-оплати з прямими посиланнями | | 💸 | mypayments | Показує історію платежів користувача з пагінацією (останні, більше, всі) | | 📞 | support | Дозволяє користувачам переглядати та створювати тікети в хелпдеску. | Кожну з них, ви можете вмикати/вимикати/розташовувати як вам подобається, за допомогою опції **CLAPTRAPBOT_FEATURES**. На основній клавіатурі їх зображено власне в порядку, розташування ID функцій в значенні опції. ====== Встановлення хуку ====== Після завершення базових налаштувань по конфігах, вам необхідно одноразово встановити хук вашого бота. Робиться це зручно та просто, за допомогою ось цього модуля {{:cltpmgr0.png|}} та виглядає приблизно наступним чином {{:claptraphookinstall.png|}} ====== А далі що? ====== Та нічо. {{:claptrapbot_scr1.png|}} {{:claptrapbot_scr2.png|}} {{:claptrapbot_scr3.png|}} {{:claptrapbot_scr4.png|}}