Slanje SMS-a na Javi s Twiliom

1. Uvod

Slanje SMS poruka velik je dio mnogih modernih aplikacija. Postoje razni slučajevi upotrebe koje SMS poruke mogu poslužiti: dvofaktorska autentifikacija, upozorenja u stvarnom vremenu, chatbotovi i mnogi drugi.

U ovom uputstvu izradit ćemo jednostavan Java program koji šalje SMS poruke pomoću Twilio.

Postoji niz usluga koje pružaju SMS mogućnosti, poput Nexmo, Plivo, Amazon Simple Notification Service (SNS), Zapier i još mnogo toga.

Korištenjem Twilio Java klijenta, možemo poslati SMS poruku u samo nekoliko redaka koda.

2. Postavljanje Twilio

Za početak trebat će nam Twilio račun. Oni nude probni račun koji je dovoljan za testiranje svih značajki njihove platforme.

Kao dio postavljanja računa, moramo stvoriti i telefonski broj. To je važno jer probni račun zahtijeva potvrđeni telefonski broj za slanje poruka.

Twilio nudi vodič za brzo postavljanje novih računa. Nakon što dovršimo postavljanje računa i potvrdimo svoj telefonski broj, možemo početi slati poruke.

3. Uvod u TwiML

Prije nego što napišemo naš uzorak prijave, pogledajmo na brzinu format razmjene podataka koji se koristi za Twilio usluge.

TwiML je vlasnički označni jezik zasnovan na XML-u. Elementi u TwiML poruci zrcale različite radnje koje možemo poduzeti u vezi s telefonijom: telefoniranje, snimanje poruke, slanje poruke itd.

Evo primjera TwiML poruke za slanje SMS-a:

  Uzorak Twilio SMS-a 

I evo još jednog primjera TwiML poruke koja upućuje telefonski poziv:

  415-123-4567  

Ovo su trivijalni primjeri, ali daju nam dobro razumijevanje kako TwiML izgleda. Sastoji se od glagola i imenica koje je lako zapamtiti i izravno se odnose na radnju koju bismo izvršili telefonom.

4. Slanje SMS-a na Javi s Twiliom

Twilio nudi bogati Java klijent koji olakšava interakciju s njihovim uslugama. Umjesto da moramo pisati kôd koji TwiML poruke gradi od nule, možemo upotrijebiti Java-klijent koji nije iz kutije.

4.1. Ovisnosti

Ovisnost možemo preuzeti izravno s Maven Central ili dodavanjem sljedećeg unosa u naš pom.xml datoteka:

 com.twilio.sdk twilio 7.20.0 

4.2. Slanje SMS-a

Za početak, pogledajmo nekoliko primjera koda:

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); Poruka poruke = Message.creator (novi broj telefona ("+ 12225559999"), novi broj telefona (TWILIO_NUMBER), "Uzorak Twilio SMS-a pomoću Jave") .create ();

Podijelimo na ključne dijelove kod iz gornjeg uzorka:

  • The Twilio.init () poziv je potreban jednom za postavljanje Twilio okruženja s našim jedinstvenim računom Sid i žetonom
  • The Poruka objekt je Java ekvivalentan TwiML-u element koji smo vidjeli ranije
  • Message.creator () potrebna su 3 parametra: na telefonski broj, s telefonskog broja i tijelo poruke
  • The stvoriti() metoda obrađuje slanje poruke

4.3. Slanje MMS-a

Twilio API također podržava slanje multimedijskih poruka. Možemo miješati i slagati tekst i slike, da bi ovo funkcioniralo, telefon koji prima mora podržavati razmjenu poruka s medijima:

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); Poruka poruke = Message.creator (novi broj telefona ("+ 12225559999"), novi broj telefona (TWILIO_NUMBER), "Uzorak Twilio MMS-a pomoću Jave") .setMediaUrl (Promoter.listOfOne (URI.create ("// www.domain.com/ image.png "))) .create ();

5. Praćenje statusa poruke

U prethodnim primjerima nismo potvrdili je li poruka stvarno isporučena. Međutim Twilio pruža mehanizam za utvrđivanje je li poruka uspješno isporučena ili ne.

5.1. Kodovi statusa poruke

Kada šaljete poruku, ona će u svakom trenutku imati jedan od statusa:

  • U redu čekanja - Twilio je primio poruku i stavio je u red za dostavu
  • Slanje - poslužitelj je u procesu slanja vaše poruke najbližem uzlaznom operateru u mreži
  • Poslano - poruku je uspješno prihvatio najbliži uzvodni operater
  • Isporučeno - Twilio je primio potvrdu o isporuci poruke od uzlaznog operatera, a moguće i od odredišne ​​slušalice kada je dostupna
  • Neuspjeh - poruku nije moguće poslati
  • Neisporučeno - poslužitelj je primio potvrdu o isporuci koja označava da poruka nije isporučena

Imajte na umu da za posljednja dva statusa možemo pronaći kôd pogreške s određenijim detaljima koji će nam pomoći u rješavanju problema s isporukom.

Klijent Twilio Java nudi sinkrone i asinkrone metode za dohvaćanje statusa. Pogledajmo.

5.2. Provjera statusa isporuke (sinkrono)

Nakon što stvorimo Poruka objekt, možemo nazvati Message.getStatus () da biste vidjeli u kojem se statusu trenutno nalazi:

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

Imajte na umu da Message.reader (). Read () upućuje udaljeni API poziv pa ga koristite štedljivo. Prema zadanim postavkama vraća sve poruke koje smo poslali, ali vraćene poruke možemo filtrirati prema telefonskim brojevima ili datumskom rasponu.

5.3. Provjera statusa isporuke (Async)

Budući da je za dohvaćanje statusa poruke potreban udaljeni API poziv, to može potrajati. Kako bi izbjegao blokiranje trenutne niti, klijent Twilio Java nudi i asinkronu verziju Message.getStatus (). Read ().

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); Slušljivo u budućnosti budućnost = Message.reader (). readAsync (); Futures.addCallback (budućnost, novi FutureCallback() {public void onSuccess (ResourceSet messages) {for (Message message: messages) {System.out.println (message.getSid () + ":" + message.getStatus ()); }} javna praznina onFailure (Dostupno t) {System.out.println ("Nije uspjelo dobivanje statusa poruke:" + t.getMessage ()); }});

Ovo koristi Guavu Slušljivo u budućnosti sučelje za obradu odgovora Twilio-a na drugoj niti.

6. Zaključak

U ovom smo članku naučili kako slati SMS i MMS pomoću Twilio i Java.

Iako je TwiML osnova svih poruka na i s Twilio poslužitelja, Twilio Java klijent čini slanje poruka nevjerojatno jednostavnim.

I, kao i uvijek do sada, kompletna baza kodova za ovaj primjer može se naći u našem GitHub spremištu.