Mengirim SMS di Jawa dengan Twilio

1. Perkenalan

Mengirim pesan SMS adalah bagian besar dari banyak aplikasi modern. Ada berbagai kasus penggunaan yang dapat dilayani oleh pesan SMS: otentikasi dua faktor, peringatan waktu nyata, chatbots, dan banyak lagi.

Dalam tutorial ini, kami akan membangun aplikasi Java sederhana yang mengirim pesan SMS menggunakan Twilio.

Ada sejumlah layanan yang menyediakan kemampuan SMS, seperti Nexmo, Plivo, Amazon Simple Notification Service (SNS), Zapier, dan lainnya.

Dengan menggunakan klien Twilio Java, kita dapat mengirim pesan SMS hanya dalam beberapa baris kode .

2. Menyiapkan Twilio

Untuk memulai, kami memerlukan akun Twilio. Mereka menawarkan akun uji coba yang cukup untuk menguji setiap fitur platform mereka.

Sebagai bagian dari pengaturan akun, kita juga harus membuat nomor telepon. Ini penting karena akun uji coba memerlukan nomor telepon terverifikasi untuk mengirim pesan.

Twilio menawarkan tutorial penyiapan cepat untuk akun baru. Setelah kami menyelesaikan penyiapan akun dan memverifikasi nomor telepon kami, kami dapat mulai mengirim pesan.

3. Pengantar TwiML

Sebelum kita menulis aplikasi sampel kita, mari kita lihat sekilas format pertukaran data yang digunakan untuk layanan Twilio.

TwiML adalah bahasa markup berpemilik berdasarkan XML. Elemen-elemen dalam pesan TwiML mencerminkan berbagai tindakan yang dapat kita lakukan terkait dengan telepon: melakukan panggilan telepon, merekam pesan, mengirim pesan, dan sebagainya.

Berikut adalah contoh pesan TwiML untuk mengirim SMS:

  Sample Twilio SMS  

Dan berikut adalah contoh pesan TwiML lain yang membuat panggilan telepon:

  415-123-4567  

Keduanya adalah contoh yang sepele, tetapi memberi kita pemahaman yang baik tentang tampilan TwiML. Ini terdiri dari kata kerja dan kata benda yang mudah diingat dan berhubungan langsung dengan tindakan yang kami lakukan dengan telepon.

4. Mengirim SMS di Java dengan Twilio

Twilio menyediakan klien Java yang kaya yang memudahkan interaksi dengan layanan mereka. Alih-alih harus menulis kode yang membangun pesan TwiML dari awal, kita dapat menggunakan klien Java di luar kotak .

4.1. Dependensi

Kami dapat mengunduh dependensi langsung dari Maven Central atau dengan menambahkan entri berikut ke file pom.xml kami :

 com.twilio.sdk twilio 7.20.0 

4.2. Mengirim SMS

Untuk memulai, mari kita lihat beberapa kode contoh:

Twilio.init(ACCOUNT_SID, AUTH_TOKEN); Message message = Message.creator( new PhoneNumber("+12225559999"), new PhoneNumber(TWILIO_NUMBER), "Sample Twilio SMS using Java") .create();

Mari kita uraikan menjadi potongan-potongan kunci kode dalam contoh di atas:

  • The Twilio.init () panggilan diperlukan sekali untuk mengatur lingkungan Twilio dengan Sid Akun kami yang unik dan Token
  • The Pesan objek adalah setara Jawa ke TwiML elemen yang kita lihat sebelumnya
  • Message.creator () membutuhkan 3 parameter: Ke nomor telepon, Dari nomor telepon, dan isi pesan
  • Metode create () menangani pengiriman pesan

4.3. Mengirim MMS

Twilio API juga mendukung pengiriman pesan multimedia. Kami dapat mencampur dan mencocokkan teks dan gambar, agar ini berfungsi, telepon penerima harus mendukung perpesanan media:

Twilio.init(ACCOUNT_SID, AUTH_TOKEN); Message message = Message.creator( new PhoneNumber("+12225559999"), new PhoneNumber(TWILIO_NUMBER), "Sample Twilio MMS using Java") .setMediaUrl( Promoter.listOfOne(URI.create("//www.domain.com/image.png"))) .create();

5. Status Pesan Pelacakan

Pada contoh sebelumnya, kami tidak mengonfirmasi apakah pesan tersebut benar-benar terkirim. Namun Twilio memberikan mekanisme bagi kita untuk menentukan apakah sebuah pesan berhasil terkirim atau tidak .

5.1. Kode Status Pesan

Saat mengirim pesan, itu akan memiliki salah satu status kapan saja:

  • Antri - Twilio telah menerima pesan dan mengantri untuk pengiriman
  • Mengirim - server sedang dalam proses mengirimkan pesan Anda ke operator hulu terdekat di jaringan
  • Terkirim - pesan berhasil diterima oleh operator upstream terdekat
  • Terkirim - Twilio telah menerima konfirmasi pengiriman pesan dari operator hulu, dan mungkin handset tujuan bila tersedia
  • Gagal - pesan tidak dapat dikirim
  • Tidak terkirim - server telah menerima tanda terima pengiriman yang menunjukkan bahwa pesan tidak terkirim

Perhatikan bahwa untuk dua status terakhir kami dapat menemukan kode kesalahan dengan detail yang lebih spesifik untuk membantu kami memecahkan masalah pengiriman.

Klien Twilio Java menawarkan metode sinkron dan asinkron untuk mengambil status. Mari kita lihat.

5.2. Memeriksa Status Pengiriman (Sinkron)

Setelah kita membuat objek Message , kita dapat memanggil Message.getStatus () untuk melihat statusnya saat ini:

Twilio.init(ACCOUNT_SID, AUTH_TOKEN); ResourceSet messages = Message.reader().read(); for (Message message : messages) { System.out.println(message.getSid() + " : " + message.getStatus()); }

Note that Message.reader().read() makes a remote API call so use it sparingly. By default, it returns all messages we've sent, but we can filter the returned messages by phone numbers or date range.

5.3. Checking Delivery Status (Async)

Because retrieving message status requires a remote API call, it can take a long time. To avoid blocking the current thread, the Twilio Java client provides also an asynchronous version of Message.getStatus().read().

Twilio.init(ACCOUNT_SID, AUTH_TOKEN); ListenableFuture
    
      future = Message.reader().readAsync(); Futures.addCallback( future, new FutureCallback
     
      () { public void onSuccess(ResourceSet messages) { for (Message message : messages) { System.out.println(message.getSid() + " : " + message.getStatus()); } } public void onFailure(Throwable t) { System.out.println("Failed to get message status: " + t.getMessage()); } });
     
    

This uses the Guava ListenableFuture interface to process the response from Twilio on a different thread.

6. Conclusion

In this article, we learned how to send SMS and MMS using Twilio and Java.

Sementara TwiML adalah dasar dari semua pesan ke dan dari server Twilio, klien Twilio Java membuat pengiriman pesan menjadi sangat mudah.

Dan, seperti biasa, basis kode lengkap untuk contoh ini dapat ditemukan di repositori GitHub kami.