Для автоматичної розсилки нагадувань користувачам в Ubilling передбачена підсистема Reminder. Працює вона максимально просто і прямолінійно і складається з двох окремо конфігурованих частин. Власне самої підсистеми розсилки, що викликається за допомогою RemoteAPI і модуля кабінету користувача, призначеного для ввімкнення/вимкнення послуги, а також опціонального управління мобільним номером абонента.
Дещо змінилася логіка роботи опції увімкнення модуля REMINDER_ENABLED, а саме:
Так само цей модуль отримав можливість повідомляти користувачів про декілька нових видів прийдешніх подій:
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
;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, приймає для шаблонізації стандартні макроси загальних шаблонів.
Надсилання не здійснюватиметься таким категоріям користувачів:
SMS для відсилання складаються в загальну чергу, і власне вимагають увімкненої та налаштованої собаки-посилаки. Для виконання цієї механіки потрібен відповідний виклик у crontab:
30 9 * * * /bin/ubapi "reminder"
У разі, якщо потрібне примусове надсилання якоїсь кількості повідомлень, незалежно від терміну дії послуги, що залишився, можна зробити це за допомогою опціонального параметру force. Реалізується це таким чином:
30 9 25 * * /bin/ubapi "reminder¶m=force"
У такому разі, проігнорованими під час надсилання будуть тільки заморожені користувачі.
Тарифікація послуги здійснюється за допомогою штатної механіки віртуальних сервісів, навішаних на потрібний тег.
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
;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
Тут усе теж доволі прозоро - користувачеві можна дозволити самостійно вмикати або вимикати послугу (так, просто вішається тег), примусово знімати під час її активації певну суму грошей з рахунку, а також давати змогу самостійно міняти номер мобільного телефону (експериментальна фіча - використовуйте тільки на свій страх і ризик).
Починаючи з релізу 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_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 ми використаємо модуль "Додаткова інформація про контрагента". Отож, після ввімкнення опції REMINDER_PRIVATBANK_INVOICE_PUSH=1 при спробі додати новий запис в модулі “Додаткова інфо про контрагента” у випадаючому списку “Ім`я платіжної системи” ми побачимо нову опцію PRIVAT_INVOICE_PUSH:
Далі вказуємо дані для статичних полів JSON:
JSON же в нас має отаку структуру і саме на такій структурі JSON-документу ви маєте погодити власну інтеграцію, коли будете узгоджувати все це з ПриватБанком:
Якщо ми хочемо бути чесними зі своїми користувачами, то, оскільки PBI сервіс в нас на разі “free of charge” - ми не мали би знімати оплату з користувачів, яким шлемо тільки інвойси, тобто яким присвоєний тег REMINDER_PBI_ONLY_TAG_ID. Що, як би - логічно. Отож, якщо ми хочемо виключити таких користувачів з процесу обробки віртуальним сервісом, який у нас знімає оплату за нагадування - робимо наступне:
1. Йдемо у редагування віртуального сервісу, що відповідає за зняття оплати за нагадування 2. В поле "Користувачі зі вказаними тегами будуть виключені з обробки даним сервісом. ID тегів мають відокремлюватись комами." вписуємо ID нашого REMINDER_PBI_ONLY_TAG_ID 3. Зберігаємо зміни 4. PROFIT!1!!!11