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

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


remoteapi

Розбіжності

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

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

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
remoteapi [2019/01/30 15:41]
remoteapi [2024/03/26 17:58] (поточний)
nightfly
Рядок 1: Рядок 1:
 +====== API віддаленого виклику процедур ======
 +
 +У Ubilling починаючи з релізу 0.3.1 підтримується виклик зовнішніми програмами певних внутрішніх процедур білінгу. \\
 +
 +Для цього потрібна опція 
 +<code ini>
 +REMOTEAPI_ENABLED=1
 +</code>
 +
 +в конфігураційному файлі  [[alteriniconf|alter.ini]]. Для авторизації використається серійний номер Ubilling.\\
 +
 +Формат викликів за допомогою HTTP GET запитів:
 +
 +<code>
 +  http://billing.isp/?module=remoteapi&key=[ubserial]&action=[action][&param=[parameter]]
 +</code>
 +  
 +На даний момент підтримуються наступні action:\\
 +  * **reset + param [login]** - ресет користувача, логін – обов'язковий параметр.
 +  * **handlersrebuild** - перебудова всіх мережних хендлерів та перезапуск dhcpd для відповідних підмереж
 +  * **vserviceschargefee + param [nofrozen]** - зняття АП віртуальних сервісів. Необов'язковий параметр nofrozen - не знімати АП з відморозків.
 +     * //**&period**// - дозволяє вказати період зняття оплати днями для фільтрації сервісів за цією ознакою. Тільки сервіси, що задовольняють умовам фільтра, будуть оброблені, що дозволяє, наприклад, зробити роздільну обробку сервісів з помісячним і поденним зняттям АП (так - таким чином можна робити кілька викликів vserviceschargefee з crontab): //&period=30// або //&period= 1//. \\ Також можна групувати періоди зняття оплат в одному виклику, розділяючи їх **підкресленням**: //&period=30_7_15//.
 +  * **discountprocessing** - обробка знижок
 +  * **backupdb** - резервування БД
 +  * **autocleandb** - зачистка БД від старих логів та детальної статистики
 +  * **swpoll** - опитування всіх пристроїв з довідника "Комутатори" за допомогою SNMP з метою заповнення кешу сирих даних
 +  * **swping** - опитування всіх пристроїв з довідника "Комутатори" "на живість" за допомогою ICMP ping
 +  * **fullhostscan + param [traffdiff] + nn** - опитування всіх клієнтів з підмереж вказаних у довіднику "Мережі та сервіси" за допомогою nmap а також за вказівкою параметра traffdiff намагається аналізувати активність зі змін вихідного трафіку. Також параметр nn (наприклад &nn=1) відключає використання nmap, що радикально підвищує швидкодію виклику fullhostscan (рекомендовано).
 +  * **rebuilduserdatacache** - перебудовується кеш даних користувача в exports: cache_address, cache ips, cache mac
 +  * **autofreeze + param [nocredit]** -  запускає процедуру автозаморозки користувачів з балансом нижче alter.ini:AUTOFREEZE_CASH_LIMIT
 +  * **autofreezemonth + param [nocredit]** - запускає процедуру автозаморозки користувачів з балансом нижче або рівним alter.ini:(AUTOFREEZE_CASH_LIMIT*вартість тарифу). Опційний параметр nocredit символізує своїм видом, виключення з автозаморозки користувачів, які скористалися функцією кредитування в кабінеті користувача в поточному місяці.
 +  * **watchdog** - нацьковує собаку-спостерігаку на виконання її завдань
 +  * **senddog** - [[senddog|собака-посилака]] пробігається по всіх чергах для відправлення та здійснює відправлення всіх повідомлень.
 +  * **senddog + [param chkmsgstatuses]** - необхідно лише за включеної історії СМС повідомлень. Зобов'язує [[senddog|собаку-посилаку]] спробувати отримати статуси раніше відправлених СМС.
 +   * **ukvfeeprocessing** - зняття АП користувачів [[ukv|УКВ]]
 +  * **switchescoverage  + param [1000x800]** - повертає карту покриття комутаторами, з розмірами вказаними у param у форматі XxY
 +  * **rebuildglscache** - примусово перебудовується кеш глобального пошуку.
 +  * **uhwbrutecleanup** - очищує реєстр спроб перебору паролів UHW
 +  * **cudiscounts** -  запускає механізм обробки [[cumulativediscounts|накопичувальних знижок]].
 +  * **crimeandpunishment** - запускає механізм [[crimeandpunishment|обробки злочинів та кари]].
 +  * **oltpoll** - запускає опит усіх OLT пристроїв.
 +  * **reminder + [param force]**  - запускає SMS нагадування. Черга SMS буде оброблена під час наступного запуску senddog. Необов'язковий param=force здійснює примусову посилку всім користувачам, крім заморожених, трансліт примусовий.  
 +  * **friendshipdaily** - здійснює внесення відсотків за всіма дружніми платежами, за попередню добу.
 +  * **freezemonth + [param debug2ublog]** - здійснює списання коштів у заморожених користувачів рівним alter.ini:FREEZEMONTH_COST. Необов'язковий параметр //debug2ublog// включає дебаг-режим та запис того, що відбувається в веблог.
 +  * **writevlanmachistory** - робить опитування по влан термінаторам і заносить маки абонентів до таблиці, записує тільки якщо у якогось конкретного абонента змінився мак (дані бере зі своєї таблиці, і не має нічого спільного з маком у nethosts), так само визначає сумарну кількість онлайн абонентів (вланів).
 +  * **dealwithit** - виконує для користувачів завдання, за поточну (та попередні) доби з планувальника "живи з цим".
 +  * **mgqueue** - Здійснює заплановані відписки від тарифів Megogo
 +  * **mgprocessing** - Здійснює нарахування АП за тарифами Megogo
 +  * **mgfreecleanup** - Здійснює ліквідацію тестових підписок Megogo із простроченим періодом.
 +  * **exhorse + [&ebobo=true]** - Здійснює збір даних та запис у базу, необхідних для роботи екзистенційного коня.
 +  * **policedog** - Запускає швидке сканування собакою-поліціякою. Раз на півгодини-годину буде цілком нормально.
 +  * **whydoyoucall** - Отримує дані з Askozia PBX про пропущені дзвінки.
 +  * **whydoyoucallstats** - Записує статистику пропущених дзвінків за день у БД.
 +  * **nasmon** - здійснює опитування серверів NAS з довідника на тему їхньої живості.
 +  * **mtsigmonpoll** - проводить опитування Mikrotik, UBNT та інших бездротових пристроїв, для отримання рівнів сигналу.
 +  * **sormcast** - проводить вивантажування даних в ИС СОРМ Яхонт.
 +  * **askozianum + [param mobilenumber]** - повертає стан користувача за номером його мобільного номера: 0 - не знайдено, 1 - знайдено і з ним все добре, 2 - боржник, 3 - відморозок.
 +  * **freezedayscharge + [param debug2ublog]** - запускає процес обробки заморожених користувачів при увімкненому обмеженні кількості днів заморозки. Списує або нараховує доступні дні заморозки, а також відключає заморожування тим, хто вичерпав свої доступні дні заморозки. Необов'язковий параметр //debug2ublog// включає дебаг-режим та запис того, що відбувається в веблог. [[frozenchargedays|Докладніше]]
 +  * **mikrotikdnshaper + [param downshift]** - запускає обробку правил динамічного шейпера для [[mikrotikapi|Mikrotik NAS]]. Опціональний параметр **downshift** вказує обробникові повернути користувачам швидкості відповідно до їх тарифних планів. [[dnswitchmtik|Докладніше]]
 +  * **getagentdata + [param login]** - повертає JSON з даними про присвоєному користувачеві контрагента.
 +  * **districtscache** - оновлює кеш присвоєних користувачам районів.
 +  * **smszilla** + filterid + templateid + [translit]  - здійснює розсилку з заздалегідь заданими фільтрами з певним шаблоном та опціональним примусовим транслітом за допомогою [[smszilla|SMSZilla]].
 +  * **multigen** - проводить швидку регенерацію всіх сценаріїв та відпрацювання необхідних сервісів [[multigen|КупаГен]].
 +  * **multigentotal** - очищає всі сценарії, потім здійснює регенерацію всіх сценаріїв та виконує необхідні сервіси (не рекомендується використовувати просто так) 
 +  * **multigentraff** - агрегує статистику сесій з таблички акаунтингу та оновлює трафік користувачів stargazer-а.
 +  * **multigenpod + [param login]** - шле PoD на NAS користувача з логіном вказаним у параметрі param. Керується опцією MULTIGEN_POD_ON_MAC_CHANGE.
 +  * **onepunch + [param alias]** - запускает выполнение существующего [[onepunch|One-Punch]] скрипта.
 +  * **paycardsqueue** - обробляє чергу платіжних карток і позначає їх як повністю "використані".
 +  * **salarytelegram** - розсилає співробітникам [[salary|закриті]] на них роботи за день.
 +  * **warehousetelegram** - розсилає співробітникам [[warehouse|заброньовані]] на них ТМЦ.
 +  * **ddt** - викликає періодичну обробку тарифів судного дня.
 +  * **visorcharge** - здійснює нарахування коштів для камер у разі їх дефіциту, в останній день місяця з основного облікового запису.
 +  * **fdbarchive** - производит сохранение текущего кэша FDB для архива. При необходимости производит ротацию.
 +  * **remotedhcp** - повертає дані, необхідні для синхронізації [[remotedhcp|віддаленими DHCP серверами]].
 +  * **stgfeecharge2mysql** - створює кеш останніх списань коштів старгейзером з рахунку користувача для кожного логіну витягаючи це все з stargazer.log. Потрібно для коректної роботи функціонала, що включає опцію [[alteriniconf|alter.ini]] ONLINE_SHOW_LAST_FEECHARGE.
 +  * **smartup** - виклик призначений для забезпечення базової інтеграції з сервісом [[smartup|SmartUP]].
 +  * **envyarchive** - зберігає конфігурацію всіх активних заздрісних пристроїв у архіві.
 +  * **autocredit** - викликає [[autocredit|автоматичне кредитування]] особливих користувачів в останній день місяця. 
 +  * **sc** +[login,cr,end,fee,ct] - викликає процедуру встановлення кредиту користувача.
 +  * **pt** - викликає обробку [[pt|Могутніх тарифів]].
 +  * **usercash** -  Фінансові операції користувача. Приймає параметри login (логін), summ(сума грошей), ct(тип оплати), op (add/correct/set/mock), note(примітка). Приклад: usercash&login=sometestuser&summ=2&ct=1&op=correct&note=test
 +  * **ptvchargefee** - здійснює нарахування АП всім передплатникам [[prostotv|ProstoTV]].
 +  * **karmaguard** - намагається автоматично ремонтувати карму користувачам, у яких вона з якоїсь причини встигла зіпсуватися.
 +  * **callmeback + [param number]** - створює нову заявку для модуля [[callmeback|Передзвоніть мені будь ласка]].
 +  * **olltvchargefee** - здійснює тарифікацію послуг [[olltv|OllTV]].
 +  * **opayzsmsnotify** - запуск розсилки SMS сповіщень OpenPayz.
 +  * **cachedog** - стежить за інвалідацією кешу повних даних користувача. У момент виклику перевіряється стан всіх користувачів і якщо він, не відповідає закешованому в ключі USER_ALL_DATA - останній просто прибивається.
 +  * **telepony + number** - реагує на вхідний дзвінок [[telepony|TelePony]].
 +  * **fastping** - опитує пристрої з довідника комутаторів на живість за допомогою [[fastping|FastPing]].
 +  * **userbynum + number** - повертає [[userbynum|дані користувача за номером його стільникового]].
 +  * **feesharvester** - реплікує дані про нарахування АП з логу Stargazer до БД. З додатковим параметром full - сканує весь лог за весь час, з параметром today - тільки за поточну добу, без параметрів - за поточний місяць.
 +  * **btrxupd** - Пушить за наявності всі зміни в абонбазі для [[btrx24|CRM Bitrix24]]
 +  * **btrxpolls** - пушить дані про всі наявні опитування та їх результати до [[btrx24|CRM Bitrix24]]
 +  * **setculpa + [login,culpa]** - встановлює користувачу login кульпу вказану в culpa
 +  * **pseudocrm + [param]** - виконує відповідний виклик функцій вказахнив в param з [[pseudocrm|PseudoCRM]].
 +  * **stickynotify** - виконує розсилку в Telegram всім активним працівникам, з кількістю їх активних персональних нотаток та нагадувань "на сьогодні".
 +  * **taskmannotify** - виконує розсилку в Telegram всім активним працівникам, з кількістю запланованих на них задач планувальника задач "на сьогодні".
 +  * **ophanimtraff** - виконує синхронізацію локальної БД з даними джерел [[ophanimflow|OphanimFlow]].
 +  * **callshistusrupd** - виконує оновлення бази невідомих дзвінків, телепатично вгадуючи для них користувачів якщо вони з'явились вже після приходу дзвінка.
 +
 +
 +У разі неправильних викликів Remote API повертатиме наступні помилки:
 +
 +  * ERROR:GET_NO_ACTION - не вказано процедуру, яку слід викликати
 +  * ERROR:GET_WRONG_KEY - вказано невірний серійний номер Ubilling
 +  * ERROR:NO_UBSERIAL_EXISTS - не згенеровано серійний номер Ubilling (можна дізнатися у модулі "Стан системи")
 +  * ERROR:GET_NO_KEY - не вказано серійний номер Ubilling
 +  * ERROR:API_DISABLED - Remote API вимкнено за допомогою параметру REMOTEAPI_ENABLED=0 в alter.ini
 +  * ERROR:GET_NO_PARAM - не вказано обов'язковий параметр для виклику поточної процедури (наприклад, логін користувача)
 +
 +
 +Якщо потрібно звідкись ззовні викликати якісь процедури з API (а воно для цього і є), можна оформити це в такому вигляді:
 +
 +<code bash> 
 +/usr/local/bin/curl -o /dev/null "http://127.0.0.1/billing/?module=remoteapi&key=ваш_серійник&action=vserviceschargefee"
 +</code>
 +
 +або так
 +
 +<code bash> 
 +/usr/local/bin/curl -o /dev/null "http://127.0.0.1/billing/?module=remoteapi&key=ваш_серійник&action=swping"
 +</code>
 +
 +Думка сподіваємось зрозуміла\\
 +
 +====== Страшні виклики навколо Asterisk ======
 +
 +  * **asterisk + [param login]** - дозволяє отримати логін клієнта за номером телефону
 +  * **asterisk + [param realname]** - дозволяє отримати логін та ПІБ клієнта за номером телефону у вигляді **[login]-[ПІБ]**;
 +  * **asterisk + [param swstatus]** - дозволяє отримати стан обладнання, до якого прив'язаний клієнт у білінгу за номером телефону (Відповідь буде: OK або DIE)
 +  * **asterisk** - можливий наступний запит: **/?module=remoteapi&key=[ubserial]&action=asterisk&number=[mobile_number]&param=[login|realname|swstatus|userstatus|setcredit|paycardpay|setpause|setunpause|getuserdatabylogin|getuserdatabymobile|getcontractsbymobile|addusermobile|getvservicescount|getonlinedaysleft|getcontragentdata|getuserspends]**
 +    * //**&param=userstatus**// - дозволяє використовувати два цілком собі "self explanationary" додаткові параметри: **&ignorecache**=true и **&getmoney**=true
 +    * //**&param=setcredit**// - **зобов'язує** використовувати додаткові параметри: **&login**=some_user_login, **&money**=123.45 и **&expiredays**=7.     
 +    * //**&param=paycardpay**// - **зобов'язує** використовувати додаткові параметри: **&login**=some_user_login і **&paycardnum**=987654321. Параметр **&paycardcashtype**=24 - необов'язковий, має на увазі ID типу оплат і за замовчуванням рівний 1.
 +    * //**&param=setpause**// - **зобов'язує** використовувати додатковий параметр: **&login**=some_user_login.
 +    * //**&param=setunpause**// - **зобов'язує** використовувати додатковий параметр: **&login**=some_user_login. Наполегливо радимо використовувати цей функціонал дуже обережно, оскільки будь-яких спеціальних перевірок стану користувача перед розморожуванням не проводиться.
 +    * //**&param=getuserdatabylogin**// - **зобов'язує** використовувати додатковий параметр: **&login**=some_user_login. При використанні необов'язкового параметра **&userpass**=some_password буде проведена верифікація пари "логін + пароль" перед поверненням даних користувача.
 +    * //**&param=getuserdatabymobile|getcontractsbymobile**// - не мають на увазі використання будь-яких додаткових параметрів, крім **&number=[mobile_number]** та їх дії/повертані дані цілком відповідають їх найменуванням.
 +    * //**&param=addusermobile**// - окрім **&number=[mobile_number]** зобов'язує також використовувати параметр **&login**=some_user_login, що, як би, логічно. Необов'язковий параметр **&maxmobilesamnt**=4 показує максимальну кількість мобільних номерів однією користувача.
 +    * //**getvservicescount**// - **має на увазі** можливість пошуку користувача за номером телефону **&number=[mobile_number]** або логіну. Повертає кількість віртуальних сервісів, прив'язаних до певного користувача.
 +    * //**getonlinedaysleft**// - **має на увазі можливість пошуку користувача за номером телефону **&number=[mobile_number]** або логіну **&login**=some_user_login. Ви також можете використовувати параметр **includevsrvs=true**, щоб включити вартість віртуальних послуг у розрахунок днів, що залишилися в мережі. Повертає кількість днів, що «залишилися в мережі» для певного користувача.
 +    * //**getcontragentdata**// - **має на увазі можливість пошуку користувача за номером телефону **&number=[mobile_number]** або логіну **&login**=some_user_login. Повертає дані пов'язаного контрагента для певного користувача.
 +    * //**getuserspends**// - **має на увазі** можливість пошуку користувача за номером телефону **&number=[mobile_number]** або логіну **&login**=some_user_login. Ви також можете використовувати параметр **includevsrvs=true** для отримання всіх віртуальних послуг на додаток до основного тарифу. Повертає інформацію про тариф користувача та його вартість, а також, опціонально, аналогічну інформацію про віртуальні послуги користувача у форматі:
 +<code php>
 +        array(TarrifName => array('price' => TariffCost, 'daysperiod' => TariffChargePeriod),
 +              Vservice1 => array('price' => Vservice1Cost, 'daysperiod' => Vservice1ChargePeriod),
 +              Vservice2 => array('price' => Vservice2Cost, 'daysperiod' => Vservice2ChargePeriod), 
 +              VserviceN => array('price' => VserviceNCost, 'daysperiod' => VserviceChargePeriod)
 +             )
 +        //Примітка: "TarrifName => TariffCost" - завжди перший елемент масиву
 +</code>
 +  *
 +     * - ! -
 +        * //* Варто зазначити, що **getuserdatabylogin|getuserdatabymobile|getcontractsbymobile|getcontragentdata|getuserspends** повертають дані у форматі JSON.//\\
 +        * //* Всі значення додаткових параметрів, звичайно, вказані як приклад.//\\
 +
 +
 +
 +====== Обгортка ======
 +
 +Для зручності та красивості, можна скористатися ось таким скриптом **/bin/ubapi** (не забуваємо chmod a+x /bin/ubapi):
 +
 +<file bash ubapi>
 +#!/bin/sh
 +
 +#= Change this to your real  Ubilling serial ==
 +UBSERIAL=UB000000000000000000000000000000000
 +#==============================================
 +if [ $# -ne 1 ]
 +then
 +  echo "Usage: /bin/ubapi \"action\""
 +  echo "Example: /bin/ubapi \"backupdb\" or /bin/ubapi \"swping\""
 +  exit
 +fi
 +
 +ACTION=$1
 +/usr/local/bin/curl -o /dev/null "http://127.0.0.1/billing/?module=remoteapi&key=${UBSERIAL}&action=${ACTION}"
 +</file>
 +
 +
 +Починаючи з релізу 0.8.0, одразу після встановлення, він вже лежить по потрібному шляху. Та в нього вже вписано серійник вашого Ubilling. Тобто просто можете користуватись.
 +
 +====== А далі що? ======
 +
 +І як тепер виглядатиме crontab -e у мінімальному джентльменському наборі? А от якось так:
 +
 +<code bash>
 +40 1 1 * *      /bin/ubapi "vserviceschargefee"
 +*/20 * * * *    /bin/ubapi "swping"
 +*/10 * * * *    /bin/ubapi "fastping"
 +5 * * * *       /bin/ubapi "fullhostscan&param=traffdiff&nn=1"
 +0 */1 * * *     /bin/ubapi "swpoll"
 +*/10 * * * *    /bin/ubapi "watchdog"
 +*/5 * * * *     /bin/ubapi "senddog"
 +1 1 * * *       /bin/ubapi "backupdb"
 +3 * * * *       /bin/ubapi "rebuildglscache"
 +10 2 * * *      /bin/ubapi "dealwithit"
 +50 23 * * *     /bin/ubapi "exhorse"
 +*/10 * * * *    /bin/ubapi "nasmon"
 +*/30 * * * *    /bin/ubapi "mtsigmonpoll"
 +10 10 1 * *     /bin/ubapi "autocleandb"
 +10 */1 * * *    /bin/ubapi "fdbarchive"
 +*/10 * * * *    /bin/ubapi "oltpoll"
 +*/20 * * * *    /bin/ubapi "cachedog"
 +*/2 * * * *     /bin/ubapi "multigen"
 +10 0 * * *      /bin/ubapi "feesharvester"
 +</code>
 +
 +Це необхідний мінімум(!) для забезпечення мінімально робочого стану Ubilling.
  
remoteapi.txt · Востаннє змінено: 2024/03/26 17:58 повз nightfly