إرسال رسائل SMS في Java: نظرة عامة على المكتبات وأدوات API
لا يزال إرسال رسائل SMS مهمة مطلوبة في تطبيقات الويب الحديثة: المصادقة الثنائية، الإشعارات، الحملات التسويقية. في Java، توجد عدة مكتبات ناضجة وأغلفة API لهذا الغرض. في هذه المقالة، سنستعرض الأساليب الرئيسية، المكتبات الشائعة، ونقدم أمثلة عملية على الكود.
الأساليب الأساسية لإرسال رسائل SMS
يمكن تقسيم جميع طرق إرسال رسائل SMS في Java إلى مجموعتين:
- التفاعل المباشر عبر HTTP مع API المزود — إرسال طلبات HTTP (GET/POST) إلى خدمات REST لبوابات SMS (Twilio, Vonage/Nexmo, SMS-Центр وغيرها).
- استخدام مكتبات متخصصة — أغلفة Java جاهزة تغلف استدعاءات HTTP والمصادقة ومعالجة الردود.
المكتبات وواجهات API الشائعة لـ Java
سننظر في ثلاثة خيارات الأكثر شيوعًا.
1. حزمة Twilio Java SDK
Twilio هي إحدى الشركات الرائدة في سوق الاتصالات السحابية. توفر حزمة Java SDK الرسمية (com.twilio.sdk:twilio) واجهة بسيطة وآمنة من حيث النوع.
التثبيت (Maven):
<dependency> <groupId>com.twilio.sdk</groupId> <artifactId>twilio</artifactId> <version>9.14.0</version></dependency>مثال لإرسال رسالة SMS:
import com.twilio.Twilio;import com.twilio.rest.api.v2010.account.Message;import com.twilio.type.PhoneNumber;
public class SmsSender { public static final String ACCOUNT_SID = "your_account_sid"; public static final String AUTH_TOKEN = "your_auth_token";
public static void main(String[] args) { Twilio.init(ACCOUNT_SID, AUTH_TOKEN); Message message = Message.creator( new PhoneNumber("+79261234567"), // رقم المستلم new PhoneNumber("+15551234567"), // رقم المرسل (من Twilio) "مرحبًا! هذه رسالة SMS تجريبية من Java." ).create(); System.out.println("SID الرسالة: " + message.getSid()); }}2. عميل Vonage (سابقًا Nexmo) Java Client
يوفر Vonage حزمة Java SDK قوية لإرسال رسائل SMS والرسائل الصوتية. يدعم الاستدعاءات المتزامنة وغير المتزامنة.
التثبيت (Gradle):
implementation 'com.vonage:client:7.3.0'مثال لإرسال رسالة SMS:
import com.vonage.client.VonageClient;import com.vonage.client.sms.MessageStatus;import com.vonage.client.sms.SmsSubmissionResponse;import com.vonage.client.sms.messages.TextMessage;
public class VonageSms { public static void main(String[] args) { VonageClient client = VonageClient.builder() .apiKey("your_api_key") .apiSecret("your_api_secret") .build();
TextMessage message = new TextMessage( "VonageAPI", // المرسل (حتى 11 حرفًا) "79261234567", // المستلم "اختبار من Java عبر Vonage" ); SmsSubmissionResponse response = client.getSmsClient().submitMessage(message); if (response.getMessages().get(0).getStatus() == MessageStatus.OK) { System.out.println("تم إرسال رسالة SMS بنجاح."); } }}3. العمل مع بوابات SMS عبر عميل HTTP (OkHttp, Apache HttpClient)
إذا كنت تفضل البساطة ولا تريد إضافة حزم SDK ثقيلة، يمكنك إرسال طلبات HTTP مباشرة إلى API أي مزود SMS (مثل sms.ru, smsc.ru).
مثال باستخدام OkHttp لبوابة افتراضية:
import okhttp3.*;
public class HttpSmsSender { private static final String API_URL = "https://api.smsgateway.com/send"; private static final Str