Уведомления монтажников о новых активных задачах путем отправки 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() );
Личные инструменты