Користувальницькькі налаштування

Налаштування сайту


reminder

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
reminder [2016/11/11 14:15]
reminder [2024/02/27 00:31] (поточний)
bobr [ОБОВ'ЯЗКОВІ додаткові налаштування]
Рядок 1: Рядок 1:
 +====== Автоматична розсилка користувацьких нагадувань ======
  
 +Для автоматичної розсилки нагадувань користувачам в 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 ======
 +
 +<code 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
 +</code>
 +
 +==== Необов'язкові опції alter.ini ====
 +<code 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  
 +</code>
 +
 +
 +Власне, це означає, що для всіх користувачів зі встановленим і заздалегідь створеним тегом з ID 36, буде здійснюватися надсилання SMS, у разі якщо до терміну закінчення їхньої оплаченої послуги залишилося 2 або менше днів. Опція REMINDER_TEMPLATE, приймає для шаблонізації стандартні макроси [[templating|загальних шаблонів]].
 +
 +Надсилання не здійснюватиметься таким категоріям користувачів:
 +  * До закінчення оплаченого періоду залишилося більше ніж REMINDER_DAYS_THRESHOLD днів (у них все добре).
 +  * Боржникам (вони вже знають, що у них інтернет скінчився)
 +  * Замороженим (вони у відпустку поїхали, нічого їм спамити)
 +
 +SMS для відсилання складаються в загальну чергу, і власне вимагають увімкненої та налаштованої [[senddog|собаки-посилаки]]. Для виконання цієї механіки потрібен відповідний виклик у crontab:
 +
 +<code>
 +30 9 * * *      /bin/ubapi  "reminder"
 +</code>
 +У разі, якщо потрібне примусове надсилання якоїсь кількості повідомлень, незалежно від терміну дії послуги, що залишився, можна зробити це за допомогою опціонального параметру force. Реалізується це таким чином:
 +
 +<code>
 +30 9 25 * *      /bin/ubapi  "reminder&param=force"
 +</code>
 +
 +У такому разі, проігнорованими під час надсилання будуть тільки заморожені користувачі.
 +
 +Тарифікація послуги здійснюється за допомогою штатної механіки віртуальних сервісів, навішаних на потрібний тег.
 +
 +{{:reminder1.png?500|}}
 +
 +{{:reminder2.png?500|}}
 +
 +====== Налаштування userstats.ini ======
 +
 +<code 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
 +</code>
 +
 +==== Необов'язкові опції, які, тим не менш, повинні бути включені в userstats.ini, якщо такі ж опції включені в alter.ini ====
 +<code 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
 +</code>
 +
 +Тут усе теж доволі прозоро - користувачеві можна дозволити самостійно вмикати або вимикати послугу (так, просто вішається тег), примусово знімати під час її активації певну суму грошей з рахунку, а також давати змогу самостійно міняти номер мобільного телефону (експериментальна фіча - використовуйте тільки на свій страх і ризик).
 +
 +====== 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-інтеграції =====
 +<code ini>
 +; всі опції - НЕОБОВ'ЯЗКОВІ - тому не забуваємо їх розкоментувати
 +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=""
 +</code>
 +Оскільки майже всі опції вище доволі 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-документу ви маєте погодити власну інтеграцію**, коли будете узгоджувати все це з ПриватБанком:
 +<hidden onHidden="Invoice JSON" onVisible="Hide">
 +<code 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"
 +            }
 +        ]
 +    }
 +}
 +</code>
 +</hidden> 
 +\\
 +===== Зняття оплати за сервіс нагадувань при ввімкненому сервісі 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 }}