জাভাতে কীভাবে এসএমএস পাঠানো যায়


133

জাভা অ্যাপ্লিকেশন থেকে এসএমএস প্রেরণ এবং গ্রহণের সম্ভাব্য উপায়গুলি কী কী?

কিভাবে?

উত্তর:


19

(অস্বীকৃতি: আমি টোলিওতে কাজ করি)

টোভিলিও টিভিলিও আরএসটি এপিআইয়ের মাধ্যমে এসএমএস প্রেরণের জন্য একটি জাভা এসডিকে সরবরাহ করে


আমি যদি আমার সার্ভারে এটি পুনরুদ্ধার করতে চাই তবে কী হবে?
জিগার জোশী

আপনি কোনও ট্যালিও অ্যাকাউন্টে সাইন আপ করবেন, তারপরে একটি আগত বার্তা পেলে
জন শিহান

1
টিভিলিওর জন্য ধন্যবাদ :)
চিরাগ সাবসানী


10

জাভাতে আমি দেখেছি সেরা এসএমএস API হ'ল জেএসএমপিপি। এটি শক্তিশালী, সহজেই ব্যবহারযোগ্য এবং আমি এটিকে এন্টারপ্রাইজ-স্তরীয় অ্যাপ্লিকেশনটির জন্য ব্যবহার করেছি (প্রতিদিন 20K এর বেশি এসএমএস বার্তা প্রেরণ করছি)।

বিদ্যমান এসএমপিপি এপিআইয়ের ভার্বোসটি হ্রাস করতে এই এপিআই তৈরি করা হয়েছে। এটি খুব সহজ এবং সহজেই ব্যবহারযোগ্য কারণ এটি নিম্ন স্তরের প্রোটোকল যোগাযোগের জটিলতা যেমন স্বয়ংক্রিয়ভাবে অনুসন্ধানের জন্য লিঙ্কের অনুরোধ-প্রতিক্রিয়াটিকে গোপন করে।

আমি ওজেকির মতো আরও কিছু এপিআই চেষ্টা করেছি, তবে তাদের বেশিরভাগই বাণিজ্যিক হয় বা এর থ্রুপুটটিতে সীমাবদ্ধতা রয়েছে (উদাহরণস্বরূপ, এক সেকেন্ডে 3 টিরও বেশি এসএমএস বার্তা পাঠানো যায় না)।


10

এসএমএসলিব নামে একটি এপিআই রয়েছে, এটি সত্যই দুর্দান্ত। http://smslib.org/

এখন আপনার কাছে প্রচুর সাশ সরবরাহকারী রয়েছে যা তাদের এপিআই ব্যবহার করে আপনাকে এই পরিষেবা দিতে পারে

উদাঃ মেলচিম্প, এনসেক্সেক্স, টোভিলিও, ...


9

আপনি একটি জিএসএম মডেম এবং জাভা যোগাযোগগুলি এপিআই এর মাধ্যমে এটি করতে পারেন [চেষ্টা ও পরীক্ষিত]

  1. প্রথমে আপনার জাভা কম এপি সেট করতে হবে

    এই নিবন্ধটি কীভাবে যোগাযোগ এপি সেট আপ করবেন তা বিস্তারিতভাবে বর্ণনা করা হয়েছে

  2. এর পরে আপনার একটি জিএসএম মডেম প্রয়োজন (সিম900 মডিউলটি বেশি পছন্দ করুন)

  3. জাভা জেডিকে সর্বশেষ সংস্করণটি পছন্দনীয়

  4. কমান্ড গাইড

    কোড

    প্যাকেজ নমুনা;

        import java.io.*;
        import java.util.*;
    
        import gnu.io.*;
    
        import java.io.*;
    
    
        import org.apache.log4j.chainsaw.Main;
    
        import sun.audio.*;
    
        public class GSMConnect implements SerialPortEventListener, 
         CommPortOwnershipListener {
    
         private static String comPort = "COM6"; // This COM Port must be connect with GSM Modem or your mobile phone
         private String messageString = "";
         private CommPortIdentifier portId = null;
         private Enumeration portList;
         private InputStream inputStream = null;
         private OutputStream outputStream = null;
         private SerialPort serialPort;
         String readBufferTrial = "";
         /** Creates a new instance of GSMConnect */
         public GSMConnect(String comm) {
    
           this.comPort = comm;
    
         }
    
         public boolean init() {
           portList = CommPortIdentifier.getPortIdentifiers();
           while (portList.hasMoreElements()) {
             portId = (CommPortIdentifier) portList.nextElement();
             if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
               if (portId.getName().equals(comPort)) {
                   System.out.println("Got PortName");
                 return true;
               }
             }
           }
           return false;
         }
    
         public void checkStatus() {
           send("AT+CREG?\r\n");
         }
    
    
    
         public void send(String cmd) {
           try {
             outputStream.write(cmd.getBytes());
           } catch (IOException e) {
             e.printStackTrace();
           }
         }
    
         public void sendMessage(String phoneNumber, String message) {
               char quotes ='"';
           send("AT+CMGS="+quotes + phoneNumber +quotes+ "\r\n");
           try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            //   send("AT+CMGS=\""+ phoneNumber +"\"\r\n");
           send(message + '\032');
           System.out.println("Message Sent");
         }
    
         public void hangup() {
           send("ATH\r\n");
         }
    
         public void connect() throws NullPointerException {
           if (portId != null) {
             try {
               portId.addPortOwnershipListener(this);
    
               serialPort = (SerialPort) portId.open("MobileGateWay", 2000);
               serialPort.setSerialPortParams(115200,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
             } catch (PortInUseException | UnsupportedCommOperationException e) {
               e.printStackTrace();
             }
    
             try {
               inputStream = serialPort.getInputStream();
               outputStream = serialPort.getOutputStream();
    
             } catch (IOException e) {
               e.printStackTrace();
             }
    
             try {
               /** These are the events we want to know about*/
               serialPort.addEventListener(this);
               serialPort.notifyOnDataAvailable(true);
               serialPort.notifyOnRingIndicator(true);
             } catch (TooManyListenersException e) {
               e.printStackTrace();
             }
    
        //Register to home network of sim card
    
             send("ATZ\r\n");
    
           } else {
             throw new NullPointerException("COM Port not found!!");
           }
         }
    
         public void serialEvent(SerialPortEvent serialPortEvent) {
           switch (serialPortEvent.getEventType()) {
             case SerialPortEvent.BI:
             case SerialPortEvent.OE:
             case SerialPortEvent.FE:
             case SerialPortEvent.PE:
             case SerialPortEvent.CD:
             case SerialPortEvent.CTS:
             case SerialPortEvent.DSR:
             case SerialPortEvent.RI:     
             case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
             case SerialPortEvent.DATA_AVAILABLE:
    
               byte[] readBuffer = new byte[2048];
               try {
                 while (inputStream.available() > 0) 
                 {
                   int numBytes = inputStream.read(readBuffer);
    
                   System.out.print(numBytes);
                   if((readBuffer.toString()).contains("RING")){
                   System.out.println("Enter Inside if RING Loop");    
    
    
    
                   }
                 }
    
                 System.out.print(new String(readBuffer));
               } catch (IOException e) {
               }
               break;
           }
         }
         public void outCommand(){
             System.out.print(readBufferTrial);
         }
         public void ownershipChange(int type) {
           switch (type) {
             case CommPortOwnershipListener.PORT_UNOWNED:
               System.out.println(portId.getName() + ": PORT_UNOWNED");
               break;
             case CommPortOwnershipListener.PORT_OWNED:
               System.out.println(portId.getName() + ": PORT_OWNED");
               break;
             case CommPortOwnershipListener.PORT_OWNERSHIP_REQUESTED:
               System.out.println(portId.getName() + ": PORT_INUSED");
               break;
           }
    
         }
         public void closePort(){
    
            serialPort.close(); 
         }
    
         public static void main(String args[]) {
           GSMConnect gsm = new GSMConnect(comPort);
           if (gsm.init()) {
             try {
                 System.out.println("Initialization Success");
               gsm.connect();
               Thread.sleep(5000);
               gsm.checkStatus();
               Thread.sleep(5000);
    
               gsm.sendMessage("+91XXXXXXXX", "Trial Success");
    
               Thread.sleep(1000);
    
               gsm.hangup();
               Thread.sleep(1000);
               gsm.closePort();
               gsm.outCommand();
               System.exit(1);
    
    
             } catch (Exception e) {
               e.printStackTrace();
             }
           } else {
             System.out.println("Can't init this card");
           }
         }
    
    
            }

7

আপনি এসএমএস পাঠানোর পাশাপাশি এসএমএস গ্রহণ করতে Nexmo ব্যবহার করতে পারেন ।

নেক্সমো জাভা লাইব্রেরির সাথে এসএমএস পাঠানো মোটামুটি সোজা। একটি নতুন অ্যাকাউন্ট তৈরি করার পরে , ভার্চুয়াল নম্বর ভাড়া দেওয়ার পরে এবং আপনার এপিআই কী ও গোপনীয়তা পাওয়ার পরে আপনি এসএমএস পাঠাতে পাঠাগারটি ব্যবহার করতে পারেন:

  public class SendSMS {

      public static void main(String[] args) throws Exception {
          AuthMethod auth = new TokenAuthMethod(API_KEY, API_SECRET);
          NexmoClient client = new NexmoClient(auth);

          TextMessage message = new TextMessage(FROM_NUMBER, TO_NUMBER, "Hello from Nexmo!");

          //There may be more than one response if the SMS sent is more than 160 characters.
          SmsSubmissionResult[] responses = client.getSmsClient().submitMessage(message);
            for (SmsSubmissionResult response : responses) {
            System.out.println(response);
          }
      }
  }

এসএমএস পাওয়ার জন্য আপনাকে একটি সার্ভার সেট আপ করতে হবে যা একটি ওয়েব হুক গ্রাস করে। এটি পাশাপাশি মোটামুটি সহজ। আমি জাভা সহ এসএমএস পাওয়ার বিষয়ে আমাদের টিউটোরিয়ালটি পরীক্ষা করে দেখার পরামর্শ দিই ।

প্রকাশ: আমি নেক্সমোর পক্ষে কাজ করি


2

টেক্সটমার্কগুলি আপনাকে তাদের অ্যাপ্লিকেশন থেকে পাঠানোর এবং তাদের এপিআইয়ের মাধ্যমে পাঠ্য বার্তাগুলি গ্রহণের জন্য এর ভাগ করা শর্টকোডে অ্যাক্সেস দেয়। বার্তাগুলি / থেকে 41411 এ আসে (উদাহরণস্বরূপ এলোমেলো ফোন # এর পরিবর্তে এবং ই-মেইল গেটওয়েগুলির বিপরীতে আপনার সাথে কাজ করার জন্য পুরো 160 টি অক্ষর রয়েছে)।

আপনি আপনার অ্যাপ্লিকেশনে বিভিন্ন কার্যকারিতা প্রার্থনা করতে আপনার কীওয়ার্ডগুলিতে 41411 তে পাঠ্য পাঠাতেও বলতে পারেন। বেশ কয়েকটি অন্যান্য জনপ্রিয় ভাষা এবং খুব বিস্তৃত ডকুমেন্টেশন এবং প্রযুক্তিগত সহায়তা সহ একটি জাভা এপিআই ক্লায়েন্ট রয়েছে।

14 দিনের বিনামূল্যে ট্রায়ালগুলি সহজেই বিকাশকারীদের জন্য বাড়ানো যেতে পারে যারা এখনও এটিকে পরীক্ষা করে দেখছে এবং তাদের অ্যাপস তৈরি করছে।

এটি এখানে দেখুন: টেক্সটমার্কস এপিআই তথ্য


2

আপনি জাভা অ্যাপ্লিকেশনটিতে এসএমএস প্রেরণ এবং পুনরুদ্ধারের জন্য লোগিকা এসএমপিপি জাভা এপিআই করতে পারেন। লোগিকা এসএমপিপি টেলিকম অ্যাপ্লিকেশনটিতে ভাল প্রমাণিত এপিআই। লোগিকা এপিআই আপনাকে টিসিপি / আইপি সংযোগে সংকেত ক্যাপাসিটি সরবরাহ করে।

আপনি সরাসরি বিশ্ব জুড়ে বিভিন্ন টেলিকম অপারেটরের সাথে সংহত করতে পারেন।


2

দুটি উপায় রয়েছে: প্রথম: একটি এসএমএস এপিআই গেটওয়ে ব্যবহার করুন যা আপনাকে এর জন্য অর্থ প্রদান করতে হবে, সম্ভবত আপনি কিছু পরীক্ষা এমনকি নিখরচায় দেখতে পেয়েছেন তবে এটি খুব কমই। দ্বিতীয়: আপনার ল্যাপটপে সংযুক্ত একটি মডেম জিএসএম সহ এটি কমান্ডটি ব্যবহার করতে। এখানেই শেষ


2

এটি নির্ভর করে আপনি কীভাবে কাজ করছেন এবং আপনার সরবরাহকারী কে।

আপনি যদি কোনও এসএমএস-গেটওয়ে সংস্থার সাথে কাজ করেন তবে আপনি সম্ভবত এসএমপিপি প্রোটোকলের মাধ্যমে কাজ করবেন (3.4 এখনও সর্বাধিক সাধারণ), তবে ওপেনএসএমপিপি এবং জেএসএমপিপি দেখুন on এসএমপিপির সাথে কাজ করার জন্য এগুলি শক্তিশালী libs।

আপনি যদি নিজের হার্ডওয়্যার (ফিজ জিএসএম-মডেম) দিয়ে কাজ করতে যাচ্ছেন তবে বার্তা প্রেরণের সহজতম উপায় এটি কমান্ডের মাধ্যমে হয়, এগুলি ভিন্নতার সাথে মডেলের উপর নির্ভর করে, সুতরাং আপনার কী মডেল দ্বারা এটি কমান্ড সমর্থন করে তা খুঁজে বের করা উচিত । এর পরে, যদি আপনার মডেমের আইপি থাকে এবং সংযোগের জন্য উন্মুক্ত থাকে, আপনি জাভা সকেটের মাধ্যমে কমান্ড প্রেরণ করতে পারেন

Socket smppSocket = new Socket("YOUR_MODEM_IP", YOUR_MODEM_PORT);
DataOutputStream os = new DataOutputStream(smppSocket.getOutputStream());
DataInputStream is = new DataInputStream(smppSocket.getInputStream());

os.write(some_byte_array[]);
is.readLine();

অন্যথায় আপনি একটি সিওএম বন্দর দিয়ে কাজ করবেন, তবে পদ্ধতিটি একই (এ টি কমান্ড প্রেরণ), আপনি এখানে সিরিয়াল বন্দরগুলির সাথে কীভাবে কাজ করবেন তা আরও তথ্যের সন্ধান করতে পারেন ।


2

OMK.smpp। API- টি। এটি এসএমপিপি ভিত্তিক এবং সিমুলেটরটিও বিনামূল্যে পাওয়া যায়

লোগিকা এসএমপিপি এপিআই।

এবং অন্য বিকল্প হ'ল ক্যানেল একটি ফ্রি ওয়াপ এবং এসএমএস গেটওয়ে।


ক্যানেলটি কনফিগার করা আপনাকে ঘাম ঝরাতে সহায়তা করে যদি আপনি এটি মডেম দিয়ে কনফিগার করতে পরিচালনা করেন তবে দয়া করে পদ্ধতিগুলি ভাগ করুন।
Dun0523

2

আমি টিউলিওর মতো ক্লাউড ভিত্তিক সমাধানের পরামর্শ দিচ্ছি। অভ্যন্তরীণ সমাধানের চেয়ে মেঘ ভিত্তিক সমাধানগুলি সাশ্রয়ী, কারণ কোনও চলমান রক্ষণাবেক্ষণ নেই, প্রয়োজনীয়। ইমেলের মাধ্যমে এসএমএস কোনও মার্জিত সমাধান নয়, কারণ আপনাকে ব্যবহারকারীর কাছ থেকে ক্যারিয়ারের তথ্য পেতে হবে এবং আপনি কখনই নিশ্চিত হতে পারবেন না যে আপনি সমস্ত মোবাইল নম্বর টেক্সট করতে পারবেন। সার্ভারসাইড থেকে এসএমএস প্রেরণের জন্য আমি আমার ওয়েব অ্যাপ্লিকেশনটিতে টোলিও জাভা এপি ব্যবহার করছি। কয়েক মিনিটের মধ্যে, আপনি আপনার অ্যাপ্লিকেশনটির সাথে সংহত করতে পারেন।

https://www.twilio.com/docs/java/install

দস্তাবেজগুলি থেকে একটি এসএমএস বার্তা পাঠানোর উদাহরণ এখানে রয়েছে:

import com.twilio.sdk.TwilioRestClient;
import com.twilio.sdk.TwilioRestException;
import com.twilio.sdk.resource.factory.MessageFactory;
import com.twilio.sdk.resource.instance.Message;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import java.util.ArrayList;
import java.util.List;

public class Example {

  // Find your Account Sid and Token at twilio.com/user/account
  public static final String ACCOUNT_SID = "{{ account_sid }}";
  public static final String AUTH_TOKEN = "{{ auth_token }}";

  public static void main(String[] args) throws TwilioRestException {
    TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);

    // Build a filter for the MessageList
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("Body", "Test Twilio message"));
    params.add(new BasicNameValuePair("To", "+14159352345"));
    params.add(new BasicNameValuePair("From", "+14158141829"));

    MessageFactory messageFactory = client.getAccount().getMessageFactory();
    Message message = messageFactory.create(params);
    System.out.println(message.getSid());
  }
}

1
প্রদান করা হয়েছে তবে এটি প্রতি লিখিত বার্তায় এক শতাংশেরও কম।
কার্তিক সংকর

1

এসএমএসলিব এই উদ্দেশ্যে খুব দরকারী আপনি আপনার পিসির সাথে একটি মডেম সংযুক্ত করতে পারেন এবং এসএমএস প্রেরণের জন্য এই লিবটি ব্যবহার করতে পারেন। এটি কাজ করে আমি এটি ব্যবহার করেছি


1

ওয়েভসেল-এ আমরা জাভাও ভালবাসি , তবে ভাষা-নির্দিষ্ট বিবরণ ছাড়াই এই প্রশ্নের উত্তর দেওয়া যেতে পারে যেহেতু আমাদের কাছে একটি REST এপিআই রয়েছে যা আপনার বেশিরভাগ চাহিদা আবরণ করবে:

curl -X "POST" https://api.wavecell.com/sms/v1/amazing_hq/single \
    -u amazing:1234512345 \
    -H "Content-Type: application/json" \
    -d $'{ "source": "AmazingDev", "destination": "+6512345678", "text": "Hello, World!" }'

জাভাতে HTTP অনুরোধ প্রেরণে আপনার যদি সমস্যা হয় তবে এই প্রশ্নগুলি দেখুন:

নির্দিষ্ট ক্ষেত্রে আপনি এসএমপিপি এপিআই ব্যবহার করে বিবেচনা করতে পারেন এবং ইতিমধ্যে উল্লিখিত জেএসএমপিপি লাইব্রেরি এতে সহায়তা করবে।


0

আপনি টোলিও ব্যবহার করতে পারেন জন্য । তবে আপনি যদি কিছু কৌশলপূর্ণ কাজের সন্ধান করছেন তবে নীচে উল্লিখিত ওয়ার্কআরউন্ডটি অনুসরণ করতে পারেন।

এসএমএস পাওয়ার পক্ষে এটি সম্ভব নয়। তবে এটি একটি জটিল পদ্ধতি যা আপনি ক্লায়েন্টের সংখ্যায় এসএমএস প্রেরণে ব্যবহার করতে পারেন। আপনি টুইটার এপিআই ব্যবহার করতে পারেন। আমরা একটি এসএমএস সহ আমাদের মোবাইল ফোন থেকে টুইটার অ্যাকাউন্ট অনুসরণ করতে পারি। আমাদের কেবল টুইটারে এসএমএস পাঠাতে হবে। ভাবুন আমরা এর ব্যবহারকারীর নামের সাথে একটি টুইটার অ্যাকাউন্ট তৈরি করি @username। তারপরে আমরা নীচের মত 40404 নম্বরে এসএমএস পাঠাতে পারি।

follow @username

তারপরে আমরা সেই অ্যাকাউন্টে টুইট করা টুইটগুলি পেতে শুরু করি।

সুতরাং আমরা একটি টুইটার অ্যাকাউন্ট তৈরি করার পরে আমরা সেই অ্যাকাউন্ট থেকে টুইটার এপিআই ব্যবহার করতে পারি। তারপরে যে সমস্ত ক্লায়েন্টরা সেই অ্যাকাউন্টটি অনুসরণ করেছে আমি তার আগে টুইটগুলি গ্রহণ শুরু করার আগে উল্লেখ করেছি।

আপনি নিম্নলিখিত লিঙ্ক থেকে টুইটার এপিআই দিয়ে টুইটগুলি কীভাবে পোস্ট করবেন তা শিখতে পারেন।

টুইটার এপিআই

আপনি বিকাশ শুরু করার আগে টুইটার এপিআই ব্যবহারের অনুমতি নিতে হবে। আপনি নীচের লিঙ্ক থেকে টুইটার এপি থেকে অ্যাক্সেস পেতে পারেন।

টুইটার বিকাশকারী কনসোল

এটি আপনার সমস্যার জন্য সর্বোত্তম সমাধান নয় hope তবে এই সহায়তার আশা করি।


-3

আপনি জিএসএম মডেম ব্যবহার করে এসএমএস প্রেরণের জন্য এটি অ্যান্ড টি কমান্ড ব্যবহার করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.