Администратор писал(а):
Скрипт целиком покажите. Или там так и есть многоточия?
)))
Код:
import bitel.billing.server.radius.*;
if (request.getIntAttribute(RadiusStandartAttributes.Acct_Status_Type) == 2) {
// Устанавливаем Calling-Station-Id = Asterisk-Src
CallingStationId = request.getVendorAttributes(22736, 102).get(0).getStringValue();
request.setStringAttribute(RadiusStandartAttributes.Calling_Station_Id, CallingStationId);
// Проверяем наличие Asterisk-Acc-Code, и если он существует,
// то устанавливаем User-Name = Asterisk-Acc-Code, если не существует,
// то устанавливаем User-Name = Calling-Station-Id
UserName = request.getVendorAttributes(22736, 101);
if (UserName != null)
request.setStringAttribute(RadiusStandartAttributes.User_Name, UserName.get(0).getStringValue());
else
request.setStringAttribute(RadiusStandartAttributes.User_Name, CallingStationId);
// Устанавливаем Called-Station-Id = Asterisk-Dst
CalledStationId = request.getVendorAttributes( 22736, 103 ).get(0).getStringValue() ;
if ( CalledStationId.startsWith("08"))
{
request.setOption( "service", 34 );
}
if (CalledStationId.length() == 6 )
{
CalledStationId = "78672" + CalledStationId ;
// request.setStringAttribute( RadiusStandartAttributes.Called_Station_Id, CalledStationId ) ;
}
if (CalledStationId.length() < 6 )
{
CalledStationId = "000" + CalledStationId ;
// request.setStringAttribute( RadiusStandartAttributes.Called_Station_Id, CalledStationId ) ;
}
else if( CalledStationId.length() == 7 )
{
CalledStationId = "7495" + CalledStationId ;
}
else if ( CalledStationId.startsWith("810") )
{
CalledStationId = CalledStationId.substring(3) ;
}
else if ( CalledStationId.startsWith("8") )
{
CalledStationId = "7" + CalledStationId.substring(1) ;
}
request.setStringAttribute(RadiusStandartAttributes.Called_Station_Id, CalledStationId);
// Проверяем наличие Asterisk-User-Field, и если такой существует,
// то на основании его значения устанавливаем h323-call-origin
CallType = request.getVendorAttributes(22736, 118);
if (CallType != null && CallType.get(0).getStringValue() .equals("answer")) {
request.setVendorStringAttribute(26, "answer");
request.setFlag(2); }
else {
request.setVendorStringAttribute(26, "originate");
request.setFlag(1); }
// Устанавливаем h323-call-type = VOIP
request.setVendorStringAttribute(27, "VOIP");
// Устанавливаем Acct-Session-Time = Asterisk-Bill-Sec
request.setIntAttribute(RadiusStandartAttributes.Acct_Session_Time, request.getVendorAttributes( 22736, 114 ).get(0).getIntValue());
// Устанавливаем h323-setup-time = Asterisk-Start-Time
request.setVendorStringAttribute(25, request.getVendorAttributes( 22736, 110 ).get(0).getStringValue());
// Устанавливаем h323-connect-time = Asterisk-Answer-Time
request.setVendorStringAttribute(28, request.getVendorAttributes( 22736, 111 ).get(0).getStringValue());
// Устанавливаем h323-disconnect-time = Asterisk-End-Time
request.setVendorStringAttribute(29, request.getVendorAttributes( 22736, 112 ).get(0).getStringValue());
// Устанавливаем h323-disconnect-cause на основании Asterisk-Disposition
AsteriskDisposition = request.getVendorAttributes( 22736, 115 ).get(0).getStringValue();
if (AsteriskDisposition .equals("ANSWERED"))
request.setVendorStringAttribute(30, "0");
else if (AsteriskDisposition .equals("NO ANSWER"))
request.setVendorStringAttribute(30, "5");
else if (AsteriskDisposition .equals("BUSY"))
request.setVendorStringAttribute(30, "17");
else
request.setVendorStringAttribute(30, "22");
// Устанавливаем h323-conf-id = Acct-Session-Id
request.setVendorStringAttribute(24, request.getStringAttribute(RadiusStandartAttributes.Acct_Session_Id));
} // Конец if (Acct_Status_Type == 2)
остальное для астериска код. и небольшие преобразования Called-Station-ID, они работают, а фрагмент со сменой кода сервиса, незнаю.
Спасибо!