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 |
я рисовал пример на |
Автор: | northbear [ 25 май 2011, 14:34 ] |
Заголовок сообщения: | Re: Приводим к Е.164 |
Мы пришли к тому, что правильней, чтобы железо в биллинг выдавало логи уже с нумерацией в формате E.164. Опыт показывает, что почти все нормальное железо может быть настроено соответствующим образом. У нас биллинг тарифицирует услуги оказываемые в нескольких населенных пунктах. В некоторых даже зоновые префиксы разные. В таких случаях реализовать корректную обработку логов средставми биллинга превращается в ту еще проблему... |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |