forum.bitel.ru http://forum.bitel.ru/ |
|
Скрипт блокировки должников телефонии http://forum.bitel.ru/viewtopic.php?f=19&t=6390 |
Страница 1 из 1 |
Автор: | max [ 31 янв 2012, 15:01 ] |
Заголовок сообщения: | Скрипт блокировки должников телефонии |
Имеется следующий скрипт Код: 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()] |
Автор: | max [ 31 янв 2012, 20:43 ] |
Заголовок сообщения: | Re: Скрипт блокировки должников телефонии |
Алчег |
Автор: | Phricker [ 31 янв 2012, 20:50 ] |
Заголовок сообщения: | Re: Скрипт блокировки должников телефонии |
Код: int cid=event.getContractId(); Но от этого вряд ли что то поменяется О.О |
Автор: | max [ 02 фев 2012, 22:51 ] |
Заголовок сообщения: | Re: Скрипт блокировки должников телефонии |
Такая строчка есть в строке номер 114, не? |
Автор: | Phricker [ 03 фев 2012, 00:16 ] |
Заголовок сообщения: | Re: Скрипт блокировки должников телефонии |
у вас выдается warn на устаревший метод получения ContractID. Все потому что он пишется как ContractId буква D маленькая. Но это всего лишь warn ни на что не влияющий особо ![]() |
Автор: | max [ 03 фев 2012, 00:56 ] |
Заголовок сообщения: | Re: Скрипт блокировки должников телефонии |
Может он конечно не на что и не влияет, однако скрипт после обновления с 5.0 на 5.1 работать перестал..... |
Автор: | Cromeshnic [ 03 фев 2012, 06:46 ] |
Заголовок сообщения: | Re: Скрипт блокировки должников телефонии |
http://ru.wikipedia.org/wiki/%D0%94%D0% ... 0%B8%D1%8F |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |