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

Приводим к Е.164
http://forum.bitel.ru/viewtopic.php?f=19&t=5302
Страница 1 из 1

Автор:  lan31 [ 24 мар 2011, 12:23 ]
Заголовок сообщения:  Приводим к Е.164

Возможно ли написать скрипт предобработки который будет приводить номера телефонов к формату E.164 в логах от radius`а (модуль voip)?

Автор:  max [ 24 мар 2011, 14:05 ]
Заголовок сообщения:  Re: Приводим к Е.164

вы хоть пример лога дайте ваш

Автор:  lan31 [ 25 мар 2011, 13:24 ]
Заголовок сообщения:  Re: Приводим к Е.164

max писал(а):
вы хоть пример лога дайте ваш

Номера телефонов начинаются не на 7-ку а на 8-ку, или содержат в себе не 11-ть цифр а 6-ть.
Для нормальной работы с географическими кодами в биллинге:
Необходимо заменять первую цифру 8 на 7.
Если номер 6-ти значный добавлять префикс, код города. (+5-ть цифр).

Calling-Station-Id=8xxxxxxxxxx
Called-Station-Id=8yyyyyyyyyy

Calling-Station-Id=8zzzzzzzzzz
Called-Station-Id=nnnnnn

Автор:  Cromeshnic [ 25 мар 2011, 13:35 ]
Заголовок сообщения:  Re: Приводим к Е.164

Примерно так:

Код:
   String a = request.getStringAttribute( -1, RadiusStandartAttributes.Calling_Station_Id, "" );
   String b = request.getStringAttribute( -1, RadiusStandartAttributes.Called_Station_Id, "" );
   if (что-то-там) {
      request.setStringAttribute(-1, RadiusStandartAttributes.Calling_Station_Id, "A-номер в e.164");
      request.setStringAttribute(-1, RadiusStandartAttributes.Called_Station_Id, "B-номер в e.164");
   }


Дальше справитесь?

Автор:  lan31 [ 29 мар 2011, 08:36 ]
Заголовок сообщения:  Re: Приводим к Е.164

Cromeshnic писал(а):
Примерно так:
Дальше справитесь?

К сожалению нет, с джавой вообще не знаком.

Автор:  snark [ 29 мар 2011, 17:45 ]
Заголовок сообщения:  Re: Приводим к Е.164

покажите что было (лог) и что хотите получить - тогда Вам глядишь и нарисуют скрипт, а наугад - здесь нет экстрасенсов только самостоятельно ...

Автор:  lan31 [ 04 апр 2011, 13:08 ]
Заголовок сообщения:  Re: Приводим к Е.164

snark писал(а):
покажите что было (лог) и что хотите получить - тогда Вам глядишь и нарисуют скрипт, а наугад - здесь нет экстрасенсов только самостоятельно ...

Какой лог хотите увидеть?

Хочу получить следующее:
Номера телефонов начинаются не на 7-ку а на 8-ку, или содержат в себе не 11-ть цифр а 6-ть.
Для нормальной работы с географическими кодами в биллинге:
Необходимо заменять первую цифру 8 на 7.
Если номер 6-ти значный добавлять префикс, код города. (+5-ть цифр).

Calling-Station-Id=8xxxxxxxxxx
Called-Station-Id=8yyyyyyyyyy

Calling-Station-Id=8zzzzzzzzzz
Called-Station-Id=nnnnnn

Автор:  snark [ 04 апр 2011, 14:01 ]
Заголовок сообщения:  Re: Приводим к Е.164

lan31 писал(а):
Хочу получить следующее:
Номера телефонов начинаются не на 7-ку а на 8-ку, или содержат в себе не 11-ть цифр а 6-ть.
Для нормальной работы с географическими кодами в биллинге:
Необходимо заменять первую цифру 8 на 7.
Если номер 6-ти значный добавлять префикс, код города. (+5-ть цифр).

Calling-Station-Id=8xxxxxxxxxx
Called-Station-Id=8yyyyyyyyyy

Calling-Station-Id=8zzzzzzzzzz
Called-Station-Id=nnnnnn

дык уже подсказали же:
Cromeshnic писал(а):
Примерно так:
Код:
    String a = request.getStringAttribute( -1, RadiusStandartAttributes.Calling_Station_Id, "" );
    String b = request.getStringAttribute( -1, RadiusStandartAttributes.Called_Station_Id, "" );
    if (что-то-там) {
        request.setStringAttribute(-1, RadiusStandartAttributes.Calling_Station_Id, "A-номер в e.164");
        request.setStringAttribute(-1, RadiusStandartAttributes.Called_Station_Id, "B-номер в e.164");
    }


если номера телефонов начинаются не на 7-ку а на 8-ку, то пишем в скрипт предобработки
Код:
callingStationId = RadiusStandartAttributes.Calling_Station_Id;

// если Calling-Station-Id начинается с 8-ки
if (request.getStringAttribute(callingStationId).startsWith("8"))
{
    // дописываем к 7-ке номер после 8-ки, т.е. если номер был 8ххх - станет 7ххх
    value = "7".concat(callingStationId.substring(1));
    // заменяем Calling-Station-Id
    request.setStringAttribute(callingStationId, value);
}

дальше по аналогии ;)

тут есть все что необходимо для работы с String

Автор:  lan31 [ 07 апр 2011, 15:19 ]
Заголовок сообщения:  Re: Приводим к Е.164

Не работает.

04-07/17:02:47 ERROR [radiusListener-p-4-t-5] NasScript - Sourced file: inline evaluation of: ``callingStationId = RadiusStandartAttributes.Calling_Station_Id; // ???? Calling
. . . '' : Class or variable not found: RadiusStandartAttributes.Calling_Station_Id
Sourced file: inline evaluation of: ``callingStationId = RadiusStandartAttributes.Calling_Station_Id; // ???? Calling . . . '' : Class or variable not found: RadiusStandartAttr
ibutes.Calling_Station_Id : at Line: 1 : in file: inline evaluation of: ``callingStationId = RadiusStandartAttributes.Calling_Station_Id; // ???? Calling . . . '' : RadiusStand
artAttributes .Calling_Station_Id

Автор:  snark [ 07 апр 2011, 19:54 ]
Заголовок сообщения:  Re: Приводим к Е.164

Код:
import bitel.billing.server.radius.*;

в начале скрипта нету?

Автор:  lan31 [ 11 апр 2011, 11:36 ]
Заголовок сообщения:  Re: Приводим к Е.164

snark писал(а):
Код:
import bitel.billing.server.radius.*;

в начале скрипта нету?

Когда добавляю эту строчку, появляется новая ошибка:

04-11/13:34:40 ERROR [radiusListener-p-4-t-16] NasScript - Sourced file: inline evaluation of: ``import bitel.billing.server.radius.*; callingStationId = RadiusStandartAttribut . . . '' : Error in method invocation: Method substring( int ) not found in class'bsh.Primitive'
Sourced file: inline evaluation of: ``import bitel.billing.server.radius.*; callingStationId = RadiusStandartAttribut . . . '' : Error in method invocation: Method substring( int ) not found in class'bsh.Primitive' : at Line: 9 : in file: inline evaluation of: ``import bitel.billing.server.radius.*; callingStationId = RadiusStandartAttribut . . . '' : callingStationId .substring ( 1 )

Автор:  max [ 11 апр 2011, 16:51 ]
Заголовок сообщения:  Re: Приводим к Е.164

у вас ошибка в 9й строчке, дайте получившийся скрипт сюда

Автор:  lan31 [ 12 апр 2011, 07:12 ]
Заголовок сообщения:  Re: Приводим к Е.164

max писал(а):
у вас ошибка в 9й строчке, дайте получившийся скрипт сюда

import bitel.billing.server.radius.*;

callingStationId = RadiusStandartAttributes.Calling_Station_Id;

// если Calling-Station-Id начинается с 8-ки
if (request.getStringAttribute(callingStationId).startsWith("8"))
{
// дописываем к 7-ке номер после 8-ки, т.е. если номер был 8ххх - станет 7ххх
value = "7".concat(callingStationId.substring(1));
// заменяем Calling-Station-Id
request.setStringAttribute(callingStationId, value);
}

Автор:  stark [ 12 апр 2011, 18:15 ]
Заголовок сообщения:  Re: Приводим к Е.164

lan31 писал(а):
max писал(а):
у вас ошибка в 9й строчке, дайте получившийся скрипт сюда

import bitel.billing.server.radius.*;

callingStationId = RadiusStandartAttributes.Calling_Station_Id;

// если Calling-Station-Id начинается с 8-ки
if (request.getStringAttribute(callingStationId).startsWith("8"))
{
// дописываем к 7-ке номер после 8-ки, т.е. если номер был 8ххх - станет 7ххх
value = "7".concat(callingStationId.substring(1));
// заменяем Calling-Station-Id
request.setStringAttribute(callingStationId, value);
}


в 9-ой строчке надо поменять callingStationId на request.getStringAttribute(callingStationId)

Автор:  snark [ 12 апр 2011, 18:52 ]
Заголовок сообщения:  Re: Приводим к Е.164

я рисовал пример на коленке скорую руку, так что то что там есть ошибки - это запросто, т.к. всеравно любой скрипт на форуме/вики не отменяет чтение мануала по API, IMHO

Автор:  northbear [ 25 май 2011, 14:34 ]
Заголовок сообщения:  Re: Приводим к Е.164

Мы пришли к тому, что правильней, чтобы железо в биллинг выдавало логи уже с нумерацией в формате E.164. Опыт показывает, что почти все нормальное железо может быть настроено соответствующим образом.

У нас биллинг тарифицирует услуги оказываемые в нескольких населенных пунктах. В некоторых даже зоновые префиксы разные. В таких случаях реализовать корректную обработку логов средставми биллинга превращается в ту еще проблему...

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