BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 25 июн 2025, 20:49

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
СообщениеДобавлено: 14 мар 2009, 09:11 
Не в сети

Зарегистрирован: 23 фев 2009, 08:30
Сообщения: 5
Откуда: Bratsk
Карма: 0
Когда пользователь меняет себе тарифный план через веб с одного безлимитного тарифа на другой, но при этом не разрывает сессию, скорость подключения не изменяется.
Как реализовать разрыв сессии в момент перехода с одного тарифа на другой?

NAS - MPD 5.2 на FreeBSD

bill вер. 4.5 сборка 160 от 04.02.2009 21:36:39
dialup вер. 4.5 сборка 112 от 04.02.2009 13:07:12


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 мар 2009, 15:40 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
logger писал(а):
Как реализовать разрыв сессии в момент перехода с одного тарифа на другой?

нарисовать скрипт на смену тарифа в котром и сбрасывать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 мар 2009, 09:41 
Не в сети

Зарегистрирован: 23 фев 2009, 08:30
Сообщения: 5
Откуда: Bratsk
Карма: 0
snark писал(а):
logger писал(а):
Как реализовать разрыв сессии в момент перехода с одного тарифа на другой?

нарисовать скрипт на смену тарифа в котром и сбрасывать?

Можно немного подробнее? Что должно быть в скрипте (какая команда) и к какому событию он должен быть привязан?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 мар 2009, 13:02 
Вообще это достаточно просто по snmp организовать только надо чтобы прислали нужые параметры в скрипт, ну и соответственно только на PC работать будет.


Вернуться к началу
  
 
СообщениеДобавлено: 15 мар 2009, 16:20 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
logger писал(а):
Что должно быть в скрипте (какая команда) и к какому событию он должен быть привязан?

скрипт должен быть привязан к событию "смена тарифного плана по заданию пользователя", а вот как там сбросить ... надо почитать ман по API ... грубо говоря - в скрипте надо воспроизвести то что делает dialup модуль когда Вы нажимаете "сбросить"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 май 2009, 03:00 
Не в сети

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
UP
Аналогичная проблема. При смене тарифа через клиента все ок, сессия разрывается. А через веб, остается активной. В момент разрыва в радиус пакете нашел стандартные атрибуты апдейта, а затем вот это
Код:
05-18/00:47:57  INFO [pool-2-thread-12] radius -  RESPONSE:
Type=ACCOUNTING_RESPONSE
Process time stop: 37
Attributes:

Опишите, как решили? Желательно с кодом. Потому как текущее поведение системы абсолютно нелогично.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 май 2009, 22:56 
Не в сети

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
Так, с командами разобрался. Правильнее командовать NASом по телнету или SSH, тогда можно (да и правильнее) обойтись без разрыва сессии. А вот с логикой работы события, как писал
snark писал(а):
скрипт должен быть привязан к событию "смена тарифного плана по заданию пользователя"
не работает. Уважаемые разработчики, обратите внимание: вы предлагаете нам логику события "смена тарифного плана по заданию пользователя", а реализуете логику "Задание пользователя на смену тарифного плана", т.е. событие генерируется в момент нажатия кнопки пользователем, а не в момент смены тарифа. Пожалуста, поправьте положение, или предложите другое решение фиксации момента смены тарифа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 май 2009, 13:48 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Обновление выложено. При смене тарифа через Web также должно рвать сессию.

Цитата:
не работает. Уважаемые разработчики, обратите внимание: вы предлагаете нам логику события "смена тарифного плана по заданию пользователя", а реализуете логику "Задание пользователя на смену тарифного плана", т.е. событие генерируется в момент нажатия кнопки пользователем, а не в момент смены тарифа. Пожалуста, поправьте положение, или предложите другое решение фиксации момента смены тарифа.

Тариф меняется сразу будущим числом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 май 2009, 14:06 
Не в сети

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
Администратор писал(а):
...сразу будущим числом.
Что это значит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 май 2009, 15:05 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Ну запись в базу о новом тарифе сразу производится. Но будущей датой. Непосредственно момент перехода на обсчет по новому тарифу событием не обозначен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 май 2009, 05:09 
Не в сети

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
Обновил, начал пробовать....
Цитата:
При смене тарифа через Web также должно рвать сессию.
добавил задание на смену тарифа с 21 числа для пробы, буду ждать границу суток, но.. какой практический смысл рвать сессию в момент создания задачи на смену тарифа будущим числом? Ведь абонент всё равно реконектится на старый тариф, т.к новый еще не вступил в действие.
Цитата:
Непосредственно момент перехода на обсчет по новому тарифу событием не обозначен.
Т.е. как это не обозначен?!!!Я конечно прошу прощения, но слова "момент" и "событие" в русском языке по смыслу если не тождественны, то очень близки. И посему я вправе расчитывать, что "событие" произойдет в обозначенный "момент". Потеряно слишком много времени, в расчете на заявленный функционал. Считаю, что с Вашей стороны не довести до ума имеющееся событие смены тарифа будет по меньшей мере невежливо. А разрыв сессии на границе тарифов реализовывать к примеру отключаемым. Кто сможет, напишет для своего наса скрипты и будет командовать по телнету, кто не сможет, будет рвать сессию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 май 2009, 11:58 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Цитата:
добавил задание на смену тарифа с 21 числа для пробы, буду ждать границу суток, но.. какой практический смысл рвать сессию в момент создания задачи на смену тарифа будущим числом? Ведь абонент всё равно реконектится на старый тариф, т.к новый еще не вступил в действие.


Ну вот стоит у него план с 1 го числа и до бесконечности. В момент авторизации RADIUS считывает все тарифы которые будут действовать в будущем. Если тариф сменился с 21го числа, радиус об этом не узнает, будет считать по старому тарифу. Поэтому идет команда на сброс, после которой новая авторизация и радиус считает снова что до 21 старый тариф, а после 21 новый.

Цитата:
Т.е. как это не обозначен?!!!Я конечно прошу прощения, но слова "момент" и "событие" в русском языке по смыслу если не тождественны, то очень близки. И посему я вправе расчитывать, что "событие" произойдет в обозначенный "момент". Потеряно слишком много времени, в расчете на заявленный функционал. Считаю, что с Вашей стороны не довести до ума имеющееся событие смены тарифа будет по меньшей мере невежливо. А разрыв сессии на границе тарифов реализовывать к примеру отключаемым. Кто сможет, напишет для своего наса скрипты и будет командовать по телнету, кто не сможет, будет рвать сессию.


Хм, вы требуете от нас сделать что-то, апеллируя к русскому языку? :)

Отследить переход между тарифами впринципе можно, устанавив зоны в каждом из тарифов. См. доку. По зоне сделать событие прихода платежа, например. А по событию платежа этого типа менять что-то на NASе. Например, так.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 май 2009, 19:00 
Не в сети

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
Цитата:
Хм, вы требуете от нас сделать что-то, апеллируя к русскому языку?

Я пытаюсь изъясняться, надеюсь, на понятном Вам языке. if (Вы заинтересованы в диалоге), {можем перейти на другой};. else {дальше можно не читать}; Аргументы с очевидными вещами я привел выше. Да и потом, конкуренция сейчас смещается в плоскость user-friendly и его величество userу, глубоко "начхать и нас*ать" на адреса, протоколы, NASы, радиусы, биллинги и на то, как оператор, или тем более, разработчик хотят видеть ЕГО личный кабинет. Главное, чтоб с его точки зрения было комфортно, удобно, логично и понятно и самое главное "не было ни единого разрыва" :) . (за данной фразой все права сохраняются). Так что за наезд и лирическое отступление извиняйте, я просто передаю то, что хочет наш с Вами общий Друг, но наша задача ограничить его в рамках нашей рентабельности незаметно для него самого.
Цитата:
По зоне сделать событие прихода платежа, например. А по событию платежа этого типа менять что-то на NASе. Например, так.
Буду тыкаться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 май 2009, 12:25 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Chaos писал(а):
Цитата:
Непосредственно момент перехода на обсчет по новому тарифу событием не обозначен.
Т.е. как это не обозначен?!!!Я конечно прошу прощения, но слова "момент" и "событие" в русском языке по смыслу если не тождественны, то очень близки. И посему я вправе расчитывать, что "событие" произойдет в обозначенный "момент". Потеряно слишком много времени, в расчете на заявленный функционал. Считаю, что с Вашей стороны не довести до ума имеющееся событие смены тарифа будет по меньшей мере невежливо. А разрыв сессии на границе тарифов реализовывать к примеру отключаемым. Кто сможет, напишет для своего наса скрипты и будет командовать по телнету, кто не сможет, будет рвать сессию.


Вам всего лишь хотели сказать , что событие/или момент(что да вас одно и тоже) перехода на новый тариф в реальной жизни не обозначен СОБЫТИЕМ В BGBILLING, под событем в BGBilling понимается , некоторое специально иницированное биллингом событие , которое может быть обработано скриптами .. Русский язык тут не при чем .. оно, это событие биллингу не нужно просто .. в любом месте где нужен тариф , он просто берется на нужную дату и все .. чтобы получть ваше событие , надо соазвать какой-то процесс, который будет запускаться где-нибудь в конце дня (или в начале следующего) и проверять не изменился ли тариф на границе суток , и если да, то генерировать событие( с точки зрения биллинга опять же, а не просто событие с точки зрения русского языка).. можете сделать это скриптом по обработке события таймера


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 май 2009, 13:34 
Не в сети

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
Спасибо за более понятный ответ.
правильно ли будет вести такую проверку?
Код:
 
 DateNow = new GregorianCalendar();
 cid = event.getContractID();
 ctm =  new ContractTariffManager( con );
 currentTariff = ctm.getContractTariff( cid, DateNow ).getTariffPlanID();
 newTariff = event.getToTariff().getID();
 if(currentTariff != newTariff  )
  {
   отправляем на NAS параметры этого контракта (cid) и скорости  для newTariff
  }

В какой момент лучше запускать этот код? в 23.59 или в 0.01?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 май 2009, 17:37 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Chaos писал(а):
Спасибо за более понятный ответ.
правильно ли будет вести такую проверку?
Код:
 
 DateNow = new GregorianCalendar();
 cid = event.getContractID();
 ctm =  new ContractTariffManager( con );
 currentTariff = ctm.getContractTariff( cid, DateNow ).getTariffPlanID();
 newTariff = event.getToTariff().getID();
 if(currentTariff != newTariff  )
  {
   отправляем на NAS параметры этого контракта (cid) и скорости  для newTariff
  }

В какой момент лучше запускать этот код? в 23.59 или в 0.01?


запускает лучше 0.10 .. и может во такой код сделать:
Код:
        cid = event.getContractID();
        oldDate = new GregorianCalendar();
        oldDate.add( Calendar.DAY_OF_MONTH, -1 );       
        newDate = new GregorianCalendar();
       
        ctm =  new ContractTariffManager( con );
        oldTariff =  ctm.getContractTariff( cid, oldDate );
        newTariff =  ctm.getContractTariff( cid, newDate );
       
        if ( oldTariff !=null && newTariff != null &&  oldTariff.getTariffPlanID() != newTariff.getTariffPlanID() )
        {
           отправляем на NAS параметры этого контракта (cid) и скорости  для newTariff
        }


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.056s | 46 Queries | GZIP : On ]