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

Отправка SMS
http://forum.bitel.ru/viewtopic.php?f=22&t=5605
Страница 1 из 1

Автор:  vdd [ 15 июн 2011, 16:50 ]
Заголовок сообщения:  Отправка SMS

Заканчиваем разработку процедур отправки смсок. Отправляем через слегка подкрученный http://wiki.bgbilling.ru/index.php/SMS_%D1%80%D0%B0%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_SMPP. Данные для отправки формируются БГБ скриптом.
Интересно кому?

Автор:  skyb [ 15 июн 2011, 17:03 ]
Заголовок сообщения:  Re: Отправка SMS

а я делал через сам биллинг и протокол smpp, осталось протестировать, но вот закончить работу так и не удалось :(

Автор:  dimOn [ 15 июн 2011, 17:26 ]
Заголовок сообщения:  Re: Отправка SMS

в новом модуле рассылок будут смс

Автор:  vdd [ 15 июн 2011, 17:26 ]
Заголовок сообщения:  Re: Отправка SMS

Поделились бы с народом, а то дублируем друг-дружку.

У нас это пока выглядит так (Строка для разовой оправки задается параметром на специальном договоре. Там же будут строки-шаблоны для рассылки баланса и пускач разовой рассылки):
Код:
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.util.*;
import java.util.*;
import java.sql.*;

final public int controlCid=441;
final public int oneTimeMsgId=47;
final public long contractsMask=7;
final public int phoneParamId=1;
final public int phoneMobIdx=3;
final public String emptyPhone="_";

public void main( setup, con, conSlave )
{
ContractUtils cu=new ContractUtils(con);
ContractManager cm=new ContractManager(con);
ContractParameterManager cpm=new ContractParameterManager(con);
   
   String oneTimeMsg=cpm.getStringParam(controlCid,oneTimeMsgId);
   contracts=cm.getContracts(cu.getCids(contractsMask));
//   prepareContractsSMS(con,contracts,processor(con,cpm,"Тест"));
   preparePhonesSMS(con,getMobilePhones(con,contractsMask),oneTimeMsg);
}

getMobilePhones(con, mask){
String query = "SELECT distinct phone FROM contract_parameter_type_phone_item where pid=? and n=? and cid in (select id from contract where (gr&?)>0 and (date2 is null or date2>NOW()))";
PreparedStatement ps = con.prepareStatement( query );
      ps.setInt( 1, phoneParamId);   
      ps.setInt( 2,  phoneMobIdx);   
      ps.setLong( 3,  mask);   
      List l=new ArrayList();
      ResultSet rs = ps.executeQuery();
      phone=emptyPhone;
      while( rs.next() ) l.add(rs.getString(1));
      ps.close();
      rs.close();
      return l;
}

String getMobilePhone(con,cid){
final String query = "SELECT phone FROM contract_parameter_type_phone_item where cid=? and pid=? and n=?";
PreparedStatement ps = con.prepareStatement( query );
      ps.setInt( 1,cid);   
      ps.setInt( 2, phoneParamId);   
      ps.setInt( 3,  phoneMobIdx);   
      ResultSet rs = ps.executeQuery();
      phone=emptyPhone;
      if( rs.next() ) phone=rs.getString(1);
      ps.close();
      rs.close();
      return phone;
}

processor(con,cpm,txt) {
    getText(c) {
        return txt;
    }
    getPhone(c) {
//   print( cpm.getPhoneParam(c.getId(),phoneParamId).getPhoneItem(phoneMobIdx).getPhone());
   phone=getMobilePhone(con,c.getId());
        return phone;
    }
    return this;
}

public void prepareContractsSMS(con,contracts,  p){
   for(Contract c :contracts){
      String q = "insert into sms_informer (phone_number,message_text,source_addr,create_dt) values(?,?,'SYSTEM_ID',NOW())";
      PreparedStatement ps = con.prepareStatement( q );
      phone=p.getPhone(c);
      if(phone.equals(emptyPhone) || phone.length()<11) continue;
      ps.setString(1,"7"+phone.substring(1));
      ps.setString(2,p.getText(c));
      ps.executeUpdate();
      ps.close();
   }
}

public void preparePhonesSMS(con,phones,txt){
   for(String phone :phones){
      String q = "insert into sms_informer (phone_number,message_text,source_addr,create_dt) values(?,?,'SYSTEM_ID',NOW())";
      PreparedStatement ps = con.prepareStatement( q );
      if(phone.equals(emptyPhone) || phone.length()<11) continue;
      ps.setString(1,"7"+phone.substring(1));
      ps.setString(2,txt);
      ps.executeUpdate();
      ps.close();
   }
}

Автор:  vdd [ 15 июн 2011, 17:27 ]
Заголовок сообщения:  Re: Отправка SMS

dimOn писал(а):
в новом модуле рассылок будут смс

А когда он будет?

Автор:  dimOn [ 15 июн 2011, 17:34 ]
Заголовок сообщения:  Re: Отправка SMS

Так уже есть, в 5.2 :umnik:

Автор:  vdd [ 15 июн 2011, 17:54 ]
Заголовок сообщения:  Re: Отправка SMS

dimOn писал(а):
Так уже есть, в 5.2 :umnik:

Судя по документации, прямой поддержки SMS нет. Так что мы все равно не зря потратили время - код все равно пригодится.

И еще вопрос: модуль учитывает, что один и тот же контакт (email, или номер мобильного) может быть указан на нескольких договорах и при рассылке сообщений, не привязанных к договору не очень правильно присылать три одинаковых сообщения?

Автор:  skyb [ 16 июн 2011, 03:25 ]
Заголовок сообщения:  Re: Отправка SMS

dimOn писал(а):
Так уже есть, в 5.2 :umnik:

оппа...заценим.

Автор:  skyb [ 19 июл 2011, 12:52 ]
Заголовок сообщения:  Re: Отправка SMS

dimOn писал(а):
в новом модуле рассылок будут смс

эм...уже готово? поюзать мона? вопрос в чем - через что отправляется смс?

Автор:  vdd [ 19 июл 2011, 12:57 ]
Заголовок сообщения:  Re: Отправка SMS

skyb писал(а):
dimOn писал(а):
в новом модуле рассылок будут смс

эм...уже готово? поюзать мона? вопрос в чем - через что отправляется смс?


Согласно документации на 5.2 - через что сделаете, через то и будет.

Автор:  skyb [ 19 июл 2011, 13:00 ]
Заголовок сообщения:  Re: Отправка SMS

http://www.bgbilling.ru/v5.2/doc/ch29s03s03.html
тоесть просто опять же пишешь свой класс и шлешь куда нада. в 5.2 будет модуль отправки смс, в 5.2 будет моду...ыыы....у меня тада и в 5.0 был бы....мдэ
dimOn писал(а):
Так уже есть, в 5.2 :umnik:

или я что то не то смотрю?

Автор:  skyb [ 19 июл 2011, 15:30 ]
Заголовок сообщения:  Re: Отправка SMS

ап

Автор:  skyb [ 20 июл 2011, 03:23 ]
Заголовок сообщения:  Re: Отправка SMS

ап
Разработчики, ну подтвердите или отвергните предположение.

Автор:  snark [ 20 июл 2011, 16:56 ]
Заголовок сообщения:  Re: Отправка SMS

Я чет не понял, ты хотел чтобы бителовцы поддержали всех существующих SMS операторов и реализация того как слать выглядела бы просто как выбор оператора в списке и вбитие логина/пароля? Они дали возможность слать при помощи классов:
Цитата:
Для реализации этой возможности необходимо воспользоваться механизмом динамически загружаемых Java-классов. Необходимо создать динамический класс, реализующий интерфейс ru.bitel.bgbilling.plugins.dispatch.server.sender.Sender, а затем создать метод отправки нажатием на кнопку Добавить в панели инструментов, указав этот класс в выпадающем списке.

и теперь что в классе будет - так и будет работать.

Автор:  Phricker [ 20 июл 2011, 16:57 ]
Заголовок сообщения:  Re: Отправка SMS

Цитата:
реализация того как слать выглядела бы просто как выбор оператора в списке и вбитие логина/пароля?

ЮЗЕР ФРИЕНДЛИ :umnik:

Автор:  skyb [ 20 июл 2011, 16:59 ]
Заголовок сообщения:  Re: Отправка SMS

snark писал(а):
Я чет не понял, ты хотел чтобы бителовцы поддержали всех существующих SMS операторов и реализация того как слать выглядела бы просто как выбор оператора в списке и вбитие логина/пароля? Они дали возможность слать при помощи классов:
Цитата:
Для реализации этой возможности необходимо воспользоваться механизмом динамически загружаемых Java-классов. Необходимо создать динамический класс, реализующий интерфейс ru.bitel.bgbilling.plugins.dispatch.server.sender.Sender, а затем создать метод отправки нажатием на кнопку Добавить в панели инструментов, указав этот класс в выпадающем списке.

и теперь что в классе будет - так и будет работать.

ээээ...не, просто говорилось что есть модуль рассылок смс, а получается что модуль рассылок, а рассылки смс я и так прикручивал в 5.0 разница то в чем?

Автор:  dimOn [ 20 июл 2011, 16:59 ]
Заголовок сообщения:  Re: Отправка SMS

в том, что надо прикрутить то же самое в 5.2, но в заранее отведённое место

Автор:  skyb [ 20 июл 2011, 17:02 ]
Заголовок сообщения:  Re: Отправка SMS

dimOn писал(а):
в том, что надо прикрутить то же самое в 5.2, но в заранее отведённое место

по нагородили, по нагородили:-D
сиди теперь правь :-D

Автор:  vdd [ 20 июл 2011, 17:02 ]
Заголовок сообщения:  Re: Отправка SMS

snark писал(а):
Я чет не понял, ты хотел чтобы бителовцы поддержали всех существующих SMS операторов и реализация того как слать выглядела бы просто как выбор оператора в списке и вбитие логина/пароля?

Например, могли реализовать SMPP. Он у всех одинаков. А вот процедура проверки отправилось/неотправилось - муторная.

Автор:  skyb [ 20 июл 2011, 17:05 ]
Заголовок сообщения:  Re: Отправка SMS

vdd писал(а):
snark писал(а):
Я чет не понял, ты хотел чтобы бителовцы поддержали всех существующих SMS операторов и реализация того как слать выглядела бы просто как выбор оператора в списке и вбитие логина/пароля?

Например, могли реализовать SMPP. Он у всех одинаков. А вот процедура проверки отправилось/неотправилось - муторная.

+

Автор:  snark [ 20 июл 2011, 17:14 ]
Заголовок сообщения:  Re: Отправка SMS

vdd писал(а):
Например, могли реализовать SMPP. Он у всех одинаков. А вот процедура проверки отправилось/неотправилось - муторная.

Дык вообще _всю_ реализацию отдали на откуп юзерам - как хочешь - так и шли.

Автор:  skyb [ 20 июл 2011, 17:15 ]
Заголовок сообщения:  Re: Отправка SMS

snark писал(а):
vdd писал(а):
Например, могли реализовать SMPP. Он у всех одинаков. А вот процедура проверки отправилось/неотправилось - муторная.

Дык вообще _всю_ реализацию отдали на откуп юзерам - как хочешь - так и шли.

а вот этот откуп можно было сделать и скриптами, а дефолтово реализовать протокол smpp
я ж грю, в 5.0 я реализовал отправку ...

Автор:  vdd [ 20 июл 2011, 17:22 ]
Заголовок сообщения:  Re: Отправка SMS

snark писал(а):
vdd писал(а):
Например, могли реализовать SMPP. Он у всех одинаков. А вот процедура проверки отправилось/неотправилось - муторная.

Дык вообще _всю_ реализацию отдали на откуп юзерам - как хочешь - так и шли.

Одно дело, когда юзеру дают реализовать что-то свое, другое дело, когда стандартное, да еще и муторное, что не каждому юзеру по силам.

Автор:  snark [ 20 июл 2011, 19:22 ]
Заголовок сообщения:  Re: Отправка SMS

Я думаю что разработчики прежде всего исходили из того что всем не угодишь, т.к. кому-то надо слать SMS, а кому-то мессаги в вконтакты/одноквлассники/ХЗ, а кому-то ... да мало ли вариантов может быть?
Хотя я с вами согласен, конечно, некую поддержку основных протоколов, будь то SMPP или НТТР POST могли бы и реализовать, но думаю что тут надо чтобы кто-то заплатил проголосовал рублем за нужную фишку.

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