Sende SMS i Java med Twilio

1. Introduksjon

Å sende SMS-meldinger er en stor del av mange moderne applikasjoner. Det er en rekke bruksområder som SMS-meldinger kan tjene: tofaktorautentisering, sanntidsvarsler, chatbots og mange flere.

I denne opplæringen bygger vi et enkelt Java-program som sender SMS-meldinger ved hjelp av Twilio.

Det finnes en rekke tjenester som tilbyr SMS-funksjoner, for eksempel Nexmo, Plivo, Amazon Simple Notification Service (SNS), Zapier og mer.

Ved hjelp av Twilio Java-klienten, vi kan sende en SMS-melding på bare noen få linjer med kode.

2. Sette opp Twilio

For å komme i gang trenger vi en Twilio-konto. De tilbyr en prøvekonto som er tilstrekkelig for å teste alle funksjoner på plattformen deres.

Som en del av kontooppsettet må vi også opprette et telefonnummer. Dette er viktig fordi prøvekontoen krever et bekreftet telefonnummer for sending av meldinger.

Twilio tilbyr en rask opplæringsveiledning for nye kontoer. Når vi har fullført kontooppsettet og bekreftet telefonnummeret vårt, kan vi begynne å sende meldinger.

3. Introduksjon til TwiML

Før vi skriver eksempelsøknaden vår, la oss ta en rask titt på datautvekslingsformatet som brukes til Twilio-tjenester.

TwiML er et proprietært merkespråk basert på XML. Elementene i en TwiML-melding speiler de forskjellige handlingene vi kan ta i forbindelse med telefoni: ringe, ta opp en melding, sende en melding og så videre.

Her er et eksempel på en TwiML-melding for sending av en SMS:

  Eksempel på Twilio SMS 

Og her er et annet eksempel på TwiML-melding som ringer:

  415-123-4567  

Dette er begge trivielle eksempler, men de gir oss en god forståelse av hvordan TwiML ser ut. Den består av verb og substantiver som er enkle å huske og har direkte forbindelse med handlingen vi ville utføre med en telefon.

4. Sende SMS i Java med Twilio

Twilio tilbyr en rik Java-klient som gjør det enkelt å samhandle med tjenestene. I stedet for å måtte skrive kode som bygger TwiML-meldinger fra bunnen av, kan vi bruke en out-of-the-box Java-klient.

4.1. Avhengigheter

Vi kan laste ned avhengigheten direkte fra Maven Central eller ved å legge til følgende oppføring i vår pom.xml fil:

 com.twilio.sdk twilio 7.20.0 

4.2. Sende en SMS

For å komme i gang, la oss se på noen eksempler på kode:

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

La oss dele opp i nøkkelstykker koden i eksemplet ovenfor:

  • De Twilio.init () samtale kreves en gang for å sette opp Twilio-miljøet med vår unike konto Sid og Token
  • De Beskjed objektet er Java-ekvivalent med TwiML element vi så tidligere
  • Message.creator () krever 3 parametere: Til telefonnummer, Fra telefonnummer og meldingsteksten
  • De skape() metoden håndterer sending av meldingen

4.3. Sende en MMS

Twilio API støtter også sending av multimediameldinger. Vi kan mikse og matche tekst og bilder, for at dette skal fungere må mottakertelefonen støtte mediemeldinger:

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. Sporingsmeldingsstatus

I de forrige eksemplene bekreftet vi ikke om meldingen faktisk ble levert. derimot Twilio gir oss en mekanisme for å avgjøre om en melding ble levert eller ikke.

5.1. Melding Status Koder

Når du sender en melding, har den når som helst en av statusene:

  • I kø - Twilio har mottatt meldingen og satt den i kø for levering
  • Sender - serveren er i ferd med å sende meldingen din til nærmeste oppstrømsoperatør i nettverket
  • Sendt - meldingen ble godtatt av nærmeste oppstrømsoperatør
  • Levert - Twilio har mottatt bekreftelse på levering av meldinger fra oppstrømsoperatøren, og muligens destinasjonshåndsettet når det er tilgjengelig
  • Mislyktes - meldingen kunne ikke sendes
  • Ikke levert - serveren har mottatt en leveringskvittering som indikerer at meldingen ikke ble levert

Merk at for de to siste statusene kan vi finne en feilkode med mer spesifikke detaljer for å hjelpe oss med å feilsøke leveringsproblemer.

Twilio Java Client tilbyr synkrone og asynkrone metoder for å hente status. La oss se.

5.2. Kontrollere leveringsstatus (synkron)

Når vi har opprettet en Beskjed objekt, kan vi ringe Message.getStatus () for å se hvilken status den for øyeblikket er i:

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

Noter det Message.reader (). Les () foretar en ekstern API-samtale, så bruk den sparsomt. Som standard returnerer den alle meldinger vi har sendt, men vi kan filtrere de returnerte meldingene etter telefonnummer eller datoperiode.

5.3. Kontrollere leveringsstatus (Async)

Fordi henting av meldingsstatus krever en ekstern API-samtale, kan det ta lang tid. For å unngå å blokkere den gjeldende tråden, gir Twilio Java-klienten også en asynkron versjon av Message.getStatus (). Les ().

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 motta meldingsstatus:" + t.getMessage ()); }});

Dette bruker Guava ListenableFuture grensesnitt for å behandle svaret fra Twilio på en annen tråd.

6. Konklusjon

I denne artikkelen lærte vi hvordan du sender SMS og MMS ved hjelp av Twilio og Java.

Mens TwiML er grunnlaget for alle meldinger til og fra Twilio-servere, gjør Twilio Java-klienten det enkelt å sende meldinger.

Og som alltid finner du full kodebase for dette eksemplet i GitHub-depotet vårt.


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