====== Автоматична розсилка користувацьких нагадувань ====== Для автоматичної розсилки нагадувань користувачам в Ubilling передбачена підсистема Reminder. Працює вона максимально просто і прямолінійно і складається з двох окремо конфігурованих частин. Власне самої підсистеми розсилки, що викликається за допомогою [[remoteapi|RemoteAPI]] і модуля [[userstats|кабінету користувача]], призначеного для ввімкнення/вимкнення послуги, а також опціонального управління мобільним номером абонента. ==== Починаючи з релізу 1.1.6: ==== Дещо змінилася логіка роботи опції увімкнення модуля **REMINDER_ENABLED**, а саме: * 0 - нагадування вимкнено * 1 - усі нагадування увімкнено * 2 - нагадування за основною послугою вимкнено, всі інші нагадування - увімкнено Так само цей модуль отримав можливість повідомляти користувачів про декілька нових видів прийдешніх подій: * - закінчення терміну дії кредиту. **Варто зазначити**, що враховується тільки встановлена //дата закінчення// кредиту, //сума// кредиту ніяк не враховується. * - настання відповідальності за тривалу неактивність, aka [[crimeandpunishment|Достоєвський]]. * - [[frozenchargedays|закінчення кількості днів призупинення]]. **Варто зазначити**, що [[alteriniconf|alter.ini]] опція **FREEZE_DAYS_CHARGE_ENABLED** має бути ввімкнена. ====== Налаштування alter.ini ====== REMINDER_ENABLED=1 REMINDER_TAGID=36 REMINDER_DAYS_THRESHOLD=2 REMINDER_PREFIX="+38" REMINDER_TEMPLATE="Shanovnij abonent {REALNAME} stan vashogo rahunku {CASH} hrn {CURDATE}" REMINDER_FORCE_TRANSLIT=1 ==== Необов'язкові опції alter.ini ==== ;REMINDER_USE_EXTMOBILES=0 ;REMINDER_CONSIDER_CREDIT=0 ;REMINDER_DAYS_THRESHOLD_CREDIT=2 ;REMINDER_TEMPLATE_CREDIT="Shanovnij abonent {REALNAME} vash credyt {CREDIT} mayge vycherpano" ;REMINDER_CONSIDER_CAP=0 ;REMINDER_DAYS_THRESHOLD_CAP=5 ;REMINDER_TEMPLATE_CAP="Shanovnij abonent {REALNAME} popovnit rahunok dlya zapobigannya shtrafu za neaktyvnist" ;REMINDER_CONSIDER_FROZEN=0 ;REMINDER_DAYS_THRESHOLD_FROZEN=15 ;REMINDER_TEMPLATE_FROZEN="Shanovnij abonent {REALNAME}, zvernit uvagu, scho vashi dni zamorozky mayge vycherpano" ;REMINDER_DEBUG_ENABLED=0 Власне, це означає, що для всіх користувачів зі встановленим і заздалегідь створеним тегом з ID 36, буде здійснюватися надсилання SMS, у разі якщо до терміну закінчення їхньої оплаченої послуги залишилося 2 або менше днів. Опція REMINDER_TEMPLATE, приймає для шаблонізації стандартні макроси [[templating|загальних шаблонів]]. Надсилання не здійснюватиметься таким категоріям користувачів: * До закінчення оплаченого періоду залишилося більше ніж REMINDER_DAYS_THRESHOLD днів (у них все добре). * Боржникам (вони вже знають, що у них інтернет скінчився) * Замороженим (вони у відпустку поїхали, нічого їм спамити) SMS для відсилання складаються в загальну чергу, і власне вимагають увімкненої та налаштованої [[senddog|собаки-посилаки]]. Для виконання цієї механіки потрібен відповідний виклик у crontab: 30 9 * * * /bin/ubapi "reminder" У разі, якщо потрібне примусове надсилання якоїсь кількості повідомлень, незалежно від терміну дії послуги, що залишився, можна зробити це за допомогою опціонального параметру force. Реалізується це таким чином: 30 9 25 * * /bin/ubapi "reminder¶m=force" У такому разі, проігнорованими під час надсилання будуть тільки заморожені користувачі. Тарифікація послуги здійснюється за допомогою штатної механіки віртуальних сервісів, навішаних на потрібний тег. {{:reminder1.png?500|}} {{:reminder2.png?500|}} ====== Налаштування userstats.ini ====== REMINDER_ENABLED=1 REMINDER_PRICE=1 REMINDER_TAGID=36 REMINDER_NUMBER_LENGTH=10 REMINDER_DAYS_THRESHOLD=2 REMINDER_PREFIX="+38" REMINDER_CHANGE_NUMBER=0 REMINDER_FEE=1 REMINDER_CASHTYPEID=1 REMINDER_TURNOFF=1 ==== Необов'язкові опції, які, тим не менш, повинні бути включені в userstats.ini, якщо такі ж опції включені в alter.ini ==== ;REMINDER_CONSIDER_CREDIT=0 ;REMINDER_DAYS_THRESHOLD_CREDIT=2 ;REMINDER_CONSIDER_CAP=0 ;REMINDER_DAYS_THRESHOLD_CAP=5 ;REMINDER_CONSIDER_FROZEN=0 ;REMINDER_DAYS_THRESHOLD_FROZEN=15 Тут усе теж доволі прозоро - користувачеві можна дозволити самостійно вмикати або вимикати послугу (так, просто вішається тег), примусово знімати під час її активації певну суму грошей з рахунку, а також давати змогу самостійно міняти номер мобільного телефону (експериментальна фіча - використовуйте тільки на свій страх і ризик). ====== PrivatBank Invoices ====== Починаючи з релізу 1.4.4 в Ubilling доступна інтеграція з сервісом "PrivatBank Invoices"(PBI) від ПриватБанку, яка дозволяє відправляти інвойси нашим користувачам і клієнтам ПриватБанку за сумісництвом. Цей сервіс вигідно відрізняється від СМС своєю **безкоштовністю**(принаймі, станом на 1й квартал 2024го). Варто зазначити, що відтепер Ubilling надає як мінімум 3 опції щодо відправлення нагадувань користувачам стосовно **низького балансу**(тобто - за основною послугою): * тільки СМС * тільки інвойс * СМС + інвойс Останні два варіанти реалізовуються за допомогою відповідних, дуже self-explanatory, опцій alter.ini **REMINDER_PBI_ONLY_TAG_ID** та **REMINDER_PBI_AND_SMS_TAG_ID**. \\ І тут все доволі просто: * якщо користувачу не присвоєний жодний з двох тегів, регламентованих опціями **REMINDER_PBI_ONLY_TAG_ID** та **REMINDER_PBI_AND_SMS_TAG_ID** - йому буде відправлятися звичайне СМС * якщо користувачу присвоєний тег **REMINDER_PBI_ONLY_TAG_ID** - йому буде відправлятися лише інвойс * якщо користувачу присвоєний тег **REMINDER_PBI_AND_SMS_TAG_ID** - йому буде відправлятися як інвойс, так і СМС ===== alter.ini опції, що регулюють роботу PBI-інтеграції ===== ; всі опції - НЕОБОВ'ЯЗКОВІ - тому не забуваємо їх розкоментувати REMINDER_PRIVATBANK_INVOICE_PUSH=1 REMINDER_PBI_AUTH_LOGIN="your_auth_login_from_PB" REMINDER_PBI_URL="https://irc.privatbank.ua/paygatews/invoice/process.ws" REMINDER_PBI_DAY_TARIFF_MULTIPLIER=30 REMINDER_PBI_ONLY_TAG_ID=101 REMINDER_PBI_AND_SMS_TAG_ID=111 REMINDER_PBI_USER_FILTER_PAYSYS_LIST="" Оскільки майже всі опції вище доволі self-explanatory - детально варто зупинитись, мабуть шо, тільки на останній з них. \\ Отож, опція REMINDER_PBI_USER_FILTER_PAYSYS_LIST задумувалась як така собі відповідь на питання: "А як зрозуміти, хто з наших користувачів є клієнтом ПриватБанку, а хто ні?", і якось нічого кращого не придумалось, як дивитись чи не приходили від конкретно взятого користувача оплати з певних платіжних систем. І, якщо приходили - вважати такого користувача "умовно підходящим" кандидатом на клієнти ПриватБанку. Чому умовно? - ну, тому що не обов'язково бути клієнтом ПриватБанку, або оплатити послугу через термінал ПриватБанку. Отака механіка. Користуватись нею чи ні - кожний вирішить для себе сам. \\ Єдине, що ще варто зазначити: ця опція має містити список платіжних **фронтендів**, які на зараз є активними у вашому біллінгу. Назви платіжних систем мають бути точно такі ж, як і в модулі "OpenPayz"(ага, як правило ще й КАПСОМ), мають розділятися комами і НЕ містити пробілів. \\ Якщо ж лишаємо цю опцію пустою - ніяких фільтрацій користувачів по платіжним системам відбуватись не буде. ===== ОБОВ'ЯЗКОВІ додаткові налаштування ===== Ще раз робимо акцент на тому, що PBI-інтеграція таки працює на базі модулю "Reminder" - тобто у вас, як мінімум має бути включеним і налаштованим функціонал нагадувань(просто читаємо цю статтю від початку до кінця). Так, як мінімум має буть **REMINDER_ENABLED=1**, а також вказаний **REMINDER_TAGID** та **REMINDER_DAYS_THRESHOLD**. \\ Далі слід зазначити, що сервіс PBI це така штука дуже схожа на платіжні системи і, відповідно, вона прив'язується до конкретного контрагента, а це значить - що? - правильно, те, що конкретно взятий користувач має належати до конкретно взятого контрагента, щоб мати змогу від лиця цього контрагента відправити йому інвойс. А ще це значить, що для додаткових налаштувань сервісу PBI ми використаємо модуль [[contragentextinfo|"Додаткова інформація про контрагента"]]. Отож, після ввімкнення опції **REMINDER_PRIVATBANK_INVOICE_PUSH=1** при спробі додати новий запис в модулі "Додаткова інфо про контрагента" у випадаючому списку "Ім`я платіжної системи" ми побачимо нову опцію **PRIVAT_INVOICE_PUSH**: \\ {{:reminder_pbi_1.png?500|}} Далі вказуємо дані для статичних полів JSON: \\ {{:reminder_pbi_2.png?500|}} JSON же в нас має отаку структуру і **саме на такій структурі JSON-документу ви маєте погодити власну інтеграцію**, коли будете узгоджувати все це з ПриватБанком: { "invoicetype": "S", "comctype": "8", "company": "СуперМегаТелеком", "companyid": "4410221", "servicecod": "202", "serviceid": "4410222", "invname": "СуперМегаТелеком", "destname": "Призначення платежу", "mfod": "87412", "okpod": "369874155", "amount": 150, "clphone": "+380551234567", "invclosingdate": "2024-02-28", "extparams": { "param": [ { "name": "bill_identifier", "value": "11223344" } ] } } \\ ===== Зняття оплати за сервіс нагадувань при ввімкненому сервісі PBI ===== Якщо ми хочемо бути чесними зі своїми користувачами, то, оскільки PBI сервіс в нас на разі "free of charge" - ми не мали би знімати оплату з користувачів, яким шлемо тільки інвойси, тобто яким присвоєний тег **REMINDER_PBI_ONLY_TAG_ID**. Що, як би - логічно. Отож, якщо ми хочемо виключити таких користувачів з процесу обробки віртуальним сервісом, який у нас знімає оплату за нагадування - робимо наступне: 1. Йдемо у редагування віртуального сервісу, що відповідає за зняття оплати за нагадування 2. В поле "Користувачі зі вказаними тегами будуть виключені з обробки даним сервісом. ID тегів мають відокремлюватись комами." вписуємо ID нашого REMINDER_PBI_ONLY_TAG_ID 3. Зберігаємо зміни 4. PROFIT!1!!!11 Виглядає це якось так: \\ {{:reminder_pbi_3.png?500 }} {{ :reminder_pbi_4.png?500 }}