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

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


opayzsmsnotify

Розбіжності

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

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

Остання ревізія По сторонах наступні версії
opayzsmsnotify [2022/09/24 14:39]
127.0.0.1 зовнішнє редагування
opayzsmsnotify [2023/06/15 21:28]
bobr
Рядок 1: Рядок 1:
-====== SMS-уведомления OpenPayz ====== +====== SMS-сповіщення OpenPayz ====== 
-Начиная с релиза 1.2.7 появилась возможность отсылки уведомлений об успешном пополнении счёта абонентам, которые произвели оплату через [[openpayz|OpenPayz]](терминалы, банк-клиенты, etc). Да, на манер сообщений от мобильных операторов об успешном пополнении баланса.+Починаючи з релізу 1.2.7 з'явилася можливість надсилання сповіщень про успішне поповнення рахунку абонентам, які здійснили оплату через [[openpayz|OpenPayz]] (термінали, банк-клієнти, etc). Так, на манер повідомлень від мобільних операторів про успішне поповнення балансу.
  
-==== Включение и сопутствующие опции ====  +==== Включення та супутні опції ====  
-Собственно - опции [[alteriniconf|alter.ini]]:+Власне - опції [[alteriniconf|alter.ini]]:
 <code ini> <code ini>
 OP_SMS_NOTIFY_ENABLED=0 OP_SMS_NOTIFY_ENABLED=0
Рядок 14: Рядок 14:
 </code> </code>
  
-Так как подавляющее большинство из них вполне себе self-explanatory - обратим внимание на нюансы:\\ +Оскільки переважна більшість із них цілком собі self-explanatory - звернемо увагу на нюанси:\\\ 
-  * Включение, естественно, производится опцией **OP_SMS_NOTIFY_ENABLED** +  * Увімкненнявже звично, здійснюється опцією **OP_SMS_NOTIFY_ENABLED**. 
-  * Текст нотификашек задается опцией **OP_SMS_NOTIFY_TEXT**. Тут стоит отметить поддерживаемые на данный момент макросы+  * Текст нотифікашок задається опцією **OP_SMS_NOTIFY_TEXT**. Тут варто відзначити підтримувані на даний момент макроси
-    * **{LOGIN}** - логин абонента +    * **{LOGIN}**** - логін абонента 
-    * **{USERONLINELEFTDAY}** - количество дней оплаченной услуги (0 в случае если услуга отключена+    * **{USERONLINELEFTDAY}** - кількість днів оплаченої послуги (0 у разі, якщо послугу відключено
-    * **{USERONLINETODATE}** - дата до которой оплачена услуга екущая дата в случаеесли услуга отключена+    * **{USERONLINETODATE}** - датадо якої оплачено послугу (поточна дата в разіякщо послугу відключено
-    * **{ROUNDBALANCE}** - округленный до копеек баланс абонента ПОСЛЕ пополнения +    * **{ROUNDBALANCE}** - округлений до копійок баланс абонента ПІСЛЯ поповнення 
-    * **{ROUNDPAYMENTAMOUNT}** - округленная до копеек сумма пополнения +    * **{ROUNDPAYMENTAMOUNT}** - округлена до копійок сума поповнення 
-  * **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** - пожалуй единственная опция, на которой стоит сделать акцент: +  * **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** - мабуть єдина опція, на якій варто зробити акцент: 
-    * во-первых - она задаёт интервал в **МИНУТАХ**. не в секундах, не в миллисекундах, не в часах, не в чём либо ещё. В__ М И Н У Т А Х. +    * по-перше вона задає інтервал у **ХВИЛИНАХ**. не в секундах, не в мілісекундах, не в годинах, не в будь-чому ще. В__ Х В И Л И Н А Х. 
-    * во-вторых этот интервал(количество этих самых минутдолжен быть большечем частота запуска вызова **opayzsmsnotify** из [[remoteapi|RemoteAPI]]. Да, хотя бы на единицу больше. Почему так - читаем в секции ниже. +    * по-друге цей інтервал (кількість цих самих хвилин) має бути більшимніж частота запуску виклику **opayzsmsnotify** з [[remoteapi|RemoteAPI]]. Так, хоча б на одиницю більше. Чому так - читаємо в секції нижче. 
-  * **OP_SMS_NOTIFY_RESPECT_REMINDER_TAGID** - контролирует наличие тега REMINDER_TAGID у юзера при отправке СМС уведомления. Если тега нет - например, юзер отключил СМС уведомления в ЛК - уведомление не производится.+  * **OP_SMS_NOTIFY_RESPECT_REMINDER_TAGID** - контролює наявність тега REMINDER_TAGID у юзера під час надсилання СМС-повідомлення. Якщо тега немає - наприклад, юзер відключив СМС-повідомлення в ЛК - ніяких сповіщень не відбувається.
  
-==== Немного механики ====  +==== Трохи механіки ====  
-Работа данного функционала довольно незамысловата: смотрим в таблицу платежей, забираем из нее OpenPayz платежи за последние **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** минут, складываем их в отдельную служебную табличку(перед тем проверив существование в ней уже "пронотифицированнх" из только что выбранных и исключив их), производим отправку уведомлений, проставляем статус "отправлено" в служебной табличкеПочему важно, чтобы **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** был хотя бы на **//единицу//** большечем частота вызовов **opayzsmsnotify** из [[remoteapi|RemoteAPI]]?чтобы избежать "проигноренных" платежей. При выборке платежей для процессинга из таблицы платежей на **//текущую_дату_время//** сервис опирается только в самом началев момент самого первого запуска, а всё остальное время он берёт **//дату_время// последнего обработанного(пронотифицированного) платежа**, и уже именно из этого таймстампа вычетает те самые **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** минутыполучая **//дату_время//**, начиная с которой и будут забираться платежи из таблицы платежейДа, несмотря на точто "приняты все возможные мерысуществует вероятность, что конкретно взятый OpenPayz платёж попадёт где-то в "зазор" между запусками из крона и **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** и будет попросту проигнорирован, так как по времени не попадёт в выборку. \\ +Робота цього функціоналу доволі нехитра: дивимося в таблицю платежів, забираємо з неї OpenPayz платежі за останні **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** хвилин, складаємо їх в окрему службову табличку (перед тим перевіривши існування в ній уже "пронотифікованих" із щойно обраних та виключивши їх), відправляємо сповіщення, проставляємо статус "надіслано" в службовій табличці\\  
-Именно потому настоятельная рекомендация: если строка в кронтабе у вас выглядит како так:+Чому важливо, щоб **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** був хоча б на **//одиницю//** більшимніж частота викликів **opayzsmsnotify** з [[remoteapi|RemoteAPI]]?щоб уникнути "проігнорованих" платежів. Під час вибірки платежів для процесингу з таблиці платежів на **//поточну_дату_час//** сервіс спирається тільки на самому початкуу момент найпершого запуску, а весь інший час він бере **//дату_час// останнього обробленого(пронотифікованого) платежу**, і вже саме з цього таймстампа віднімає ті самі **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** хвилини, отримуючи **//дату_час//**, починаючи з якої і забиратимуться платежі з таблиці платежівТак, незважаючи на тещо "вжито всіх можливих заходів", існує ймовірність, що конкретно взятий OpenPayz платіж потрапить десь у "зазор" між запуском із крону та **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** і буде просто проігнорований, тому що за своїм таймстампом не потрапить у вибірку. \\ 
 +Саме тому наполеглива рекомендація: якщо рядок у кронтабі у вас виглядає якось так:
 <code cli> <code cli>
 */2 * * * *    /bin/ubapi "opayzsmsnotify" */2 * * * *    /bin/ubapi "opayzsmsnotify"
 </code> </code>
-то **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** сделайте равной **3**(а то и **4** - хуже от этого никому особо не станет). Ну и наоборотустановив OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL в какое-то значение не забудьте несколько увеличить частоту вызовов **opayzsmsnotify**, уменьшив интервал вызовов. +то **OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL** зробіть рівною **3**(а то й **4** - гірше від цього нікому особливо не стане). Ну і навпакивстановивши OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL у якесь значення, не забудьте дещо збільшити частоту викликів **opayzsmsnotify**, зменшивши інтервал викликів. 
  
  
-А - да - опцию **OP_SMS_NOTIFY_DEBUG_ON** в продакшене юзать **категорически не рекомендуется** - она крайне "verbose"Разве что на первое время после включения данного функционала или для траблшутинга.+А - так - опцію **OP_SMS_NOTIFY_DEBUG_ON** у продакшені юзати **категорично не рекомендується** - вона вкрай "verbose"Хіба що на перший час після ввімкнення цього функціоналу або для траблшутингу.
opayzsmsnotify.txt · Востаннє змінено: 2023/06/15 21:28 повз bobr