SMS küldése Java-ban a Twilio segítségével
1. Bemutatkozás
Az SMS üzenetek küldése sok modern alkalmazás nagy része. Az SMS-üzenetek különféle felhasználási esetekkel szolgálhatnak: kétfaktoros hitelesítés, valós idejű riasztások, chatbotok és még sok más.
Ebben az oktatóanyagban felépítünk egy egyszerű Java alkalmazást, amely SMS-eket küld a Twilio segítségével.
Számos szolgáltatás nyújt SMS-képességeket, mint például a Nexmo, a Plivo, az Amazon Simple Notification Service (SNS), a Zapier és még sok más.
A Twilio Java kliens használatával SMS-t küldhetünk csak néhány kódsorban.
2. A Twilio beállítása
A kezdéshez szükségünk lesz egy Twilio-fiókra. Kínálnak egy próbafiókot, amely elegendő platformjuk minden funkciójának teszteléséhez.
A fiókbeállítás részeként létre kell hoznunk egy telefonszámot is. Ez azért fontos, mert a próbafiókhoz ellenőrzött telefonszámra van szükség az üzenetek küldéséhez.
A Twilio egy gyors telepítési útmutatót kínál az új fiókokhoz. Miután befejeztük a fiók beállítását és igazoltuk telefonszámunkat, elkezdhetünk üzeneteket küldeni.
3. Bevezetés a TwiML-be
Mielőtt megírnánk a minta alkalmazásunkat, nézzük át gyorsan a Twilio szolgáltatásokhoz használt adatcsere formátumot.
A TwiML egy XML-en alapuló, saját tulajdonú jelölőnyelv. A TwiML üzenet elemei tükrözik a telefonáláshoz kapcsolódó különböző műveleteket: telefonálhatunk, üzenetet rögzíthetünk, üzenetet küldhetünk stb.
Íme egy példa TwiML üzenetre SMS küldéséhez:
Minta Twilio SMS
És itt van egy másik példa a TwiML üzenetre, amely telefonál:
415-123-4567
Mindkettő triviális példa, de jól megértjük, hogyan néz ki a TwiML. Olyan igékből és főnevekből áll, amelyek könnyen megjegyezhetők és közvetlenül kapcsolódnak ahhoz a művelethez, amelyet telefonon hajtunk végre.
4. SMS küldése Java-ban a Twilio segítségével
A Twilio gazdag Java klienst biztosít, amely megkönnyíti a szolgáltatásaikkal való interakciót. Ahelyett, hogy olyan kódot kellene írnunk, amely a semmiből építi fel a TwiML-üzeneteket, használhatunk dobozon kívüli Java klienst.
4.1. Függőségek
Letölthetjük a függőséget közvetlenül a Maven Central-ból, vagy hozzáadhatjuk a következő bejegyzést a listánkhoz pom.xml fájl:
com.twilio.sdk twilio 7.20.0
4.2. SMS küldése
A kezdéshez nézzünk meg néhány mintakódot:
Twilio.init (ACCOUNT_SID, AUTH_TOKEN); Üzenet = Message.creator (új telefonszám ("+ 12225559999"), új telefonszám (TWILIO_NUMBER), "Twilio SMS minta Java használatával") .create ();
Bontjuk kulcsfontosságú darabokra a fenti minta kódját:
- A Twilio.init () hívás szükséges egyszer a Twilio környezet beállításához egyedi Account Sid és Token szolgáltatásunkkal
- A Üzenet objektum a Java megfelelője a TwiML-nek elem, amit korábban láttunk
- Message.creator () 3 paramétert igényel: Telefonszámra, Telefonszámtól és az üzenet törzsére
- A teremt() metódus kezeli az üzenet küldését
4.3. MMS küldése
A Twilio API támogatja a multimédia üzenetek küldését is. Keverhetjük a szöveget és a képeket, hogy ez működjön, a fogadó telefonnak támogatnia kell a média üzenetküldést:
Twilio.init (ACCOUNT_SID, AUTH_TOKEN); Üzenet = Message.creator (új telefonszám ("+ 12225559999"), új telefonszám (TWILIO_NUMBER), "Twilio MMS minta Java használatával") .setMediaUrl (Promoter.listOfOne (URI.create ("// www.domain.com/ image.png "))) .create ();
5. Az üzenet állapotának követése
Az előző példákban nem erősítettük meg, hogy az üzenetet valóban kézbesítették-e. azonban A Twilio biztosít egy mechanizmust számunkra annak megállapítására, hogy egy üzenetet sikeresen eljuttattunk-e vagy sem.
5.1. Üzenet állapotkódok
Üzenet küldésekor bármikor az egyik állapota meg lesz:
- Sorban - Twilio megkapta az üzenetet, és sorba állította a kézbesítéshez
- Küldés - a szerver éppen az üzenetet küldi a hálózat legközelebbi upstream szolgáltatójához
- Küldött - az üzenetet a legközelebbi upstream szolgáltató sikeresen elfogadta
- Szállítva - A Twilio megkapta az üzenet kézbesítésének megerősítését az upstream szolgáltatótól, és adott esetben a cél kézibeszélőtől, ha elérhető
- nem sikerült - az üzenetet nem sikerült elküldeni
- Kézbesítetlen - a szerver kézbesítési nyugtát kapott, jelezve, hogy az üzenetet nem kézbesítették
Ne feledje, hogy az utolsó két állapotra vonatkozóan megtalálhatunk egy hibakódot, amely részletesebb részleteket tartalmaz a szállítási problémák elhárításához.
A Twilio Java kliens szinkron és aszinkron módszereket kínál az állapot lekérésére. Nézzük meg.
5.2. Szállítási állapot ellenőrzése (szinkron)
Miután létrehoztuk a Üzenet objektum, hívhatunk Message.getStatus () hogy megnézze, mely állapotban van jelenleg:
Twilio.init (ACCOUNT_SID, AUTH_TOKEN); ResourceSet messages = Message.reader (). Read (); for (Üzenetüzenet: üzenetek) {System.out.println (message.getSid () + ":" + message.getStatus ()); }
Vegye figyelembe, hogy Message.reader (). Read () távoli API hívást hajt végre, ezért használja kíméletesen. Alapértelmezés szerint az összes üzenetet visszaadja, de szűrhetjük a visszaküldött üzeneteket telefonszám vagy dátumtartomány szerint.
5.3. A kézbesítés állapotának ellenőrzése (Async)
Mivel az üzenet állapotának lekérése távoli API-hívást igényel, ez hosszú ideig tarthat. Az aktuális szál blokkolásának elkerülése érdekében a Twilio Java kliens a aszinkron verzióját is biztosítja Message.getStatus (). Read ().
Twilio.init (ACCOUNT_SID, AUTH_TOKEN); Hallható jövő jövő = Message.reader (). readAsync (); Futures.addCallback (jövő, új FutureCallback() {public void onSuccess (ResourceSet messages) {for (Üzenet üzenet: üzenetek) {System.out.println (message.getSid () + ":" + message.getStatus ()); }} public void onFailure (Throwable t) {System.out.println ("Nem sikerült lekérni az üzenet állapotát:" + t.getMessage ()); }});
Ez a guavát használja Hallható jövő interfész a Twilio válaszának feldolgozásához egy másik szálon.
6. Következtetés
Ebben a cikkben megtudtuk, hogyan lehet SMS-t és MMS-t küldeni a Twilio és a Java használatával.
Míg a TwiML az alapja a Twilio szerverekre érkező és onnan érkező összes üzenetnek, a Twilio Java kliens hihetetlenül egyszerűvé teszi az üzenetek küldését.
És mint mindig, ennek a példának a teljes kódbázisa megtalálható a GitHub-adattárunkban.