BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 мар 2024, 04:27

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: Разные сервисы(услуги) на одном NAS
СообщениеДобавлено: 13 июн 2015, 02:41 
Не в сети

Зарегистрирован: 19 дек 2008, 17:46
Сообщения: 749
Карма: 10
Создали два типа услуг (Мобильная связь, справочная) id 10 и 11 в nas прописали service=10,11.
В тарифном плане выбрали услугу и после нее направления, далее выбрали вторую услугу и также направления
При звонке идет ошибка Не найден код услуги.
Как сделать возможность разбития направлений по услугам, чтобы в наработке были разные услуги.
сейчас какое значение стоит в nas далее по такому и значению все проверяется.
А как в nas разрешить сразу несколько услуг?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 июн 2015, 18:20 
Не в сети

Зарегистрирован: 19 дек 2008, 17:46
Сообщения: 749
Карма: 10
Так что это ветка не поддерживается???


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 июн 2015, 19:06 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
покажите тариф


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2015, 01:29 
Не в сети

Зарегистрирован: 19 дек 2008, 17:46
Сообщения: 749
Карма: 10
Нашел ответ, оказывается модуль древний и все скриптами делается.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 мар 2016, 00:51 
Не в сети

Зарегистрирован: 18 фев 2016, 13:36
Сообщения: 132
Карма: 0
а можете подсказать как решили проблему, если перечислить через запятую коды услуг то ничего не получается :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 мар 2016, 13:38 
Не в сети
Клиент

Зарегистрирован: 27 апр 2010, 13:26
Сообщения: 108
Откуда: Kirov
Карма: 0
Мы используем предобработку радиус и request.setOption( "service", КОДУСЛУГИ).
А вообще радиус, по идее, должен просто в тарифе найти совпадения по номеру во всех доступных услугах, т.е.:
- в насе service=1,2
- в договоре разрешены услуги с кодами 1 и 2
- в тарифе добавлены обе услуги (с кодами 1 и 2) с непересекающимися префиксами/частями.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 мар 2016, 19:08 
Не в сети

Зарегистрирован: 18 фев 2016, 13:36
Сообщения: 132
Карма: 0
дело в том что в наработке они все в одной куче (по одной услуге)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 мар 2016, 19:34 
Не в сети

Зарегистрирован: 18 фев 2016, 13:36
Сообщения: 132
Карма: 0
если поставить request.setOption( "service", 19 ); в предоработке то услуга-то все равно будет одна... помогите пожалуйста. нужна разная наработка по разным услугам


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 мар 2016, 19:48 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
julik писал(а):
если поставить request.setOption( "service", 19 ); в предоработке то услуга-то все равно будет одна... помогите пожалуйста. нужна разная наработка по разным услугам


А после того, как вы меняете скрипт, вы радиус-сервер перезагружаете?

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 мар 2016, 12:24 
Не в сети

Зарегистрирован: 18 фев 2016, 13:36
Сообщения: 132
Карма: 0
Проблема следующая, есть по модулю VoiceIP 4 услуги:
Международные звонки
Междугородние
Местные
Внутризоновые
И наработку нужно разделить именно таким же образом... в тарифе услуги по направлениям прописаны по зонам аналогично как это делается если бы модуль был PHone
Если в скрипте предоработки или просто в конфигурации наса назначить только один код услуги то все звонки будут считаться в куче одной суммой.
И если даже в скрипте разделить звонки по кодам и назначать в том или ином случае определенный код request.setOption( "service", 19 ), то если
с международкой это будут звонки на 810, местные это коды 8495,8499,8498 то с разделением межгорода и внутризоны большая проблема, внутризоновых кодов куча(более 1000) как можно решить такую проблему?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 мар 2016, 12:50 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Можно занести коды по разным картам цен/зон, а затем в скрипте пробегать по этим двум картам. В какой найдется совпадение, такую услугу и выставляем. Карты цен вроде хранятся в кеше в памяти, поэтому пробежать по ней будет очень быстро даже при обсчете каждого звонка.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 мар 2016, 18:37 
Не в сети

Зарегистрирован: 18 фев 2016, 13:36
Сообщения: 132
Карма: 0
Т.е. если я создам 4 карты зон
- Карта зон МГ
- Карта зон МН
- Карта зон ВЗ
- Карта зон Местн связи
то можно будет как-то в скрипте назначать какую услугу присваивать звонку, а можно подробнее код скрипта? пожалуйста :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 мар 2016, 00:06 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Я могу лишь дать код для обхода деревьев, а там уж сами... Завтра, когда буду на работе, постараюсь не забыть

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 мар 2016, 12:33 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Код не рабочий, просто идея

Код:
import ru.bitel.bgbilling.kernel.base.phone.common.bean.CostMapItem;
import ru.bitel.bgbilling.kernel.base.phone.server.CostMapCache;

public class Script
{
   public static void main( String[] args )
   {
      int mgId = 1;//код карты цен для МГ
      CostMapCache cache = CostMapCache.getInstance( con, VOICEIP_MID );//кэш карт цен можно вынести в общие переменные скрипта обработки
      CostMapItem costMap = cache.getTree( mgId );
      boolean isContain = iterateCostMap( costMap, request.getStringAttribute( -1, RadiusDictionary.Calling_Station_Id, null), );
      if(isContain)
      {
         //данная карта цен содержит нужный нам префикс, ставим нужную услугу
         request.setOption( "service", 19 );
      }
      //аналогично для других карт цен
   }
   
      boolean iterateCostMap( CostMapItem costMap, String numA )
      {
         boolean result = false;
         //проверяем, содержит ли строка с номером подстроку с префиксом
         String code = costMap.getCode();
         if( Utils.notBlankString( code ) )
         {
            if ( numA.contains( code ))
            {
               //префикс в карте цен найден
               result = true;
            }
         }
         //ищем в глубь дерева
         List childs = costMap.getChildren();
         if ( childs != null && childs.size() > 0 )
         {
            for ( CostMapItem childItem : childs )
            {
               if ( numA.startsWith( code ) )
               {
                  //обходим рекурсивно детей
                  result = iterateCostMap( childItem, numA );
               }
            }
         }
         return result;
      }
}


_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 мар 2016, 13:56 
Не в сети

Зарегистрирован: 18 фев 2016, 13:36
Сообщения: 132
Карма: 0
А если с картами зон? то тоже должно получаться?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 мар 2016, 14:07 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
С картами зон тоже можно подобное сделать в принципе. Обход дерева похож. Можно вообще напрямую делать sql-запросы в БД, если не очень много звонков.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 апр 2016, 13:27 
Не в сети

Зарегистрирован: 18 фев 2016, 13:36
Сообщения: 132
Карма: 0
Подскажите пожалуйста как подцепиться к базе данных, я так понимаю что мы обращаемся к voiceip_cost_map_item и по id= нужному ищем код
Напишите пожалуйста описание connection con.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 апр 2016, 13:43 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
julik писал(а):
Напишите пожалуйста описание connection con.

Так вот же описание Connection, или вы о чем?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.175s | 54 Queries | GZIP : On ]