Уведомления монтажников о новых активных задачах путем отправки SMS XML запросом
Материал из BiTel WiKi
Вешается на событие "Плагин CRM => Изменение/добавление задачи", если статус задачи активен после нажатия на "OK" отправляется XML запрос POST методом, с информацией о задаче, на отправку SMS сообщения. Тестировалось с сервисом http://www.mobilmoney.ru
import java.net.*; import java.io.*; import java.sql.*; import java.util.*; import java.text.SimpleDateFormat; import bitel.billing.server.contract.bean.*; import ru.bitel.bgbilling.plugins.crm.*; import ru.bitel.bgbilling.plugins.crm.common.model.*; cid = event.getContractId(); task = event.getTask(); //Задача exec = task.getExecutors(); //Монтажник, ТОшник String phone = ""; String fioexec = ""; //Выводим адрес с реплейсом int PARAM_ID = 13; ContractParameterManager bgParamMan = new ContractParameterManager( con ); paramVal = bgParamMan.getAddressParam( cid, PARAM_ID ); adress = paramVal.getAddress().replace( ',','.' ) ; adr = adress.replace ("Город1."," "); adr = adr.replace ("Поселок."," "); adr = adr.replace ("Город2."," "); adr = adr.replace ("Восточный."," "); adr = adr.replace ("Западный."," "); adr = adr.replace (" ",""); //Выдергиваем название "Тип проблемы" public String getTitleTaskType(RegisterTask task) { query = "SELECT * FROM register_task_type where id = " + String.valueOf(task.getTypeID()); rtt = con.prepareStatement(query); ResultSet re = rtt.executeQuery(); while (re.next()) { return re.getString(2); } return "Unknow task"; } //Преобразовываем дату в нормальный вид public String convertDateToString(Object date) { if( date == null ) return ""; SimpleDateFormat sdfDate = new SimpleDateFormat("dd.MM.yyyy HH:mm"); return sdfDate.format(date); } //Выполнить если статус задачи активен if (task.getStatus() == 0) { for (i=0; i<exec.size(); i++) { if (exec.get(i)==1) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} //else if (exec.get(i)==2) {phone=""; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==3) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==4) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} //else if (exec.get(i)==6) phone=""; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==7) {phone=""; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==8) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==9) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==10) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==11) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} //else if (exec.get(i)==12) {phone=""; fioexec="Иванов Иван Иванович";} //else if (exec.get(i)==16) {phone=""; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==17) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==18) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==19) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} //else if (exec.get(i)==20) {phone=""; fioexec="Иванов Иван Иванович";} //??? else if (exec.get(i)==21) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} //else if (exec.get(i)==22) {phone=""; fioexec="Иванов Иван Иванович";} //??? //else if (exec.get(i)==23) {phone=""; fioexec="Иванов Иван Иванович";} //??? //else if (exec.get(i)==24) {phone=""; fioexec="Иванов Иван Иванович";} //??? //else if (exec.get(i)==25) {phone=""; fioexec="Иванов Иван Иванович";} //??? else if (exec.get(i)==26) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} //else if (exec.get(i)==27) {phone=""; fioexec="Иванов Иван Иванович";} //??? else if (exec.get(i)==28) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} else if (exec.get(i)==29) {phone="+79619999999"; fioexec="Иванов Иван Иванович";} String url = "http://gate.mobilmoney.ru"; String charset = "windows-1251"; String xmldata = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>" + "<request method=\"SendSMS\">" + "<login>login</login>" + "<pwd>pass</pwd>" + "<originator num_message=\"0\">ZavodRTA</originator>" + "<phone_to num_message=\"0\">"+phone+"</phone_to>" + "<message num_message=\"0\">" + adr.trim() + " "+ " (" + getTitleTaskType(task) + " " + convertDateToString(task.getTargetDate()) + ") " + "\"" + task.getComment().trim() + "\"" + "</message>" + "<sync num_message=\"0\">0</sync>" + "</request>"; URLConnection urlConnection = new URL(url).openConnection(); urlConnection.setUseCaches(false); urlConnection.setDoOutput(true); // Triggers POST. urlConnection.setRequestProperty("accept-charset", charset); urlConnection.setRequestProperty("content-type", "application/x-www-form-urlencoded"); OutputStreamWriter writer = null; try { writer = new OutputStreamWriter(urlConnection.getOutputStream(), charset); writer.write(xmldata); // XML } finally { if (writer != null) try { writer.close(); } catch (IOException logOrIgnore) {} } InputStream result = urlConnection.getInputStream(); //Logs print ("SMS отправленна: " + fioexec + " на номер:" + phone); print ("Текст сообщения: " + adr.trim() + " "+ " (" + getTitleTaskType(task) + " " + convertDateToString(task.getTargetDate()) + ") " + "\"" + task.getComment().trim() + "\""); print (""); } } //print ("Адрес:" + adr.trim() + " Тип проблемы:" + getTitleTaskType(task) + " Комент:" + task.getComment() + " Время:" + convertDateToString(task.getTargetDate()) + " Статус:" + task.getStatus() );