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

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


reminder

Розбіжності

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

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

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
Остання ревізія По сторонах наступні версії
reminder [2016/11/11 14:15]
reminder [2024/02/27 00:26]
bobr [PrivatBank Invoices]
Рядок 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 }}
reminder.txt · Востаннє змінено: 2024/02/27 00:31 повз bobr