إرسال SMS بلغة Java: نظرة عامة على مكتبات API وأمثلة التكامل
لا يزال إرسال رسائل SMS وظيفة مطلوبة للعديد من تطبيقات Java الحديثة: بدءًا من المصادقة الثنائية والإشعارات وصولاً إلى الحملات التسويقية. في هذه المقالة، سنستعرض الطرق الرئيسية لدمج وظيفة SMS في مشاريع Java، بما في ذلك استخدام واجهات برمجة التطبيقات السحابية الشهيرة (Twilio, Nexmo) والتفاعل المباشر مع بوابة SMS. ستتعلم كيفية ربط المكتبة، وتكوين العميل، وإرسال أول رسالة.
1. لماذا نستخدم مكتبات API لإرسال SMS؟
يتطلب العمل اليدوي مع بروتوكول SMPP أو الاتصال المباشر بمودم GSM معرفة عميقة بالاتصالات السلكية واللاسلكية وغالبًا ما يؤدي إلى مشاكل في الموثوقية. المكتبات الجاهزة تحل هذه المهام "بشكل فوري":
- سهولة التكامل — فقط أضف التبعية في Maven/Gradle.
- الموثوقية — يضمن المزودون التسليم ويوفرون المراقبة.
- دعم Unicode — تتم معالجة الأحرف السيريلية والأحرف الخاصة تلقائيًا.
- حالات التسليم — تعرف دائمًا ما إذا تم استلام الرسالة.
- قابلية التوسع — تتعامل الخدمات السحابية مع آلاف الطلبات في الثانية.
2. Twilio: المكتبة الأكثر شهرة لـ SMS
Twilio هو المعيار الفعلي لإرسال رسائل SMS والصوت. يتيح لك Java SDK دمج الوظيفة في دقائق.
2.1. الربط
أضف التبعية في ملف pom.xml (Maven):
<dependency> <groupId>com.twilio.sdk</groupId> <artifactId>twilio</artifactId> <version>9.10.0</version></dependency>2.2. إرسال 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("+71234567890"), // رقم المستلم new PhoneNumber("+79876543210"), // رقم المرسل (من Twilio) "مرحبًا! هذه رسالة SMS اختبارية من تطبيق Java.") .create();
System.out.println("تم إرسال SMS. المعرف: " + message.getSid()); }}هام: يجب أن تكون الأرقام بالتنسيق الدولي (E.164).
التكلفة: تفرض Twilio رسومًا على كل رسالة (حوالي $0.0079 لروسيا). يوجد رصيد اختباري مجاني.
3. Nexmo (Vonage): بديل بأسعار مرنة
تقدم Nexmo (الآن جزء من Vonage) أيضًا Java SDK. تتميز المكتبة ببناء جملة بسيط ودعم جيد للأحرف السيريلية.
3.1. الربط
<dependency> <groupId>com.vonage</groupId> <artifactId>server-sdk</artifactId> <version>6.5.0</version></dependency>3.2. مثال على الإرسال
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 NexmoSms { public static void main(String[] args) { VonageClient client = VonageClient.builder() .apiKey("your_api_key") .apiSecret("your_api_secret") .build();
TextMessage message = new TextMessage( "Vonage APIs", "71234567890", "اختبار SMS من Nexmo على Java" );
SmsSubmissionResponse response = client.getSmsClient().submitMessage(message); if (response.g