Afsendelse af SMS i Java med Twilio

1. Introduktion

Afsendelse af SMS-beskeder er en stor del af mange moderne applikationer. Der er en række anvendelsessager, som SMS-beskeder kan tjene: tofaktorautentificering, realtidsadvarsler, chatbots og mange flere.

I denne vejledning bygger vi en simpel Java-applikation, der sender SMS-beskeder ved hjælp af Twilio.

Der er en række tjenester, der leverer SMS-funktioner, såsom Nexmo, Plivo, Amazon Simple Notification Service (SNS), Zapier og mere.

Brug af Twilio Java-klienten, vi kan sende en sms-besked i bare et par linier kode.

2. Opsætning af Twilio

For at komme i gang har vi brug for en Twilio-konto. De tilbyder en prøvekonto, der er tilstrækkelig til at teste alle funktioner på deres platform.

Som en del af kontoopsætningen skal vi også oprette et telefonnummer. Dette er vigtigt, fordi prøvekontoen kræver et verificeret telefonnummer for afsendelse af meddelelser.

Twilio tilbyder en hurtig opsætningsvejledning til nye konti. Når vi har gennemført kontoopsætningen og bekræftet vores telefonnummer, kan vi begynde at sende beskeder.

3. Introduktion til TwiML

Før vi skriver vores eksempelapplikation, lad os tage et hurtigt kig på dataudvekslingsformatet, der bruges til Twilio-tjenester.

TwiML er et proprietært markup-sprog baseret på XML. Elementerne i en TwiML-besked spejler de forskellige handlinger, vi kan udføre i forbindelse med telefoni: Foretag et telefonopkald, optag en besked, send en besked og så videre.

Her er et eksempel på en TwiML-besked til afsendelse af en SMS:

  Prøve på Twilio SMS 

Og her er et andet eksempel på TwiML-besked, der foretager et telefonopkald:

  415-123-4567  

Disse er begge trivielle eksempler, men de giver os en god forståelse af, hvordan TwiML ser ud. Den består af verb og substantiver, der er lette at huske og direkte relaterer til den handling, vi ville udføre med en telefon.

4. Afsendelse af SMS i Java med Twilio

Twilio leverer en rig Java-klient, der gør det nemt at interagere med deres tjenester. I stedet for at skulle skrive kode, der bygger TwiML-beskeder fra bunden, kan vi bruge en out-of-the-box Java-klient.

4.1. Afhængigheder

Vi kan downloade afhængigheden direkte fra Maven Central eller ved at tilføje følgende post til vores pom.xml fil:

 com.twilio.sdk twilio 7.20.0 

4.2. Afsendelse af en SMS

Lad os se på nogle eksempler på kode for at komme i gang:

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); Beskedbesked = Message.creator (nyt PhoneNumber ("+ 12225559999"), nyt PhoneNumber (TWILIO_NUMBER), "Sample Twilio SMS ved hjælp af Java") .create ();

Lad os opdele koden i ovenstående prøve i nøgleelementer:

  • Det Twilio.init () opkald kræves en gang for at oprette Twilio-miljøet med vores unikke konto Sid and Token
  • Det Besked objekt er Java-ækvivalent med TwiML element, vi så tidligere
  • Message.creator () kræver 3 parametre: Til telefonnummer, Fra telefonnummer og meddelelsens brødtekst
  • Det skab() metode håndterer afsendelse af beskeden

4.3. Afsendelse af en MMS

Twilio API understøtter også afsendelse af multimediemeddelelser. Vi kan blande og matche tekst og billeder, for at dette kan fungere, skal den modtagende telefon understøtte mediebeskeder:

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); Beskedbesked = Message.creator (nyt PhoneNumber ("+ 12225559999"), nyt PhoneNumber (TWILIO_NUMBER), "Sample Twilio MMS ved hjælp af Java") .setMediaUrl (Promoter.listOfOne (URI.create ("// www.domain.com/ image.png "))) .create ();

5. Sporingsmeddelelsesstatus

I de foregående eksempler bekræftede vi ikke, om meddelelsen faktisk blev leveret. Imidlertid Twilio giver os en mekanisme til at afgøre, om en meddelelse blev leveret med succes eller ej.

5.1. Besked status koder

Når du sender en besked, har den til enhver tid en af ​​statusene:

  • I kø - Twilio har modtaget beskeden og sat den i kø til levering
  • Afsendelse - serveren er i færd med at sende din besked til nærmeste upstream-operatør i netværket
  • Sendt - meddelelsen blev accepteret med succes af den nærmeste luftfartsselskab
  • Leveret - Twilio har modtaget bekræftelse på levering af beskeder fra opstrømsoperatøren og muligvis destinationshåndsættet, når det er tilgængeligt
  • mislykkedes - beskeden kunne ikke sendes
  • Ikke leveret - serveren har modtaget en leveringskvittering, der angiver, at meddelelsen ikke blev leveret

Bemærk, at vi i de sidste to statuser kan finde en fejlkode med mere specifikke detaljer, der hjælper os med at fejlfinde leveringsproblemer.

Twilio Java Client tilbyder en synkron og asynkron metode til at hente status. Lad os kigge på det.

5.2. Kontrol af leveringsstatus (synkron)

Når vi har oprettet en Besked objekt, kan vi kalde Message.getStatus () for at se, hvilken status den er i øjeblikket:

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

Noter det Message.reader (). Læs () foretager et eksternt API-opkald, så brug det sparsomt. Som standard returnerer det alle beskeder, vi har sendt, men vi kan filtrere de returnerede meddelelser efter telefonnumre eller datointerval.

5.3. Kontrol af leveringsstatus (Async)

Da hentning af meddelelsesstatus kræver et fjernt API-opkald, kan det tage lang tid. For at undgå at blokere den aktuelle tråd giver Twilio Java-klienten også en asynkron version af Message.getStatus (). Læs ().

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); ListenableFuture fremtid = Message.reader (). readAsync (); Futures.addCallback (fremtid, ny 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 ("Kunne ikke få beskedstatus:" + t.getMessage ()); }});

Dette bruger Guava ListenableFuture interface til at behandle svaret fra Twilio på en anden tråd.

6. Konklusion

I denne artikel lærte vi, hvordan du sender SMS og MMS ved hjælp af Twilio og Java.

Mens TwiML er grundlaget for alle meddelelser til og fra Twilio-servere, gør Twilio Java-klienten det meget nemt at sende meddelelser.

Og som altid kan den fulde codebase til dette eksempel findes i vores GitHub-arkiv.


$config[zx-auto] not found$config[zx-overlay] not found