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

Вопросы по скриптингу
http://forum.bitel.ru/viewtopic.php?f=22&t=1043
Страница 1 из 1

Автор:  snark [ 23 апр 2008, 16:12 ]
Заголовок сообщения:  Вопросы по скриптингу

Уважаемый 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 логина из шаблона.


Спасибо.

Автор:  Victor [ 25 апр 2008, 07:34 ]
Заголовок сообщения: 

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 ]
Заголовок сообщения: 

1. В мониторе еще циферки пишутся рядом с кодом ошибки.
P.S. Допишите в WiKi.

Автор:  snark [ 25 апр 2008, 11:23 ]
Заголовок сообщения: 

Victor писал(а):
1. Циферки сам посчитай :)

...

2.

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

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

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

Автор:  snark [ 25 апр 2008, 11:24 ]
Заголовок сообщения: 

Администратор писал(а):
1. В мониторе еще циферки пишутся рядом с кодом ошибки.
я собственно оттуда их и брал :) ну еще из скрипта с вики ...

Автор:  Администратор [ 25 апр 2008, 11:35 ]
Заголовок сообщения: 

Ситуация, когда за докой нужно декомпилировать файлы ненормальна, конечно. Будем повышать уровень документированности API. Если не нашли какую информацию - спрашивайте, будем дописывать.

Автор:  snark [ 25 апр 2008, 12:13 ]
Заголовок сообщения: 

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

Автор:  Victor [ 25 апр 2008, 13:06 ]
Заголовок сообщения: 

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

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

Автор:  snark [ 25 апр 2008, 13:57 ]
Заголовок сообщения: 

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

Автор:  snark [ 25 апр 2008, 19:28 ]
Заголовок сообщения: 

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 ]
Заголовок сообщения: 

Код:
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

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