BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 20 июн 2025, 01:57

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Вопросы по скриптингу
СообщениеДобавлено: 23 апр 2008, 16:12 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Уважаемый ALL, и разработчики ...
  1. Скажите, пожалуйста, номера ошибок получаемых через event.getErrorCode().
    Как я понял:
    Код:
     0 - нет ошибки
     2 - Login password error
     3 - Tariff plans not found
     4 - Contract balance zero
    11 - Price not found
    14 - Card and login not found
    21 - Too many sessions for login

    Можно узнать список остальных?
  2. Скажите, пожалуйста, как можно спросить у биллинга и реализовать:
    Код:
    if (режим работы "Дебет")
    {
        все что касается дебета;
    }

    Просто сейчас уже есть скрипт представляющий собой модернизацию скрипта из вики:
    Код:
    import bitel.billing.server.radius.*;
    import bitel.billing.server.script.event.*;
    import java.util.*;

    error_code = event.getErrorCode();

    if (error_code == 2)
    {
        print("Login password error!");
    }

    if (error_code == 4)
    {
        print("Contract balance zero!");

        response = event.getResponse();

        response.setPacketType(RadiusPacket.AUTHENTICATION_ACCEPT);

        // Service-Type = 2
        rad_attrib_1 = new RadiusAttribute(6);
        rad_attrib_1.setIntValue(2);

        // Framed-Protocol = 1
        rad_attrib_2 = new RadiusAttribute(7);
        rad_attrib_2.setIntValue(1);

        // Session-Timeout = 300
        rad_attrib_3 = new RadiusAttribute(27);
        rad_attrib_3.setIntValue(300);

        // Filter-Id
        rad_attrib_4 = new RadiusAttribute(11);
        rad_attrib_4.setStringValue("190.in");

        rad_attrib_5 = new RadiusAttribute(11);
        rad_attrib_5.setStringValue("191.out");

        // Cisco-AVPair's
        rad_vendor_attrib_1 = new RadiusVendorAttribute(9, 1);
        rad_vendor_attrib_1.setStringValue("lcp:interface-config=ip unnumbered loopback 2");

        rad_vendor_attrib_2 = new RadiusVendorAttribute(9, 1);
        rad_vendor_attrib_2.setStringValue("lcp:interface-config=no ip flow ingress");

        rad_vendor_attrib_3 = new RadiusVendorAttribute(9, 1);
        rad_vendor_attrib_3.setStringValue("lcp:interface-config=no ip flow egress");

        rad_vendor_attrib_4 = new RadiusVendorAttribute(9, 1);
        rad_vendor_attrib_4.setStringValue("ip:addr-pool=stat2");

        rad_vendor_attrib_5 = new RadiusVendorAttribute(9, 1);
        rad_vendor_attrib_5.setStringValue("ip:dns-servers=172.16.2.230");

        rad_vendor_attrib_6 = new RadiusVendorAttribute(9, 1);
        rad_vendor_attrib_6.setStringValue("lcp:interface-config=ip policy route-map redirect");

        response.addAttribute(rad_attrib_1);
        response.addAttribute(rad_attrib_2);
        response.addAttribute(rad_attrib_3);
        response.addAttribute(rad_attrib_4);
        response.addAttribute(rad_attrib_5);
        response.addVendorAttribute(rad_vendor_attrib_1);
        response.addVendorAttribute(rad_vendor_attrib_2);
        response.addVendorAttribute(rad_vendor_attrib_3);
        response.addVendorAttribute(rad_vendor_attrib_4);
        response.addVendorAttribute(rad_vendor_attrib_5);
        response.addVendorAttribute(rad_vendor_attrib_6);
    }

    if (error_code == 21)
    {
        print("Too many sessions for login!");
    }

    Хотелось бы чтобы он гнал на статистику только дебетовые договоры.
  3. Покажите, пожалуйста, код скрипта вбивающего алиас == номеру договора при создании dialup логина из шаблона.


Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 апр 2008, 07:34 
Не в сети
Клиент

Зарегистрирован: 12 фев 2007, 18:49
Сообщения: 335
Карма: 15
1. Циферки сам посчитай :)
Код:
 private static final String errorMessages[] = {
        "", "Error pin code", "Login password error", "Tariff plans not found", "Contract balance zero",
        "Too many sessions", "NAS not found", "Not found service id", "Card expired", "Card lock",
        "Card activate for balance", "Price not found", "Set connection error",
        "Call type not recognized", "Card and login not found", "Not money for this call",
        "Call not tariff", "Can't activate card at this NAS", "Cant' use this REALM", "Service deny",
        "", "Too many sessions for login", "Login can't come in on this phone",
        "Login can't come in at this time", "Service limit is over for login", "Money limit is over for login",
        "Login access 'DENY'", "Login can't come in from this phone", "", "", "Collector error",
        "Set calculate period error", "Prefix deny", "Contract not open"
    };


2.
Код:
dogovor = event.getContract();
if (dogovor.mode = 1)
{
    bla-bla
}


3. лень рыться.

ЗЫ: Наймите нормального программиста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 апр 2008, 11:09 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
1. В мониторе еще циферки пишутся рядом с кодом ошибки.
P.S. Допишите в WiKi.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 апр 2008, 11:23 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Victor писал(а):
1. Циферки сам посчитай :)

...

2.

не устаю говорить Вам СПАСИБО!
Victor писал(а):
3. лень рыться.

понимаю ...
Victor писал(а):
Наймите нормального программиста.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 апр 2008, 11:24 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Администратор писал(а):
1. В мониторе еще циферки пишутся рядом с кодом ошибки.
я собственно оттуда их и брал :) ну еще из скрипта с вики ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 апр 2008, 11:35 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Ситуация, когда за докой нужно декомпилировать файлы ненормальна, конечно. Будем повышать уровень документированности API. Если не нашли какую информацию - спрашивайте, будем дописывать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 апр 2008, 12:13 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Администратор писал(а):
Будем повышать уровень документированности API.
Бог мой! все мы люди, у нас у всех только две руки и если они не дошли до доки вчера, значит дойдут завтра ... я понимаю что писать документацию к стремительно развивающемуся проекту - это то еще удовольствие ...
Администратор писал(а):
Если не нашли какую информацию - спрашивайте, будем дописывать.
благодаря ув. Victor я собственно получил ответы практически на все вопросы, за что ему вечный респект и уважуха :) вот только узнать бы как вбить наименование договора полученное через, насколько я понял, getTitle() в качестве алиаса для логина создающегося из шаблона для этого договора и собственно большего пока и желать не надо ... кстати, может сделаете это как встроенную фичу? для случая 1 договор == 1 алиас это очень удобно, т.к. человек будет помнить что у него договор № xyz001 и будет использовать номер договора как свой dialup логин (в терминах BGB - алиас) и наоборот, он будет помнить свой логин т.к. он им чаще пользуется, ну а т.к. его логин (алиас) == № догова то нет никаких проблем с забывчивостью ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 апр 2008, 13:06 
Не в сети
Клиент

Зарегистрирован: 12 фев 2007, 18:49
Сообщения: 335
Карма: 15
snark писал(а):
нанимать ява-программера для написания пары скриптов? ... если бы API был чуть лучше документирован в нем любой бы разобрался, но например этот скрипт использует вещи пока не имеющие отражение в документации :( например я даже не знаю откуда у Вас массив ошибок, но предполагаю что это результат декомпиляции ... если последовать Вашему совету о найме то давайте я разовью мысль дальше - мы нанимаем програмерра, он декомпилирует код, разбирается в нем, пишет пару-тройку скриптов и попутно пишет генератор лицензий ... Вы всерьез полагаете что подобный расклад устроит разработчиков (к которым лично я отношусь с большим уважением)?

Да не нужен вам конкретно Ява-программер. Вам нужен нормальный программист, который способен разобраться с любым языком. И поверьте, он будет далеко не лишним во многих других вещах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 апр 2008, 13:57 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Victor писал(а):
Вам нужен нормальный программист, который способен разобраться с любым языком. И поверьте, он будет далеко не лишним во многих других вещах.
поверьте, если бы в нем была нужда - он бы у нас был, а так ... лично я занимаюсь настройкой оборудования и сервисов его обеспечивающих, если в этом есть нужда - пишу на шеле/перле/пхп и т.д. (сейчас вот яву изучаю чтоб BGB задышал полной грудью), правлю сорцы на том или ином языке под конкретную задачу, в общем веду обычный сисадминский образ жизни ... честно, я просто не пойму зачем нанимать человека которому в нашей организации просто ничего будет делать, т.к. по большому счету писать у нас нечего, а нанять программера и потом рассказывать как работают сети/протоколы/сервисы по отдельности и все вместе и т.д. и т.п. для того чтобы он мог не только писать (ооочень редко) но и делать массу иной работы (значительно чаще) нет никакого желания, т.к. уже было дело ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 апр 2008, 19:28 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Victor писал(а):
Код:
dogovor = event.getContract();
if (dogovor.mode = 1)
{
    bla-bla
}


собсно:
Код:
Field access: bsh.ReflectError: No such field: mode

еще есть варианты или можно только через что то в духе:
Код:
import bitel.billing.server.contract.bean.*;

contract = new Contract();

mode = contract.getBalanceMode();

вытащить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 апр 2008, 12:58 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Код:
contract = cm.getContractByID( event.getContractID() );
if( contract == null )
{
 error( "Contract with ID:" + event.getContractID() + " not found!" );
 return;
}

http://bgbilling.ru/v4.4/doc/ch02s04.html


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

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


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

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


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

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