forum.bitel.ru http://forum.bitel.ru/ |
|
Изменение скорости при смене безлимитного тарифного плана http://forum.bitel.ru/viewtopic.php?f=5&t=2014 |
Страница 1 из 1 |
Автор: | logger [ 14 мар 2009, 09:11 ] |
Заголовок сообщения: | Изменение скорости при смене безлимитного тарифного плана |
Когда пользователь меняет себе тарифный план через веб с одного безлимитного тарифа на другой, но при этом не разрывает сессию, скорость подключения не изменяется. Как реализовать разрыв сессии в момент перехода с одного тарифа на другой? 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 |
Автор: | snark [ 14 мар 2009, 15:40 ] |
Заголовок сообщения: | Re: Изменение скорости при смене безлимитного тарифного план |
logger писал(а): Как реализовать разрыв сессии в момент перехода с одного тарифа на другой?
нарисовать скрипт на смену тарифа в котром и сбрасывать? |
Автор: | logger [ 15 мар 2009, 09:41 ] |
Заголовок сообщения: | Re: Изменение скорости при смене безлимитного тарифного план |
snark писал(а): logger писал(а): Как реализовать разрыв сессии в момент перехода с одного тарифа на другой? нарисовать скрипт на смену тарифа в котром и сбрасывать? Можно немного подробнее? Что должно быть в скрипте (какая команда) и к какому событию он должен быть привязан? |
Автор: | stels [ 15 мар 2009, 13:02 ] |
Заголовок сообщения: | |
Вообще это достаточно просто по snmp организовать только надо чтобы прислали нужые параметры в скрипт, ну и соответственно только на PC работать будет. |
Автор: | snark [ 15 мар 2009, 16:20 ] |
Заголовок сообщения: | Re: Изменение скорости при смене безлимитного тарифного план |
logger писал(а): Что должно быть в скрипте (какая команда) и к какому событию он должен быть привязан?
скрипт должен быть привязан к событию "смена тарифного плана по заданию пользователя", а вот как там сбросить ... надо почитать ман по API ... грубо говоря - в скрипте надо воспроизвести то что делает dialup модуль когда Вы нажимаете "сбросить" |
Автор: | Chaos [ 18 май 2009, 03:00 ] |
Заголовок сообщения: | |
UP Аналогичная проблема. При смене тарифа через клиента все ок, сессия разрывается. А через веб, остается активной. В момент разрыва в радиус пакете нашел стандартные атрибуты апдейта, а затем вот это Код: 05-18/00:47:57 INFO [pool-2-thread-12] radius - RESPONSE:
Type=ACCOUNTING_RESPONSE Process time stop: 37 Attributes: Опишите, как решили? Желательно с кодом. Потому как текущее поведение системы абсолютно нелогично. |
Автор: | Chaos [ 18 май 2009, 22:56 ] |
Заголовок сообщения: | |
Так, с командами разобрался. Правильнее командовать NASом по телнету или SSH, тогда можно (да и правильнее) обойтись без разрыва сессии. А вот с логикой работы события, как писал snark писал(а): скрипт должен быть привязан к событию "смена тарифного плана по заданию пользователя" не работает. Уважаемые разработчики, обратите внимание: вы предлагаете нам логику события "смена тарифного плана по заданию пользователя", а реализуете логику "Задание пользователя на смену тарифного плана", т.е. событие генерируется в момент нажатия кнопки пользователем, а не в момент смены тарифа. Пожалуста, поправьте положение, или предложите другое решение фиксации момента смены тарифа.
|
Автор: | Администратор [ 19 май 2009, 13:48 ] |
Заголовок сообщения: | |
Обновление выложено. При смене тарифа через Web также должно рвать сессию. Цитата: не работает. Уважаемые разработчики, обратите внимание: вы предлагаете нам логику события "смена тарифного плана по заданию пользователя", а реализуете логику "Задание пользователя на смену тарифного плана", т.е. событие генерируется в момент нажатия кнопки пользователем, а не в момент смены тарифа. Пожалуста, поправьте положение, или предложите другое решение фиксации момента смены тарифа.
Тариф меняется сразу будущим числом. |
Автор: | Chaos [ 19 май 2009, 14:06 ] |
Заголовок сообщения: | |
Администратор писал(а): ...сразу будущим числом. Что это значит?
|
Автор: | Администратор [ 19 май 2009, 15:05 ] |
Заголовок сообщения: | |
Ну запись в базу о новом тарифе сразу производится. Но будущей датой. Непосредственно момент перехода на обсчет по новому тарифу событием не обозначен. |
Автор: | Chaos [ 20 май 2009, 05:09 ] |
Заголовок сообщения: | |
Обновил, начал пробовать.... Цитата: При смене тарифа через Web также должно рвать сессию. добавил задание на смену тарифа с 21 числа для пробы, буду ждать границу суток, но.. какой практический смысл рвать сессию в момент создания задачи на смену тарифа будущим числом? Ведь абонент всё равно реконектится на старый тариф, т.к новый еще не вступил в действие. Цитата: Непосредственно момент перехода на обсчет по новому тарифу событием не обозначен. Т.е. как это не обозначен?!!!Я конечно прошу прощения, но слова "момент" и "событие" в русском языке по смыслу если не тождественны, то очень близки. И посему я вправе расчитывать, что "событие" произойдет в обозначенный "момент". Потеряно слишком много времени, в расчете на заявленный функционал. Считаю, что с Вашей стороны не довести до ума имеющееся событие смены тарифа будет по меньшей мере невежливо. А разрыв сессии на границе тарифов реализовывать к примеру отключаемым. Кто сможет, напишет для своего наса скрипты и будет командовать по телнету, кто не сможет, будет рвать сессию.
|
Автор: | Администратор [ 20 май 2009, 11:58 ] |
Заголовок сообщения: | |
Цитата: добавил задание на смену тарифа с 21 числа для пробы, буду ждать границу суток, но.. какой практический смысл рвать сессию в момент создания задачи на смену тарифа будущим числом? Ведь абонент всё равно реконектится на старый тариф, т.к новый еще не вступил в действие. Ну вот стоит у него план с 1 го числа и до бесконечности. В момент авторизации RADIUS считывает все тарифы которые будут действовать в будущем. Если тариф сменился с 21го числа, радиус об этом не узнает, будет считать по старому тарифу. Поэтому идет команда на сброс, после которой новая авторизация и радиус считает снова что до 21 старый тариф, а после 21 новый. Цитата: Т.е. как это не обозначен?!!!Я конечно прошу прощения, но слова "момент" и "событие" в русском языке по смыслу если не тождественны, то очень близки. И посему я вправе расчитывать, что "событие" произойдет в обозначенный "момент". Потеряно слишком много времени, в расчете на заявленный функционал. Считаю, что с Вашей стороны не довести до ума имеющееся событие смены тарифа будет по меньшей мере невежливо. А разрыв сессии на границе тарифов реализовывать к примеру отключаемым. Кто сможет, напишет для своего наса скрипты и будет командовать по телнету, кто не сможет, будет рвать сессию.
Хм, вы требуете от нас сделать что-то, апеллируя к русскому языку? ![]() Отследить переход между тарифами впринципе можно, устанавив зоны в каждом из тарифов. См. доку. По зоне сделать событие прихода платежа, например. А по событию платежа этого типа менять что-то на NASе. Например, так. |
Автор: | Chaos [ 20 май 2009, 19:00 ] |
Заголовок сообщения: | |
Цитата: Хм, вы требуете от нас сделать что-то, апеллируя к русскому языку? Я пытаюсь изъясняться, надеюсь, на понятном Вам языке. if (Вы заинтересованы в диалоге), {можем перейти на другой};. else {дальше можно не читать}; Аргументы с очевидными вещами я привел выше. Да и потом, конкуренция сейчас смещается в плоскость user-friendly и его величество userу, глубоко "начхать и нас*ать" на адреса, протоколы, NASы, радиусы, биллинги и на то, как оператор, или тем более, разработчик хотят видеть ЕГО личный кабинет. Главное, чтоб с его точки зрения было комфортно, удобно, логично и понятно и самое главное "не было ни единого разрыва" ![]() Цитата: По зоне сделать событие прихода платежа, например. А по событию платежа этого типа менять что-то на NASе. Например, так. Буду тыкаться.
|
Автор: | stark [ 21 май 2009, 12:25 ] |
Заголовок сообщения: | |
Chaos писал(а): Цитата: Непосредственно момент перехода на обсчет по новому тарифу событием не обозначен. Т.е. как это не обозначен?!!!Я конечно прошу прощения, но слова "момент" и "событие" в русском языке по смыслу если не тождественны, то очень близки. И посему я вправе расчитывать, что "событие" произойдет в обозначенный "момент". Потеряно слишком много времени, в расчете на заявленный функционал. Считаю, что с Вашей стороны не довести до ума имеющееся событие смены тарифа будет по меньшей мере невежливо. А разрыв сессии на границе тарифов реализовывать к примеру отключаемым. Кто сможет, напишет для своего наса скрипты и будет командовать по телнету, кто не сможет, будет рвать сессию.Вам всего лишь хотели сказать , что событие/или момент(что да вас одно и тоже) перехода на новый тариф в реальной жизни не обозначен СОБЫТИЕМ В BGBILLING, под событем в BGBilling понимается , некоторое специально иницированное биллингом событие , которое может быть обработано скриптами .. Русский язык тут не при чем .. оно, это событие биллингу не нужно просто .. в любом месте где нужен тариф , он просто берется на нужную дату и все .. чтобы получть ваше событие , надо соазвать какой-то процесс, который будет запускаться где-нибудь в конце дня (или в начале следующего) и проверять не изменился ли тариф на границе суток , и если да, то генерировать событие( с точки зрения биллинга опять же, а не просто событие с точки зрения русского языка).. можете сделать это скриптом по обработке события таймера |
Автор: | Chaos [ 21 май 2009, 13:34 ] |
Заголовок сообщения: | |
Спасибо за более понятный ответ. правильно ли будет вести такую проверку? Код: 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? |
Автор: | stark [ 22 май 2009, 17:37 ] |
Заголовок сообщения: | |
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 } |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |