إرسال الرسائل القصيرة (SMS) باستخدام Kotlin: مكتبة API للتكامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

إرسال الرسائل القصيرة (SMS) باستخدام Kotlin: مكتبة API للتكامل السريع



في تطوير الويب الحديث، تظل إمكانية إرسال رسائل SMS برمجيًا ميزة مطلوبة - بدءًا من المصادقة الثنائية وصولاً إلى إشعارات حالة الطلب. إذا كنت تستخدم Kotlin للجزء الخادم (Ktor، Spring Boot) أو تطبيق الجوال (Android)، فستحتاج إلى أداة موثوقة للعمل مع مزودي خدمة SMS. في هذه المقالة، سنستعرض مكتبة API لإرسال الرسائل القصيرة (SMS) باستخدام Kotlin، وإمكانياتها، وأمثلة على التكامل، وأفضل الممارسات.



ما هي مكتبة API لإرسال الرسائل القصيرة (SMS)؟



مكتبة API هي مجموعة من الفئات والوظائف التي تُجرّد العمل مع طلبات HTTP إلى خادم مزود خدمة SMS. بدلاً من تشكيل URL يدويًا والرؤوس وتحليل JSON، يمكنك استدعاء دوال Kotlin بسيطة: sendSms(phone, message). تتولى المكتبة مسؤولية المصادقة، والتسلسل، وإعادة المحاولة عند أخطاء الشبكة، ومعالجة الردود.



الإمكانيات الرئيسية للمكتبة



  • إرسال SMS بسيط - تحديد رقم المستلم والنص واختياريًا اسم المرسل (الاسم الأبجدي).
  • إرسال جماعي - إرسال رسالة واحدة إلى قائمة من الأرقام.
  • التحقق من الحالة - الحصول على معلومات حول التسليم (تم التسليم، في قائمة الانتظار، خطأ).
  • دعم مزودين مختلفين - Twilio، Vonage (Nexmo)، SMSC.ru، Smsc.ua وغيرهم.
  • عدم التزامن - جميع الدوال تُرجع دوال suspend أو Deferred للكوروتينات.
  • تسجيل الأخطاء ومعالجتها - آليات مدمجة لتصحيح الأخطاء.


التثبيت والإعداد



يتم توزيع المكتبة عبر Maven Central أو JitPack. أضف التبعية في ملف build.gradle.kts:



// build.gradle.kts (لـ Gradle Kotlin DSL)dependencies {    implementation("com.example:sms-api:1.0.0")    // إذا كنت تستخدم Ktor Client    implementation("io.ktor:ktor-client-core:2.3.0")    implementation("io.ktor:ktor-client-okhttp:2.3.0")}


بالنسبة لنظام Android، أضف أيضًا إذن الوصول إلى الإنترنت في ملف AndroidManifest.xml.



مثال أساسي لإرسال SMS



لنستعرض مثالًا بسيطًا لإرسال رسالة واحدة عبر مزود SMSC.ru (وبالمثل للمزودين الآخرين).



import com.example.smsapi.SmsClientimport com.example.smsapi.model.SmsRequestimport com.example.smsapi.model.SmsResponse

suspend fun sendSingleSms() { // إنشاء عميل ببيانات الاعتماد val client = SmsClient.create( login = "your_login", password = "your_password", provider = SmsProvider.SMSC )

// تشكيل الطلب val request = SmsRequest( phone = "+71234567890", message = "رمز التحقق الخاص بك: 1234", sender = "MyApp" // الاسم الأبجدي، إذا كان مدعومًا )

// الإرسال والحصول على الرد val response: SmsResponse = client.send(request)

when (response.status) { SmsStatus.SUCCESS -> println("تم إرسال SMS، المعرف: ${response.id}") SmsStatus.ERROR -> println("خطأ: ${response.errorMessage}") else -> println("حالة غير معروفة") }}


الإرسال الجماعي



لإرسال رسالة واحدة إلى عدة أرقام، استخدم الدالة sendBatch:



val phones = listOf("+71234567890", "+70987654321", "+71112223344")val batchRequest = BatchSmsRequest(    phones = phones,    message = "عملاؤنا الأعزاء، تم تمديد العرض حتى الجمعة!",    sender = "ShopBot")

val batchResponse = client.sendBatch(batchRequest)batchResponse.results.forEach { result -> println("الهاتف: ${result.phone}، الحالة: ${result.status}")}


المعالجة غير المتزامنة مع الكوروتينات



المكتبة كاملة

توصيات