forum.bitel.ru http://forum.bitel.ru/ |
|
Скрипт предобработки, нормализация номера. E.164 http://forum.bitel.ru/viewtopic.php?f=6&t=6148 |
Страница 1 из 1 |
Автор: | Xo4yxa [ 22 ноя 2011, 17:08 ] |
Заголовок сообщения: | Скрипт предобработки, нормализация номера. E.164 |
Здравствйте, коллеги. сделал я себе нормализацию номера, он даже работает. Но так-как я не программер хотел попросить посмотреть и быть может помочь оптимизировать. ![]() Код: import bitel.billing.server.radius.*;
import java.util.regex.*; callingStationId = RadiusStandartAttributes.Calling_Station_Id; calledStationId = RadiusStandartAttributes.Called_Station_Id; username = RadiusStandartAttributes.User_Name; if (callingStationId == null ) { String callingStationId = "78120000000"; }; //Матчим и заменяем DID 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)$","7812000000$1"); if (DID != request.getStringAttribute(calledStationId)) { request.setStringAttribute(calledStationId, DID); }; //Матчим и заменяем ANI 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); }; //Матчим и заменяем То по чему иногда авторизуем String User = request.getStringAttribute(username).replaceFirst("^8(\\d{10})$","7$1"); if (User != request.getStringAttribute(username)) { request.setStringAttribute(username, User); }; String User = request.getStringAttribute(username).replaceFirst("^(\\d{10})$","7$1"); if (User != request.getStringAttribute(username)) { request.setStringAttribute(username, User); }; String User = request.getStringAttribute(username).replaceFirst("^(\\d{3})$","78120000$1"); if (User != request.getStringAttribute(username)) { request.setStringAttribute(username, User); }; String User = request.getStringAttribute(username).replaceFirst("^(\\d{4})$","7812000$1"); if (User != request.getStringAttribute(username)) { request.setStringAttribute(username, User); }; |
Автор: | Amir [ 22 ноя 2011, 17:26 ] |
Заголовок сообщения: | Re: Скрипт предобработки, нормализация номера. E.164 |
Лучше один раз получить getStringAttribute( ) и один раз в конце установить setStringAttribute( ). И new String( "asd ) != "asd", нужно проверять методом equals - new String( "asd" ).equals( "asd" ) == true. |
Автор: | Xo4yxa [ 29 ноя 2011, 14:17 ] |
Заголовок сообщения: | Re: Скрипт предобработки, нормализация номера. E.164 |
Amir писал(а): Лучше один раз получить getStringAttribute( ) и один раз в конце установить setStringAttribute( ). И new String( "asd ) != "asd", нужно проверять методом equals - new String( "asd" ).equals( "asd" ) == true. Ну яж сказал что я ни разу не программер, и близко не стою. Если не сложно - покажите как это будет выглядить. И еще столкнулся с проблемой - не всегда есть переменная callingStationID - т.е. иногда она не приходит с потока, как проверять на ее отсутствие? и если что прировнять к какойнибудь другой? Я попробовал сделать так: Код: if (callingStationId == null ) { String callingStationId = "78120000000"; }; не работает, вопрос как это сделать правильно? |
Автор: | Amir [ 06 дек 2011, 19:46 ] |
Заголовок сообщения: | Re: Скрипт предобработки, нормализация номера. E.164 |
Примерно так: Код: import bitel.billing.server.radius.*;
import java.util.regex.*; String calledStationId = request.getStringAttribute( RadiusStandartAttributes.Called_Station_Id ); //Матчим и заменяем DID calledStationId = calledStationId.replaceFirst("^8(\\d{10})$","7$1"); calledStationId = calledStationId.replaceFirst("^(\\d{10})$","7$1"); // Если это входящий короткий - приводим его к требуемому формату calledStationId = calledStationId.replaceFirst("^777(\\d)$","7812000000$1"); String callingStationId = request.getStringAttribute( RadiusStandartAttributes.Calling_Station_Id ); if (callingStationId == null ) { callingStationId = "78120000000"; }; //Матчим и заменяем ANI callingStationId = callingStationId.replaceFirst("^8(\\d{10})$","7$1"); callingStationId = callingStationId.replaceFirst("^(\\d{10})$","7$1"); callingStationId = callingStationId.replaceFirst("^(\\d{3})$","78120000$1"); callingStationId = callingStationId.replaceFirst("^(\\d{4})$","7812000$1"); String username = request.getStringAttribute( RadiusStandartAttributes.User_Name ); //Матчим и заменяем То по чему иногда авторизуем username = username.replaceFirst("^8(\\d{10})$","7$1"); username = username.replaceFirst("^(\\d{10})$","7$1"); username = username.replaceFirst("^(\\d{3})$","78120000$1"); username = username.replaceFirst("^(\\d{4})$","7812000$1"); request.setStringAttribute( RadiusStandartAttributes.Called_Station_Id, calledStationId ); request.setStringAttribute( RadiusStandartAttributes.Calling_Station_Id, callingStationId ); request.setStringAttribute( RadiusStandartAttributes.User_Name, username ); |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |