שליחת SMS בג'אווה עם Twilio

1. הקדמה

שליחת הודעות SMS היא חלק גדול מיישומים מודרניים רבים. ישנם מגוון מקרים של שימושים שבהם הודעות SMS יכולות להגיש: אימות דו-גורמי, התראות בזמן אמת, צ'אט-בוטים ורבים נוספים.

במדריך זה נבנה יישום Java פשוט השולח הודעות SMS באמצעות Twilio.

ישנם מספר שירותים המספקים יכולות SMS, כמו Nexmo, Plivo, Amazon Simple Notification Service (SNS), Zapier ועוד.

באמצעות לקוח Java של Twilio, אנו יכולים לשלוח הודעת SMS בכמה שורות קוד בלבד.

2. הגדרת Twilio

כדי להתחיל נצטרך חשבון Twilio. הם מציעים חשבון ניסיון שמספיק לבדיקת כל תכונות בפלטפורמה שלהם.

במסגרת הגדרת החשבון עלינו ליצור מספר טלפון. זה חשוב מכיוון שחשבון הניסיון דורש מספר טלפון מאומת לשליחת הודעות.

Twilio מציעה מדריך התקנה מהיר עבור חשבונות חדשים. לאחר שנשלים את הגדרת החשבון ונוודא את מספר הטלפון שלנו, נוכל להתחיל לשלוח הודעות.

3. מבוא ל- TwiML

לפני שנכתוב את יישום הדוגמה שלנו, בואו נסתכל במהירות על פורמט חילופי הנתונים המשמש לשירותי Twilio.

TwiML היא שפת סימון קניינית המבוססת על XML. האלמנטים בהודעת TwiML משקפים את הפעולות השונות שאנו יכולים לבצע הקשורות לטלפוניה: לבצע שיחת טלפון, להקליט הודעה, לשלוח הודעה וכו '.

הנה דוגמה להודעת TwiML למשלוח SMS:

  דוגמה ל- SMS של Twilio 

והנה דוגמא נוספת להודעת TwiML שמבצעת שיחת טלפון:

  415-123-4567  

אלה הן דוגמאות טריוויאליות, אך הן נותנות לנו הבנה טובה כיצד TwiML נראה. הוא מורכב מפעלים ושמות עצם שקל לזכור אותם ומתייחסים ישירות לפעולה שאנחנו מבצעים באמצעות טלפון.

4. שליחת SMS בג'אווה עם Twilio

Twilio מספק לקוח Java עשיר שמקל על האינטראקציה עם השירותים שלהם. במקום שנצטרך לכתוב קוד הבונה הודעות TwiML מאפס, אנו יכולים להשתמש בלקוח Java מהקופסה.

4.1. תלות

אנו יכולים להוריד את התלות ישירות ממייבן סנטרל או על ידי הוספת הערך הבא ל pom.xml קוֹבֶץ:

 com.twilio.sdk twilio 7.20.0 

4.2. שליחת SMS

כדי להתחיל, בואו נסתכל על קוד לדוגמה:

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); הודעת הודעה = Message.creator (PhoneNumber חדש ("+ 12225559999"), PhoneNumber חדש (TWILIO_NUMBER), "לדוגמא SMS מסוג Twilio באמצעות Java") .create ();

בואו נפרק לחתיכות מפתח את הקוד במדגם שלעיל:

  • ה Twilio.init () שיחה נדרשת פעם אחת כדי להגדיר את סביבת Twilio באמצעות חשבון Sid ו- Token הייחודי שלנו
  • ה הוֹדָעָה אובייקט הוא המקבילה של Java ל- TwiML אלמנט שראינו קודם
  • Message.creator () דורש 3 פרמטרים: למספר טלפון, ממספר טלפון וגוף ההודעה
  • ה לִיצוֹר() השיטה מטפלת בשליחת ההודעה

4.3. שליחת MMS

ה- API של Twilio תומך גם בשליחת הודעות מולטימדיה. אנו יכולים לערבב ולהתאים טקסט ותמונות, כדי שזה יעבוד על הטלפון המקבל לתמוך בהודעות מדיה:

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); הודעת הודעה = Message.creator (PhoneNumber חדש ("+ 12225559999"), PhoneNumber חדש (TWILIO_NUMBER), "לדוגמא MMS של Twilio באמצעות Java") .setMediaUrl (Promoter.listOfOne (URI.create ("// www.domain.com/ image.png "))) .create ();

5. מעקב אחר סטטוס הודעה

בדוגמאות הקודמות לא אישרנו אם ההודעה אכן נמסרה. למרות זאת Twilio מספקת לנו מנגנון לקבוע אם הודעה הועברה בהצלחה או לא.

5.1. קודי מצב הודעה

בעת שליחת הודעה, יהיה לו אחד הסטטוסים בכל עת:

  • בתור - טוויליו קיבל את ההודעה ועמד בתור למסירה
  • שְׁלִיחָה - השרת נמצא בתהליך של העברת ההודעה שלך למוביל הזרם הקרוב ביותר ברשת
  • נשלח - ההודעה התקבלה בהצלחה על ידי הספק הקרוב ביותר במעלה הזרם
  • נמסר - Twilio קיבלה אישור למסירת הודעות מהספק במעלה הזרם, ואולי גם מכשיר היעד, כאשר הדבר זמין
  • נִכשָׁל - לא ניתן היה לשלוח את ההודעה
  • לא נשלח - השרת קיבל קבלת מסירה המציינת שההודעה לא נמסרה

שים לב כי בשני הסטטוסים האחרונים אנו יכולים למצוא קוד שגיאה עם פרטים ספציפיים יותר שיעזור לנו לפתור בעיות מסירה.

לקוח Java של Twilio מציע שיטות סינכרוניות ואסינכרוניות להשגת סטטוס. בוא נראה.

5.2. בדיקת סטטוס אספקה ​​(סינכרוני)

לאחר שיצרנו הוֹדָעָה אנחנו יכולים להתקשר Message.getStatus () כדי לראות באיזה סטטוס הוא נמצא כרגע:

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); הודעות ResourceSet = Message.reader (). קרא (); עבור (הודעת הודעה: הודעות) {System.out.println (message.getSid () + ":" + message.getStatus ()); }

ציין זאת Message.reader (). קרא () מבצע שיחת API מרוחקת אז השתמש בה במשורה. כברירת מחדל, הוא מחזיר את כל ההודעות ששלחנו, אך אנו יכולים לסנן את ההודעות שהוחזרו לפי מספרי טלפון או טווח תאריכים.

5.3. בודק סטטוס אספקה ​​(Async)

מכיוון שאחזור מצב ההודעה דורש שיחת API מרוחקת, זה יכול לקחת זמן רב. כדי להימנע מחסימת השרשור הנוכחי, לקוח Java של Twilio מספק גם גרסה אסינכרונית של Message.getStatus (). קרא ().

Twilio.init (ACCOUNT_SID, AUTH_TOKEN); האזנה לעתיד עתיד = Message.reader (). readAsync (); Futures.addCallback (עתיד, FutureCallback חדש() {public void onSuccess (ResourceSet הודעות) {עבור (הודעת הודעה: הודעות) {System.out.println (message.getSid () + ":" + message.getStatus ()); }} בטל ציבורי onFailure (Throwable t) {System.out.println ("נכשל קבלת סטטוס ההודעה:" + t.getMessage ()); }});

זה משתמש בגויאבה האזנה לעתיד ממשק לעיבוד התגובה מטוויליו על חוט אחר.

6. מסקנה

במאמר זה למדנו כיצד לשלוח SMS ו- MMS באמצעות Twilio ו- Java.

בעוד TwiML הוא הבסיס של כל ההודעות משרתי Twilio וממנה, לקוח ה- Twilio Java מקל מאוד על שליחת הודעות.

וכמו תמיד, ניתן למצוא את בסיס הקוד המלא לדוגמא זו במאגר GitHub שלנו.


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