forum.bitel.ru
http://forum.bitel.ru/

Скрипт предобработки
http://forum.bitel.ru/viewtopic.php?f=6&t=4567
Страница 1 из 1

Автор:  paramonies [ 21 сен 2010, 18:16 ]
Заголовок сообщения:  Скрипт предобработки

Пытаемся скрестить Asterisk и биддинг скрипт предобработки взял с :
[url]
http://wiki.bgbilling.ru/index.php/%D0% ... %B2_Radius
[/url]

в error.log ошибка:
Код:
script 09-21/16:12:22 ERROR [radiusListener-p-4-t-1] NasScript - Sourced file: inline evaluation of: ``import bitel.billing.server.radius.*;    if (request.getIntAttribute(RadiusStand . . . '' : Error in method invocation: Method setVendorStringAttribute( int, java.lang.String ) not found in class'ru.bitel.bgbilling.kernel.network.radius.RadiusPacket'
Sourced file: inline evaluation of: ``import bitel.billing.server.radius.*;    if (request.getIntAttribute(RadiusStand . . . '' : Error in method invocation: Method setVendorStringAttribute( int, java.lang.String ) not found in class'ru.bitel.bgbilling.kernel.network.radius.RadiusPacket' : at Line: 27 : in file: inline evaluation of: ``import bitel.billing.server.radius.*;    if (request.getIntAttribute(RadiusStand . . . '' : request .setVendorStringAttribute ( 26 , "originate" )
at bsh.BSHMethodInvocation.eval(Unknown Source)
   at bsh.BSHPrimaryExpression.eval(Unknown Source)
   at bsh.BSHPrimaryExpression.eval(Unknown Source)
   at bsh.BSHBlock.evalBlock(Unknown Source)
   at bsh.BSHBlock.eval(Unknown Source)
   at bsh.BSHBlock.eval(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.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:42)
   at ru.bitel.bgbilling.kernel.network.radius.nas.NasScript.processRequest(NasScript.java:58)
   at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.preprocessAccountingRequest(RadiusProcessor.java:264)
   at ru.bitel.bgbilling.modules.voiceip.radius.VoiceIpRadiusProcessor.preprocessAccountingRequest(VoiceIpRadiusProcessor.java:220)
   at ru.bitel.bgbilling.modules.voiceip.radius.VoiceIpRadiusProcessor.preprocessAccountingRequest(VoiceIpRadiusProcessor.java:1)
   at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accountingRequest(RadiusProcessor.java:396)
   at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.run(RadiusListenerWorker.java:218)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
   at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40)


Может кто-нибудь поделится работающим скриптом?

Автор:  stark [ 21 сен 2010, 20:04 ]
Заголовок сообщения:  Re: Скрипт предобработки

какая версия биллинга ? скорее всего код устарел

Автор:  paramonies [ 21 сен 2010, 23:09 ]
Заголовок сообщения:  Re: Скрипт предобработки

Подправил скрипт:
Код:
import bitel.billing.server.radius.*;


 
if (request.getIntAttribute(RadiusStandartAttributes.Acct_Status_Type) == 2) {
   // Устанавливаем Calling-Station-Id = Asterisk-Src
   CallingStationId = request.getStringAttribute(22736, 102, null);
   request.setStringAttribute(RadiusStandartAttributes.Calling_Station_Id, CallingStationId);


   // Проверяем наличие Asterisk-Acc-Code, и если он существует,
   // то устанавливаем User-Name = Asterisk-Acc-Code, если не существует,
   // то устанавливаем User-Name = Calling-Station-Id
   UserName = request.getStringAttribute(22736, 101, null);
  /* if (UserName != null)
      request.setStringAttribute(RadiusStandartAttributes.User_Name, UserName);
   else */
      request.setStringAttribute(RadiusStandartAttributes.User_Name, CallingStationId);

   // Устанавливаем Called-Station-Id = Asterisk-Dst
   request.setStringAttribute(RadiusStandartAttributes.Called_Station_Id, request.getStringAttribute(22736, 103, null));

   // Проверяем наличие Asterisk-User-Field, и если такой существует,
   // то на основании его значения устанавливаем h323-call-origin
   CallType = request.getStringAttribute(22736, 118, null);
   if (CallType != null && CallType.equals("answer")) {
      request.setStringAttribute(9, 26, "answer");
      request.setFlag(2);
   }
   else {
      request.setStringAttribute(9, 26, "originate");
      request.setFlag(1);
   }

   // Устанавливаем h323-call-type = VOIP
   request.setStringAttribute(9, 27, "VOIP");

   // Устанавливаем Acct-Session-Time = Asterisk-Bill-Sec
   request.setIntAttribute( RadiusStandartAttributes.Acct_Session_Time, request.getIntAttribute(22736, 114, null));

   // Устанавливаем h323-setup-time = Asterisk-Start-Time
   request.setStringAttribute(9, 25, request.getStringAttribute(22736, 110, null));

   // Устанавливаем h323-connect-time = Asterisk-Answer-Time
   request.setStringAttribute(9, 28, request.getStringAttribute(22736, 111, null));

   // Устанавливаем h323-disconnect-time = Asterisk-End-Time
   request.setStringAttribute(9, 29, request.getStringAttribute(22736, 112, null));

   // Устанавливаем h323-disconnect-cause на основании Asterisk-Disposition
   AsteriskDisposition = request.getStringAttribute(22736, 115, null);
   if (AsteriskDisposition.equals("ANSWERED"))
      request.setStringAttribute(9, 30, "0");
   else if (AsteriskDisposition.equals("NO ANSWER"))
      request.setStringAttribute(9, 30, "5");
   else if (AsteriskDisposition.equals("BUSY"))
      request.setStringAttribute(9, 30, "17");
   else
      request.setStringAttribute(9, 30, "22");

   // Устанавливаем h323-conf-id = Acct-Session-Id
   request.setStringAttribute(9, 24, request.getStringAttribute(-1, RadiusStandartAttributes.Acct_Session_Id, null));

} // Конец if (Acct_Status_Type == 2)

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/