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/