BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 31 янв 2012, 15:01 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 08 мар 2007, 20:44
Сообщения: 1570
Откуда: Челябинск
Карма: 18
Имеется следующий скрипт
Код:
import java.util.*;
import java.lang.*;
import java.text.*;
import java.util.regex.*;
import java.util.regex.*;
import bitel.billing.server.script.bean.*;
import bitel.billing.server.util.telnet.*;
import bitel.billing.server.phone.bean.*;
import bitel.billing.server.contract.bean.*;

import com.stalker.CGPro.*;
String ats_addr="10.9.0.18";
int ats_port=106;
String ats_login="ххх";
String ats_password="yyy";
CGProCLI cli;

Hashtable num_acc_table= new Hashtable();

public class NumNotFoundEx extends Exception{
   NumNotFoundEx(String message){
   super(message);
   }
}

public void setAccount(String phone,boolean state){
        cli=new CGProCLI(ats_addr,ats_port,ats_login,ats_password);
        String account=FindAccount(phone);
        String[ ] parts=account.split("@");
        String domain=parts[parts.length-1];

        //Create settings hashtable
        SimpleDateFormat formatter = new SimpleDateFormat("[dd/MM/yyyy HH:mm]");
        String date = formatter.format(new Date());
        Hashtable settings = new Hashtable(1);
        if (state)
           settings.put("Status","OPEN "+date + " by billing");
        else
          settings.put("Status","CLOSED "+date+ " by billing");

        //find groups
        String group = "group."+account;
        try {
           Hashtable GroupTable = cli.getGroup(group);
           Vector members=(Vector)GroupTable.get("Members");
           for(Enumeration e = members.elements(); e.hasMoreElements();) {
              String key=(String)e.nextElement();
              cli.updateAccountSettings(key+"@"+domain, settings);
              print("group: "+key+"@"+domain + settings);
           }
           if (state) {
              String account_wo_domain = account.replaceAll("@.*","");
              cli.sendCommand("updateAccountSignalRule "+account+" DELETE _CLOSED");
              print("updateAccountSignalRule "+account+" DELETE _CLOSED");
           }else {
              cli.sendCommand("updateAccountSignalRule "+account+" (100010,\"_CLOSED\",(),((\"Redirect to\",\"#block_play\")))");
              print("updateAccountSignalRule "+account+" (100010,\"_CLOSED\",(),((\"Redirect to\",\"#block_play\")))");
           }
         }catch(CGProException e) {
           cli.updateAccountSettings(account, settings);
           print(account + settings);
           if (state) {
              cli.sendCommand("updateAccountSignalRule "+account+" DELETE _CLOSED");
              print("updateAccountSignalRule "+account+" DELETE _CLOSED");
           } else {
              cli.sendCommand("updateAccountSignalRule "+account+" (100010,\"_CLOSED\",(),((\"Redirect to\",\"#block_play\")))");
              print("updateAccountSignalRule "+account+" (100010,\"_CLOSED\",(),((\"Redirect to\",\"#block_play\")))");

           }
        }

        cli.logout();
}

public FindAllAccount(){
   cli=new CGProCLI(ats_addr,ats_port,ats_login,ats_password);
   String target_accout= "null";
   String tel="";
   Vector domains=cli.listDomains();
   for(Iterator e = domains.iterator(); e.hasNext();) {
        String domain=(String)e.next();
        Hashtable accounts=cli.listAccounts(domain);
        Enumeration k = accounts.keys();
        while (k.hasMoreElements()) {
           String key = (String) k.nextElement();
           Vector telnums =cli.getAccountTelnums(key + "@" + domain);
           for(Iterator t = telnums.iterator(); t.hasNext();) {
               tel=(String)t.next();
               target_accout = key + "@" + domain;
               num_acc_table.put(tel,key + "@" + domain);
            }
        }
    }
   cli.logout();
}

public String FindAccount(String phonenumber){
   String target_accout= "null";
   Enumeration k = num_acc_table.keys();
   while (k.hasMoreElements()) {
      String tel=(String) k.nextElement();
      Pattern myPattern = Pattern.compile(phonenumber);
      Matcher myMatcher = myPattern.matcher(tel);
      if (myMatcher.find()) {
          target_accout = num_acc_table.get(tel);
          return target_accout;
      }
   }
    throw(new NumNotFoundEx("Phone numer not found: "+phonenumber));
}

public void onEvent(event,setup,con,conSlave){
 try {
   int cid=event.getContractID();
   int status=event.getStatus().getStatus();
   FindAllAccount();
   ClientItemManager clim = new ClientItemManager(con,14);
   List points = clim.getItemList(cid);
   for(Iterator it=points.iterator(); it.hasNext();){
     ClientItem point=it.next();
     List numbers=point.getClientNumbers();
     Calendar currentDate=Calendar.getInstance();
     Calendar beforeDate=point.getDate1();
     Calendar afterDate=point.getDate2();
     if (((beforeDate == null) || (currentDate.compareTo(beforeDate)>=0)) &&
         ((afterDate == null) || (currentDate.compareTo(afterDate)<=0))){
         num_it=numbers.iterator();
         while(num_it.hasNext()){
            try{
               if(status == 0)
                  setAccount(num_it.next(),true);
               else
                  setAccount(num_it.next(),false);

            }catch(NumNotFoundEx x){
               if(cli!=null)
                  cli.logout();
               error(x.getMessage());
            }
         }
     }
   }
 }catch(Exception x) {
    if(cli!=null)
       cli.logout();
    error(x.getMessage());
 }

   return;
}

Он прекрастно работал на 5.0, а вот после обновления на 5.1 работаь перестал, с вот таким выхлопом:
Код:
Contract ХХХ
GENERATE_TIME: 31.01.12 14:33:19
EXECUTION_STOP_TIME: 31.01.12 14:33:54
PROCESS_TIME: 35891

OUT:
222хххх@domain.ru{Status=CLOSED [31/01/2012 14:33] by billing}
updateAccountSignalRule 222xxxx@domain.ru (100010,"_CLOSED",(),(("Redirect to","#block_play")))


WARNINGS:Function [id:14; title:Communigate]: using deprecated method [public int bitel.billing.server.script.bean.event.Event.getContractID()]
Подскажите плиз что не так а то я в яве не бум бум...

_________________
Интернет и телефония оптом со склада, или в розницу


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 янв 2012, 20:43 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 08 мар 2007, 20:44
Сообщения: 1570
Откуда: Челябинск
Карма: 18
Алчег

_________________
Интернет и телефония оптом со склада, или в розницу


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 янв 2012, 20:50 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Код:
int cid=event.getContractId();

Но от этого вряд ли что то поменяется О.О

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 фев 2012, 22:51 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 08 мар 2007, 20:44
Сообщения: 1570
Откуда: Челябинск
Карма: 18
Такая строчка есть в строке номер 114, не?

_________________
Интернет и телефония оптом со склада, или в розницу


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 00:16 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
у вас выдается warn на устаревший метод получения ContractID.
Все потому что он пишется как ContractId
буква D маленькая.
Но это всего лишь warn ни на что не влияющий особо :)

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 00:56 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 08 мар 2007, 20:44
Сообщения: 1570
Откуда: Челябинск
Карма: 18
Может он конечно не на что и не влияет, однако скрипт после обновления с 5.0 на 5.1 работать перестал.....

_________________
Интернет и телефония оптом со склада, или в розницу


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 06:46 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
http://ru.wikipedia.org/wiki/%D0%94%D0% ... 0%B8%D1%8F


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

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


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

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


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

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