Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Отправка SMS из Java веб сервисом или другим спосо


Автор: zone51 8.11.2007, 10:21
Народ доброго времени суток, подскажите пожалуйста как реализовать на яве отправку смс сообщений через веб сервис либо другим любым способом. Просто сейчас смс ки отправляются с мобильника на котором работает приложение а надо все автоматизировать и как это сделать? Спасибо заранее
 smile 

Автор: ecologist 8.11.2007, 10:41
Взять библиотеку OpenSMPP - http://smstools.sourceforge.net/

Автор: zone51 8.11.2007, 13:48
ecologist
А можно где нибудь узнать маны по етой технологии-что то очень разбросано и пространно не понятно как настраивать и т д.
Буду очень признателен.Спасибо. smile 

Автор: ecologist 9.11.2007, 08:44
Вообщем-то в документации это есть - прямо из описания Session кусочек

Код

   Connection conn = new TCPIPConnection("123.123.123.123", 6543);
   Session session = new Session(conn);
   BindRequest breq = new BindTransmitter();
   breq.setSystemId("MYNAME");
   breq.setPassword("my_pswdx");
   Response resp = session.bind(breq);
   if (resp.getCommandStatus() == Data.ESME_ROK) {
      SubmitSM msg = new SubmitSM();
      msg.setSourceAddr("3538998765432");
      msg.setDestAddr("3538619283746");
      msg.setShortMessage("Hello, world!");
      resp = session.submit(msg);
      if (resp.getCommandStatus() == Data.ESME_ROK) {
         System.out.println("Message submitted. Status=" + resp.getCommandStatus());
      } else {
         System.out.println("Message submission failed. Status=" + resp.getCommandStatus());
      }
      session.unbind();
   } else {
      System.out.println("Couldn't bind. Status=" + resp.getCommandStatus());
   }



У меня к сожалению отправки нет - мы делали как раз прием. Вот это эскиз к приему.

Основной класс - запускается и регулярно делает запрос к серверу для получения SMS. Там надо установить host, port, login, password. Это подключение к SMS-центру.

Код

import org.smpp.Data;
import org.smpp.ServerPDUEventListener;
import org.smpp.Session;
import org.smpp.TCPIPConnection;
import org.smpp.pdu.BindReceiver;
import org.smpp.pdu.BindRequest;
import org.smpp.pdu.Response;
import org.smpp.pdu.WrongLengthOfStringException;


public class Daemon 
{
    private static Session session;
    private EventListener eventListener = new EventListener();

    public static synchronized Session getCurrentSession() 
    {
        return session;
    }

    private void start() 
    {
        synchronized (Daemon.class) {
            session = getSession();
        }

        bind();

        try {
            for (; ;) { // forever
                Thread.sleep(5000L);
                session.enquireLink();
            }
        }
        catch (InterruptedException e) {
        }
        catch (Exception e) {
        }
    }

    private Session getSession() 
    {
        return new Session(new TCPIPConnection($host$, $port$));
    }

    private BindRequest getReceiver() throws WrongLengthOfStringException 
    {
        BindRequest bindRequest = new BindReceiver();
        bindRequest.setSystemId($login$);
        bindRequest.setPassword($password$);
        return bindRequest;
    }

    private void bind() 
    {
        Response resp;
        try {
            resp = session.bind(getReceiver(), eventListener);
        }
        catch (Exception e) {
            return;
        }
        bound = resp.getCommandStatus() == Data.ESME_ROK;
    }

    public static void main(String[] args) 
    {
        Daemon daemon = new Daemon();
        daemon.start();
    }
}


А здесь обработчик при приеме
Код

import org.smpp.ServerPDUEvent;
import org.smpp.ServerPDUEventListener;
import org.smpp.Session;
import org.smpp.pdu.*;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ArrayBlockingQueue;


public class EventListener implements ServerPDUEventListener 
{
    public void handleEvent(ServerPDUEvent event) 
    {
        PDU pdu = event.getPDU();

        if (pdu.isValid() && pdu.isRequest()) {
            Response response = ((Request) pdu).getResponse();

            Session session = Daemon.getCurrentSession();
            try {
                session.respond(response);
            }
            catch (Exception e) {
                return;
            }

            if (pdu instanceof DeliverSM) {
                DeliverSM deliverSM = (DeliverSM) pdu;
                System.out.println("Destination address: " + deliverSM.getDestAddr().getAddress());
                System.out.println("Source address: " + deliverSM.getSourceAddr().getAddress());
                System.out.println("SMS length: " + deliverSM.getSmLength());
                System.out.println("SMS: " + deliverSM.getShortMessage());
            }
        }
    }
}



Автор: zone51 13.12.2007, 09:29
ecologist
Огромноес спасибо, но может подскажите как посылать смс сообщения через OpenSMPP?
Мне как раз именно это и нужно. Хоть где примеры искать как это делается. Спасибо.

Автор: bio_hazard 13.12.2007, 10:30
Вам наеврное будет проще заключить договор с организацией которые осуществляют рассылку смс, там есть способо для отправки смс через емаил, стоимость отправки 1 смс в данном случае будет в районе 1 рубля, хотя тут все очень индивидуально и зависит от объема

Автор: barin_Student 13.12.2007, 11:22
Для отправки СМС по SMPP , требуется реализовать сам протокол, далее заключить договор с Опосами, вам датут параметры , и вы можете с ними обмениваться сообщениями. Есть еще вариант библиотеки как реализовать СМСЦ.
Так же есть вариант отправки СМС при помощи GPS модема ...

Автор: VSergeyV 14.12.2007, 07:20
Цитата(barin_Student @  13.12.2007,  11:22 Найти цитируемый пост)
требуется реализовать сам протокол

зачем? если есть тот же OpenSMPP

Цитата(barin_Student @  13.12.2007,  11:22 Найти цитируемый пост)
вариант библиотеки как реализовать СМСЦ

а поподробней можно? smile 

вообще всегда считал что SMSC(Short Messages Service Center)  - это аппаратно-программный комплекс самого оператора сотовой связи для предоставления услуги SMS. Всевозможные SMS сервисы, расширяющие возможности SMSC, и реализуемые часто сторонними организациями - ESME (External Short Messages Entity). Соответсвенно сам протокол SMPP(Short Messages Peer-to-Peer) - это протокол взаимодействия между SMSC оператора и ESME (SMS сервиса)

Автор: VSergeyV 14.12.2007, 10:25
Цитата(barin_Student @  13.12.2007,  11:22 Найти цитируемый пост)
Так же есть вариант отправки СМС при помощи GPS модема


наверно GSM модема всеже) спутниковая навигация всеже как то не к месту smile 

Автор: Tony 14.12.2007, 11:22
4ego to ja ne ponjal. Tak mozhno ili net otsilatь SMS na haljavu !?!!?!?!?.  smile 

Автор: Kangaroo 14.12.2007, 11:31
Цитата(Tony @  14.12.2007,  10:22 Найти цитируемый пост)
4ego to ja ne ponjal. Tak mozhno ili net otsilatь SMS na haljavu !?!!?!?!?.

Я уже представляю как на мой телефон забивается кучей смсок от спамеров  smile  ужос!!!  smile 

Но, наверное, вот этот пункт нас спасает:
Цитата(barin_Student @  13.12.2007,  10:22 Найти цитируемый пост)
 далее заключить договор с Опосами



PS
кстати - кто такие Опосы?

Автор: VSergeyV 14.12.2007, 12:19
Цитата(Kangaroo @  14.12.2007,  11:31 Найти цитируемый пост)
кстати - кто такие Опосы?


имелось ввиду опсос
Оператор сотовой связи - так хитро сокращается до "Оп"+"Со"+"С"

Добавлено @ 12:24
Цитата(Tony @  14.12.2007,  11:22 Найти цитируемый пост)
4ego to ja ne ponjal. Tak mozhno ili net otsilatь SMS na haljavu !?!!?!?!?.   


халява - либо отсылка через сайты сервисы по отсылке SMS, к примеру самих же операторов, либо на "хитро" составленный EMail адрес типа номер@что-то, но такую возможность клиент должен заказывать у своего оператора, т.к. по умолчанию отключена, иначе бы заспамили бы

Автор: barin_Student 19.12.2007, 06:11
SMPP SMSC - это реализованный SMSC для ESME библиотека org.smpp
Насчет "халявы" - это неправда , SMS при помощи библиотеки просто дешевле ,ОПСОС- да это операторы сотовой связи. 

Автор: zone51 9.1.2008, 22:46
Народ, буду очень всем признателен. В общем есть у меня логин и пароль на 
https://firebolt.netcom.no/sms/send?number=47XXXXXXXX&message=Gratulerer%20med%20NetCom%20SMS%20Bedrift
это гейт через который можно слать смс. Но как это дело заточить под смпп и засандалить в программу? То есть доступ к протоколу
Большое спасибо

Автор: VSergeyV 11.7.2008, 14:38
Цитата(ecologist @  8.11.2007,  10:41 Найти цитируемый пост)
Взять библиотеку OpenSMPP - http://smstools.sourceforge.net/

Какая библиотека поддерживает отсылку и прием длинных SMS сообщений? И отсылку OTA сообщений?

Автор: mantracoder 12.7.2008, 10:29
http://mblox.com/
http://mblox.com/technology/integration-interfaces.php

Достоинства - не нужен договор с каждым отдельным оператором связи. Единожды заключаемый договор с mBlox дает возможность работать со всеми операторами связи в мире (у mBlox очень широкая география). Еще одна "вкусность" - протокол MSIP.

Автор: sergei5555 3.8.2011, 13:45
Всем привет!

Не подскажете как определить по Delivery, какая смс доставлена, а какая нет.

Если на один номер может отправляться несколько смс.

 

Автор: linuxoid 6.8.2011, 15:44
Если ты это делаешь чисто для себя, то узнай у оператора, как можно получать SMS о том, что на твой email (который предоставляет сотовый оператор, обычно это [email protected], где "12345678" - номер твоего телефона) приходит новое письмо. Останется только сделать отправку e-mail'a на Java на свой ящик у своего оператора.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)