إرسال SMS باستخدام Kotlin: مكتبة API sms-client-kotlin
غالبًا ما تتطلب تطبيقات الهاتف المحمول الحديثة والحلول الخادمة التكامل مع بوابات SMS لإرسال الإشعارات أو التأكيدات أو الرسائل التسويقية. بالنسبة للغة Kotlin، توجد مكتبة ملائمة sms-client-kotlin توفر واجهة برمجة تطبيقات بسيطة وآمنة من حيث النوع للعمل مع مزودي خدمات SMS المشهورين. في هذه المقالة، سنقوم بتحليل بنيتها وطرقها وأمثلة استخدامها بالتفصيل.
ما هي sms-client-kotlin؟
مكتبة sms-client-kotlin هي عميل HTTP خفيف الوزن مكتوب بلغة Kotlin النقية باستخدام coroutines. تقوم بتجريد العمل مع REST API لمختلف مزودي SMS (مثل Twilio و Vonage و SMS-Tsentr) وتوفر واجهة موحدة لإرسال الرسائل. المزايا الرئيسية:
- غير متزامنة — يتم تنفيذ جميع الطلبات عبر coroutines في Kotlin.
- أمان النوع — كتابة صارمة لمعاملات الطلبات والردود.
- قابلية التوسع — دعم عدة مزودين من خلال واجهة موحدة
SmsSender. - إعداد سهل — الحد الأدنى من التبعيات.
التثبيت والإعداد
لإضافة المكتبة إلى مشروعك، استخدم Gradle. أضف التبعية إلى ملف build.gradle.kts:
dependencies { implementation("com.github.sms-client:sms-client-kotlin:1.2.0") implementation("io.ktor:ktor-client-core:2.3.0") implementation("io.ktor:ktor-client-cio:2.3.0") // أو محرك آخر}بعد مزامنة المشروع، يمكنك إنشاء نسخة من العميل. مثال على التهيئة لمزود Twilio:
import sms.client.SmsClientimport sms.client.provider.twilio.TwilioConfig
fun main() { val config = TwilioConfig( accountSid = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authToken = "your_auth_token_here", fromNumber = "+1234567890" )
val client = SmsClient.create(config)}الطرق الرئيسية لواجهة API
توفر المكتبة عدة طرق رئيسية لإرسال وإدارة الرسائل النصية القصيرة:
1. إرسال رسالة واحدة
الطريقة sendSms تستقبل رقم المستلم ونص الرسالة. تُرجع كائن SmsResult بمعلومات حول الإرسال.
suspend fun sendSingleMessage(client: SmsClient) { val result = client.sendSms( to = "+79876543210", message = "مرحبًا! هذه رسالة اختبارية من Kotlin." )
when (result) { is SmsResult.Success -> println("تم الإرسال! المعرف: ${result.messageId}") is SmsResult.Failure -> println("خطأ: ${result.errorMessage}") }}2. الإرسال الجماعي
لإرسال رسائل جماعية، استخدم الطريقة sendBatch. تستقبل قائمة بالمستلمين ونصًا مشتركًا (أو رسائل فردية).
suspend fun sendBatch(client: SmsClient) { val recipients = listOf( BatchRecipient("+79111111111", "خصم 10% على أول طلب!"), BatchRecipient("+79222222222", "رمز التأكيد الخاص بك: 1234") )
val batchResult = client.sendBatch(recipients) println("تم الإرسال بنجاح: ${batchResult.successCount}، أخطاء: ${batchResult.failureCount}")}3. التحقق من حالة التسليم
الطريقة getDeliveryStatus تسمح بالحصول على الحالة الحالية لرسالة تم إرسالها مسبقًا باستخدام معرفها.
suspend fun checkStatus(client: SmsClient, messageId: String) { val status = client.getDeliveryStatus(messageId) println("حالة الرسالة $messageId: ${status.status} (${status.description})")}معالجة الأخطاء والاستثناءات
تستخدم المكتبة الآليات القياسية في Kotlin لمعالجة الأخطاء. جميع الأخطاء الشبكية