Sms verzenden in Java met Twilio

1. Inleiding

Het verzenden van sms-berichten is een groot deel van veel moderne toepassingen. Sms-berichten kunnen op verschillende manieren worden gebruikt: tweefactorauthenticatie, realtime waarschuwingen, chatbots en nog veel meer.

In deze zelfstudie bouwen we een eenvoudige Java-applicatie die sms-berichten verzendt met Twilio.

Er zijn een aantal services die sms-mogelijkheden bieden, zoals Nexmo, Plivo, Amazon Simple Notification Service (SNS), Zapier en meer.

Met behulp van de Twilio Java-client, we kunnen een sms-bericht verzenden in slechts een paar regels code.

2. Twilio instellen

Om te beginnen hebben we een Twilio-account nodig. Ze bieden een proefaccount aan dat voldoende is om elke functie van hun platform te testen.

Als onderdeel van de accountconfiguratie moeten we ook een telefoonnummer aanmaken. Dit is belangrijk omdat het proefaccount een geverifieerd telefoonnummer vereist voor het verzenden van berichten.

Twilio biedt een snelle setup-tutorial voor nieuwe accounts. Zodra we de accountconfiguratie hebben voltooid en ons telefoonnummer hebben geverifieerd, kunnen we beginnen met het verzenden van berichten.

3. Inleiding tot TwiML

Laten we, voordat we onze voorbeeldtoepassing schrijven, even kijken naar het formaat voor gegevensuitwisseling dat wordt gebruikt voor Twilio-services.

TwiML is een eigen opmaaktaal op basis van XML. De elementen in een TwiML-bericht weerspiegelen de verschillende acties die we kunnen ondernemen met betrekking tot telefonie: telefoneren, een bericht opnemen, een bericht verzenden, enzovoort.

Hier is een voorbeeld TwiML-bericht voor het verzenden van een sms:

  Voorbeeld Twilio-sms 

En hier is nog een voorbeeld van een TwiML-bericht dat een telefoongesprek voert:

  415-123-4567  

Dit zijn allebei triviale voorbeelden, maar ze geven ons een goed begrip van hoe TwiML eruit ziet. Het is samengesteld uit werkwoorden en zelfstandige naamwoorden die gemakkelijk te onthouden zijn en rechtstreeks verband houden met de actie die we met een telefoon zouden uitvoeren.

4. SMS versturen in Java met Twilio

Twilio biedt een rijke Java-client die de interactie met hun services eenvoudig maakt. In plaats van code te moeten schrijven die TwiML-berichten helemaal opnieuw opbouwt, kunnen we een kant-en-klare Java-client gebruiken.

4.1. Afhankelijkheden

We kunnen de afhankelijkheid rechtstreeks downloaden van Maven Central of door het volgende item toe te voegen aan ons pom.xml het dossier:

 com.twilio.sdk twilio 7.20.0 

4.2. SMS versturen

Laten we om te beginnen eens kijken naar een voorbeeldcode:

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

Laten we de code in het bovenstaande voorbeeld in sleutelstukken opsplitsen:

  • De Twilio.init () call is één keer vereist om de Twilio-omgeving in te stellen met onze unieke Account Sid en Token
  • De Bericht object is het Java-equivalent van de TwiML element dat we eerder zagen
  • Message.creator () vereist 3 parameters: Naar telefoonnummer, Van telefoonnummer en de berichttekst
  • De maken () methode handelt het verzenden van het bericht af

4.3. Een mms verzenden

De Twilio API ondersteunt ook het verzenden van multimediaberichten. We kunnen tekst en afbeeldingen mixen en matchen, om dit te laten werken, moet de ontvangende telefoon mediaberichten ondersteunen:

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

In de vorige voorbeelden hebben we niet bevestigd of het bericht daadwerkelijk is afgeleverd. Echter Twilio biedt ons een mechanisme om te bepalen of een bericht met succes is afgeleverd of niet.

5.1. Bericht Statuscodes

Bij het verzenden van een bericht heeft het altijd een van de volgende statussen:

  • In de wachtrij - Twilio heeft het bericht ontvangen en in de wachtrij geplaatst voor bezorging
  • Bezig met verzenden - de server is bezig met het verzenden van uw bericht naar de dichtstbijzijnde stroomopwaartse provider in het netwerk
  • Verzonden - het bericht is met succes geaccepteerd door de dichtstbijzijnde stroomopwaartse vervoerder
  • Geleverd - Twilio heeft een bevestiging van de berichtaflevering ontvangen van de upstream-provider en mogelijk de bestemmingshandset, indien beschikbaar
  • Mislukt - het bericht kon niet worden verzonden
  • Niet bezorgd - de server heeft een ontvangstbevestiging ontvangen die aangeeft dat het bericht niet is afgeleverd

Houd er rekening mee dat we voor de laatste twee statussen een foutcode kunnen vinden met meer specifieke details om ons te helpen bij het oplossen van bezorgingsproblemen.

De Twilio Java Client biedt een synchrone en asynchrone methode om de status op te halen. Laten we eens kijken.

5.2. Afleverstatus controleren (synchroon)

Zodra we een Bericht object, kunnen we bellen Message.getStatus () om te zien in welke status het momenteel is:

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); ResourceSet-berichten = Message.reader (). Read (); voor (Bericht bericht: berichten) {System.out.println (message.getSid () + ":" + message.getStatus ()); }

Let daar op Message.reader (). Read () maakt een externe API-aanroep, dus gebruik deze spaarzaam. Standaard retourneert het alle berichten die we hebben verzonden, maar we kunnen de geretourneerde berichten filteren op telefoonnummers of datumbereik.

5.3. Afleverstatus controleren (asynchroon)

Omdat het ophalen van de berichtstatus een externe API-aanroep vereist, kan dit lang duren. Om te voorkomen dat de huidige thread wordt geblokkeerd, biedt de Twilio Java-client ook een asynchrone versie van Message.getStatus (). Read ().

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); Luisterbare toekomst future = Message.reader (). readAsync (); Futures.addCallback (toekomst, nieuwe FutureCallback() {public void onSuccess (ResourceSet-berichten) {voor (Berichtbericht: berichten) {System.out.println (message.getSid () + ":" + message.getStatus ()); }} public void onFailure (Throwable t) {System.out.println ("Kan berichtstatus niet ophalen:" + t.getMessage ()); }});

Dit maakt gebruik van de Guava Luisterbare toekomst interface om het antwoord van Twilio op een andere thread te verwerken.

6. Conclusie

In dit artikel hebben we geleerd hoe we sms en mms kunnen verzenden met Twilio en Java.

Hoewel TwiML de basis is van alle berichten van en naar Twilio-servers, maakt de Twilio Java-client het verzenden van berichten ongelooflijk eenvoudig.

En, zoals altijd, is de volledige codebase voor dit voorbeeld te vinden in onze GitHub-repository.


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