forum.bitel.ru http://forum.bitel.ru/ |
|
Проблема со скриптом предобработки http://forum.bitel.ru/viewtopic.php?f=6&t=6817 |
Страница 1 из 1 |
Автор: | max [ 27 май 2012, 22:02 ] |
Заголовок сообщения: | Проблема со скриптом предобработки |
Доброго времени суток! Стоит задача заменять в аккаунтинговых пакетах радиуса первую цыфру 8 на 7 в целях правильного обсчёта, для чего был написан скрипт: Код: import bitel.billing.server.radius.*; prefix = "remote-media-address"; length = prefix.length(); origin = request.getVendorAttributes( 9, 26 ).get(0).getStringValue(); calledStation = request.getStringAttribute( RadiusStandartAttributes.Called_Station_Id ); if( origin != null && origin.startsWith( "answer" ) && calledStation != null && calledStation.startsWith( "8" ) ) calledStation = calledStation.substring( 1 ); calledStation = "7"+calledStation; request.setStringAttribute( RadiusStandartAttributes.Called_Station_Id, calledStation ); } attributes = request.getVendorAttributes( Vendors.CISCO, CiscoVendor.Cisco_AVPair ); if( attributes != null ) for( it = attributes.iterator(); it.hasNext(); ) { ra = it.next(); value = ra.getStringValue(); if( value.startsWith( prefix ) ) { if( value.endsWith( "10.9.0.18" ) ) { request.setOption( "operator", 1 ); break; } } } Однако в почту сыпятся вот такие ошибки: Код: ID события: radius.request.preprocess Время регистрации события: 27.05.2012 21:03:58 Запрос:Packet type: Accounting-Request Identifier: 161 Authenticator: {21 13 D3 51 57 ED 27 BE 1A 0C 0E 21 60 06 32 DB} Attributes: User-Name=2220220 NAS-IP-Address=xx.xx.0.200 Service-Type=1 Acct-Input-Octets=365952 Acct-Output-Octets=371520 Acct-Status-Type=2 Acct-Delay-Time=0 Acct-Session-Time=40 Acct-Input-Packets=2295 Acct-Session-Id=00000000000031C8 Acct-Output-Packets=2322 Calling-Station-Id=2220220 Called-Station-Id=779123138118 cisco-avpair=call-id=b8e19930-22af-1230-4b8e-e78dcba3bb2b cisco-avpair=iphop=count:1 cisco-avpair=iphop=hop1:10.9.0.23 cisco-avpair=h323-incoming-conf-id=E6012442 A74311E1 97A5E735 7F0C61A3 cisco-avpair=subscriber=Unknown cisco-avpair=session-protocol=sipv2 cisco-avpair=gw-rxd-cdn=ton:0,npi:0,#:89123138118 cisco-avpair=feature-vsa=fn:TWC,ft:05/27/2012 21:03:06.138,cgn:2220220,cdn:89123138118,frs:0,fid:9533,fcid:E6012442A74311E197A5E7357F0C61A3,legID:8E74 cisco-avpair=release-source=4 cisco-avpair=remote-media-address=10.9.0.23 cisco-avpair=gw-rxd-cgn=ton:0,npi:0,pi:0,si:0,#:2220220 h323-gw-id=C2691-VOIP h323-remote-address=10.9.0.23 h323-setup-time=.21:03:06.138 UTC Sun May 27 2012 h323-conf-id=E6012442 A74311E1 97A5E735 7F0C61A3 h323-call-type=VoIP h323-call-origin=answer h323-disconnect-time=.21:03:56.896 UTC Sun May 27 2012 h323-connect-time=.21:03:17.163 UTC Sun May 27 2012 h323-voice-quality=0 h323-disconnect-cause=10 Parse error at line 12, column 1. Encountered: } at bsh.Parser.generateParseException(Unknown Source) at bsh.Parser.jj_consume_token(Unknown Source) at bsh.Parser.Line(Unknown Source) at bsh.Interpreter.Line(Unknown Source) at bsh.Interpreter.eval(Unknown Source) at bsh.Interpreter.eval(Unknown Source) at bsh.Interpreter.eval(Unknown Source) at ru.bitel.bgbilling.kernel.network.radius.nas.NasScript.processRequestImpl(NasScript.java:47) at ru.bitel.bgbilling.kernel.network.radius.nas.NasScript.processRequest(NasScript.java:63) at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.preprocessAccountingRequest(RadiusProcessor.java:265) at ru.bitel.bgbilling.modules.voiceip.radius.VoiceIpRadiusProcessor.preprocessAccountingRequest(VoiceIpRadiusProcessor.java:245) at ru.bitel.bgbilling.modules.voiceip.radius.VoiceIpRadiusProcessor.preprocessAccountingRequest(VoiceIpRadiusProcessor.java:1) at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accountingRequest(RadiusProcessor.java:397) at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.run(RadiusListenerWorker.java:176) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40) Не подскажите в чём проблема? |
Автор: | Phricker [ 28 май 2012, 02:34 ] |
Заголовок сообщения: | Re: Проблема со скриптом предобработки |
Код: if( origin != null && origin.startsWith( "answer" ) && calledStation != null && calledStation.startsWith( "8" ) ) calledStation = calledStation.substring( 1 ); calledStation = "7"+calledStation; request.setStringAttribute( RadiusStandartAttributes.Called_Station_Id, calledStation ); } закрывающая } есть. А открывающей не вижу. |
Автор: | max [ 28 май 2012, 14:53 ] |
Заголовок сообщения: | Re: Проблема со скриптом предобработки |
Спасибо помогло. |
Автор: | max [ 28 май 2012, 15:46 ] |
Заголовок сообщения: | Re: Проблема со скриптом предобработки |
Опять не слава богу, поправил скрипт Код: import bitel.billing.server.radius.*; origin = request.getVendorAttributes( 9, 26 ).get(0).getStringValue(); calledStation = request.getStringAttribute( RadiusStandartAttributes.Called_Station_Id ); if( origin != null && origin.startsWith( "answer" ) && calledStation != null && calledStation.startsWith( "8" ) ) { calledStation = calledStation.substring( 1 ); calledStation = "7"+calledStation; request.setStringAttribute( RadiusStandartAttributes.Called_Station_Id, calledStation ); } if( origin != null && origin.startsWith( "answer" ) && calledStation != null && calledStation.startsWith( "2" ) ) { calledStation = "7351"+calledStation; request.setStringAttribute( RadiusStandartAttributes.Called_Station_Id, calledStation ); } attributes = request.getVendorAttributes( Vendors.CISCO, CiscoVendor.Cisco_AVPair ); if( attributes != null ) for( it = attributes.iterator(); it.hasNext(); ) { ra = it.next(); value = ra.getStringValue(); if( value.startsWith( prefix ) ) { if( value.endsWith( "10.9.0.18" ) ) { request.setOption( "operator", 1 ); break; } } } Теперь ругается на вторую строчку: Код: Sourced file: inline evaluation of: ``import bitel.billing.server.radius.*; origin = request.getVendorAttributes( 9, 2 . . . '' : Undefined argument: prefix : at Line: 25 : in file: inline evaluation of: ``import bitel.billing.server.radius.*; origin = request.getVendorAttributes( 9, 2 . . . '' : ( prefix )
at bsh.BSHArguments.getArguments(Unknown Source) at bsh.BSHMethodInvocation.eval(Unknown Source) at bsh.BSHPrimaryExpression.eval(Unknown Source) at bsh.BSHPrimaryExpression.eval(Unknown Source) at bsh.BSHIfStatement.evaluateCondition(Unknown Source) at bsh.BSHIfStatement.eval(Unknown Source) at bsh.BSHBlock.evalBlock(Unknown Source) at bsh.BSHBlock.eval(Unknown Source) at bsh.BSHBlock.eval(Unknown Source) at bsh.BSHForStatement.eval(Unknown Source) at bsh.BSHIfStatement.eval(Unknown Source) at bsh.Interpreter.eval(Unknown Source) at bsh.Interpreter.eval(Unknown Source) at bsh.Interpreter.eval(Unknown Source) at ru.bitel.bgbilling.kernel.network.radius.nas.NasScript.processRequestImpl(NasScript.java:47) at ru.bitel.bgbilling.kernel.network.radius.nas.NasScript.processRequest(NasScript.java:63) at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.preprocessAccountingRequest(RadiusProcessor.java:265) at ru.bitel.bgbilling.modules.voiceip.radius.VoiceIpRadiusProcessor.preprocessAccountingRequest(VoiceIpRadiusProcessor.java:245) at ru.bitel.bgbilling.modules.voiceip.radius.VoiceIpRadiusProcessor.preprocessAccountingRequest(VoiceIpRadiusProcessor.java:1) at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accountingRequest(RadiusProcessor.java:397) at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.run(RadiusListenerWorker.java:176) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40) |
Автор: | Phricker [ 28 май 2012, 18:13 ] |
Заголовок сообщения: | Re: Проблема со скриптом предобработки |
Цитата: Undefined argument: prefix в первом скрипте у вас он объявляется Код: prefix = "remote-media-address"; length = prefix.length(); а во втором? |
Автор: | max [ 28 май 2012, 18:37 ] |
Заголовок сообщения: | Re: Проблема со скриптом предобработки |
СПС |
Автор: | Xo4yxa [ 13 июл 2012, 18:58 ] |
Заголовок сообщения: | Re: Проблема со скриптом предобработки |
У меня скрипт предобработки вот такой: Код: import bitel.billing.server.radius.*; import java.util.regex.*; prefix = "remote-media-address"; length = prefix.length(); //Матчим и заменяем DID if (request.getStringAttribute(RadiusStandartAttributes.Called_Station_Id) != null ) { calledStationId = RadiusStandartAttributes.Called_Station_Id; String DID = request.getStringAttribute(calledStationId).replaceFirst("^8(\\d{10})$","7$1"); if (DID != request.getStringAttribute(calledStationId)) { request.setStringAttribute(calledStationId, DID); }; String DID = request.getStringAttribute(calledStationId).replaceFirst("^(\\d{10})$","7$1"); if (DID != request.getStringAttribute(calledStationId)) { request.setStringAttribute(calledStationId, DID); }; String DID = request.getStringAttribute(calledStationId).replaceFirst("^777(\\d)$","7812313772$1"); if (DID != request.getStringAttribute(calledStationId)) { request.setStringAttribute(calledStationId, DID); }; }; //Матчим и заменяем ANI if ( request.getStringAttribute(RadiusStandartAttributes.Calling_Station_Id) != null ) { callingStationId = RadiusStandartAttributes.Calling_Station_Id; String ANI = request.getStringAttribute(callingStationId).replaceFirst("^8(\\d{10})$","7$1"); if (ANI != request.getStringAttribute(callingStationId)) { request.setStringAttribute(callingStationId, ANI); }; String ANI = request.getStringAttribute(callingStationId).replaceFirst("^(\\d{10})$","7$1"); if (ANI != request.getStringAttribute(callingStationId)) { request.setStringAttribute(callingStationId, ANI); }; String ANI = request.getStringAttribute(callingStationId).replaceFirst("^(\\d{3})$","78120000$1"); if (ANI != request.getStringAttribute(callingStationId)) { request.setStringAttribute(callingStationId, ANI); }; String ANI = request.getStringAttribute(callingStationId).replaceFirst("^(\\d{4})$","7812000$1"); if (ANI != request.getStringAttribute(callingStationId)) { request.setStringAttribute(callingStationId, ANI); }; }; attributes = request.getVendorAttributes( Vendors.CISCO, CiscoVendor.Cisco_AVPair ); if( attributes != null ) for( it = attributes.iterator(); it.hasNext(); ) { ra = it.next(); value = ra.getStringValue(); if( value.endsWith( "80.75.130.132" ) ) { request.setOption( "operator", 1 ); break; } else if( value.endsWith( "172.16.101.18" ) ) { request.setOption( "operator", 2 ); break; } } при это ошибка совсем другая Код: 07-13/16:57:43 ERROR [rdsLstnr-p-4-t-5] NasScriptInvoker - Sourced file: inline evaluation of: ``import bitel.billing.server.radius.*; import java.util.regex.*; prefix = "remot . . . '' : Error in method invocation: Method getStringValue() not found in class'ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute$RadiusAttributeString' Sourced file: inline evaluation of: ``import bitel.billing.server.radius.*; import java.util.regex.*; prefix = "remot . . . '' : Error in method invocation: Method getStringValue() not found in class'ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute$RadiusAttributeString' : at Line: 36 : in file: inline evaluation of: ``import bitel.billing.server.radius.*; import java.util.regex.*; prefix = "remot . . . '' : ra .getStringValue ( ) Информация о версии: Клиент: вер. 5.2 сборка 1009 от 12.07.2012 15:43:58 os: Mac OS X; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_33 Сервер: вер. 5.2 сборка 1236 от 12.07.2012 19:36:57 os: Linux; java: Java HotSpot(TM) Server VM, v.1.6.0_29 bill вер. 5.2 сборка 268 от 12.07.2012 18:43:42 npay вер. 5.2 сборка 184 от 12.07.2012 15:44:20 phone вер. 5.2 сборка 241 от 12.07.2012 15:44:21 reports вер. 5.2 сборка 178 от 28.06.2012 14:17:45 ru.bitel.bgbilling.plugins.crm вер. 5.2 сборка 183 от 06.07.2012 15:45:03 ru.bitel.bgbilling.plugins.dispatch вер. 5.2 сборка 39 от 09.07.2012 17:11:51 ru.bitel.bgbilling.plugins.helpdesk вер. 5.2 сборка 163 от 13.06.2012 11:34:11 voiceip вер. 5.2 сборка 183 от 25.06.2012 12:54:06 |
Автор: | Phricker [ 14 июл 2012, 01:47 ] |
Заголовок сообщения: | Re: Проблема со скриптом предобработки |
Цитата: Код: Error in method invocation: Method getStringValue() not found in class'ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute$RadiusAttributeString' RadiusAttribute говорит о том, что в нем нет getStringValue(), но зато от класса ru.bitel.bgbilling.kernel.network.tlv.Tlv наследуется getValue() |
Автор: | Xo4yxa [ 17 июл 2012, 16:15 ] |
Заголовок сообщения: | Re: Проблема со скриптом предобработки |
Phricker писал(а): Цитата: Код: Error in method invocation: Method getStringValue() not found in class'ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute$RadiusAttributeString' RadiusAttribute говорит о том, что в нем нет getStringValue(), но зато от класса ru.bitel.bgbilling.kernel.network.tlv.Tlv наследуется getValue() Я совсем не програмист, что мне делать? |
Автор: | Phricker [ 17 июл 2012, 16:22 ] |
Заголовок сообщения: | Re: Проблема со скриптом предобработки |
вместо getStringValue() написать getValue() |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |