كيفية استقبال رسالة SMS في Kotlin
أبسط طريقة لإرسال رسائل SMS من Kotlin هي استخدام واجهة برمجة تطبيقات HTTP/Rest المدمجة لبوابة Ozeki SMS. عند استخدام هذه الواجهة، ستقوم بإرسال رسائل SMS عن طريق إرسال طلب HTTP Post إلى بوابة الرسائل القصيرة. سيحتوي طلب HTTP Post على رسالة مُنسقة بتنسيق json. ستقوم بوابة الرسائل القصيرة بإرسال هذه الرسالة إلى هاتف المستلم، وسيتم إرجاع استجابة HTTP 200 OK لطلبك. (الشكل 1)
كود Kotlin لاستقبال رسائل SMS على الهاتف المحمول
يوضح مثال كود Kotlin للرسائل القصيرة أدناه كيف يمكنك استقبال رسالة (أو رسائل) SMS باستخدام واجهة برمجة تطبيقات HTTP Rest لبوابة Ozeki SMS باستخدام مكتبة Kotlin Ozeki.Libs.Rest. هذه المكتبة مقدمة لك مجانًا، ويمكنك استخدامها وتعديلها في أي من مشاريعك.
MainActivity.kt
package receive.sms import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import Ozeki.Libs.Rest.* import android.widget.ArrayAdapter import kotlinx.coroutines.* class MainActivity : AppCompatActivity() { @DelicateCoroutinesApi override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val listMessages:android.widget.ListView = findViewById(R.id.listMessages) val btnSendRequest:android.widget.Button = findViewById(R.id.btnSendRequest) val configuration = Configuration( username = "http_user", password = "qwe123", apiurl = "http://10.0.2.2:9509/api" ) val messages_label : ArrayList<Message> = arrayListOf() val arrayAdapter = ArrayAdapter<Message>(this, android.R.layout.simple_list_item_1, messages_label) listMessages.adapter = arrayAdapter val api = MessageApi(configuration) btnSendRequest.setOnClickListener { GlobalScope.launch(Dispatchers.IO) { val result = api.DownloadIncomming() val messages = result.Messages for (index in 0 until messages.size) { messages_label.add(messages.get(index)) } } arrayAdapter.notifyDataSetChanged() } } }
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/btnSendRequest" android:layout_width="320dp" android:layout_height="wrap_content" android:layout_marginTop="24dp" android:backgroundTint="#FF3F3F" android:text="تحميل الوارد" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.505" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/listMessages" /> <TextView android:id="@+id/textMessages" android:layout_width="320dp" android:layout_height="wrap_content" android:layout_marginTop="24dp" android:text="الرسائل" android:textAlignment="center" android:textSize="22sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.505" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <ListView android:id="@+id/listMessages" android:layout_width="320dp" android:layout_height="500dp" android:layout_marginTop="24dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textMessages" /> </androidx.constraintlayout.widget.ConstraintLayout>
كيفية استخدام مثال Kotlin للرسائل القصيرة:
يمكنك استخدام فئة MessageApi لـ استقبال رسالة (أو رسائل) SMS من بوابة الرسائل القصيرة. سيتم توجيه طلبك من جهازك إلى بوابة الرسائل القصيرة عبر الإنترنت.
تحميل ReceiveSms.kt
يمكن تنزيل كود المصدر الموضح في هذه المقالة واستخدامه وتعديله مجانًا.
تحميل: ReceiveSms.kt.zip (148 كيلوبايت)
ما الموجود في ملف ReceiveSms.kt.zip؟
يحتوي ملف ReceiveSms.kt.zip على مشروع مثال، والذي يتضمن مكتبة Ozeki.Libs.Rest. باستخدام هذه المكتبة، يمكنك إرسال وحذف وتمييز واستقبال رسائل SMS عن طريق إنشاء MessageApi واستخدام الطرق Send() وDelete() وMark() وReceive(). (الشكل 2)
كيفية استقبال رسائل SMS باستخدام Kotlin (خطوات سريعة)
لاستقبال رسائل SMS باستخدام Kotlin:
- تثبيت Ozeki SMS Gateway
- توصيل Ozeki SMS Gateway بشبكة الهاتف المحمول
- إرسال رسالة SMS تجريبية من واجهة Ozeki
- إنشاء مستخدم لواجهة برمجة تطبيقات HTTP للرسائل القصيرة
- Android Studio
- تحميل مشروع المثال أعلاه
- إنشاء واجهة برمجة تطبيقات لتنزيل الرسائل الواردة
- استخدام طريقة DownloadIncoming() لاستقبال رسائلك
- قراءة رسالة الاستجابة على وحدة التحكم
- التحقق من السجلات في بوابة الرسائل القصيرة
تثبيت بوابة Ozeki للرسائل القصيرة وإنشاء مستخدم واجهة برمجة التطبيقات HTTP
لتتمكن من استقبال الرسائل القصيرة باستخدام Kotlin، تحتاج أولاً إلى تثبيت بوابة Ozeki للرسائل القصيرة. يمكن تثبيت بوابة الرسائل القصيرة على نفس الكمبيوتر الذي تقوم فيه بتطوير كود Kotlin في Android Studio. بعد التثبيت، تكون الخطوة التالية هي ربط بوابة Ozeki للرسائل القصيرة بشبكة الهاتف المحمول. يمكنك إنشاء مستخدم لواجهة برمجة التطبيقات HTTP للرسائل القصيرة. قم بإنشاء مستخدم باسم مستخدم "http_user"، وكلمة مرور "qwe123" لجعل المثال يعمل دون تعديل.
بعد إعداد البيئة، يمكنك تشغيل كود Kotlin الخاص بك.
رابط واجهة برمجة التطبيقات HTTP لإرسال الرسائل القصيرة من Kotlin
لاستقبال الرسائل القصيرة باستخدام Kotlin، سيتعين على Kotlin إرسال طلب HTTP إلى بوابة الرسائل القصيرة. رابط واجهة برمجة التطبيقات موضح أدناه. لاحظ أنه يجب استبدال عنوان IP (127.0.0.1) بعنوان IP الخاص ببوابة الرسائل القصيرة لديك. إذا تم تثبيت بوابة Ozeki للرسائل القصيرة على نفس الكمبيوتر الذي يعمل عليه تطبيق الرسائل القصيرة JavaScript، يمكن أن يكون هذا 127.0.0.1. إذا تم تثبيته على كمبيوتر مختلف، فيجب أن يكون عنوان IP لذلك الكمبيوتر.
http://127.0.0.1:9509/api?action=rest
مصادقة HTTP لاستقبال الرسائل القصيرة باستخدام Kotlin
لمصادقة عميل الرسائل القصيرة Kotlin، تحتاج إلى إرسال اسم المستخدم وكلمة المرور في سلسلة مشفرة بـ base64 إلى الخادم في طلب HTTP. التنسيق المستخدم هو: base64(username+":"+password). في Kotlin، يمكنك استخدام الكود التالي لإجراء هذا التشفير:
var usernamePassword = "%s:%s".format(username, password) return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
على سبيل المثال، إذا قمت بتشفير اسم المستخدم 'http_user' وكلمة المرور 'qwe123'، ستحصل على السلسلة المشفرة بـ base64 التالية: aHR0cF91c2VyOnF3ZTEyMw==. للإرسال
رأس طلب HTTP لإرسال الرسائل القصيرة من Kotlin
لاستقبال الرسالة/الرسائل القصيرة، تحتاج إلى تضمين الأسطر التالية كرؤوس في طلب HTTP. لاحظ أننا نضمن نوع المحتوى ورأس المصادقة.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
طلب HTTP لاستقبال الرسائل القصيرة باستخدام Kotlin
لاستقبال الرسالة/الرسائل القصيرة الواردة، سيرسل تطبيق Kotlin الخاص بك طلب HTTP مشابه للطلب أدناه. لاحظ أن هذا الطلب يحتوي على جزء رأس HTTP وجزء جسم HTTP. جسم HTTP هو سلسلة بيانات مشفرة بـ JSON. يحتوي على رقم المستلم ونص الرسالة.
GET /api?action=receivemsg&folder=inbox HTTP/1.1 Connection: Keep-Alive Accept-Encoding: gzip Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw== Host: 10.0.2.2:9509 User-Agent: okhttp/4.2.2
استجابة HTTP التي يتلقاها مثال الرسائل القصيرة Kotlin
بمجرد أن تتلقى بوابة الرسائل القصيرة هذا الطلب، ستقوم بإنشاء استجابة HTTP. ستحتوي استجابة HTTP على رمز حالة للإشارة إلى ما إذا كان طلب إرسال الرسالة القصيرة ناجحًا أم لا. كما ستعود بهيكل مشفر بـ JSON لتزويدك بتفاصيل مفيدة حول إرسال الرسالة.
HTTP/1.1 200 OK User-Agent: OZEKI 10.3.120 (www.myozeki.com) Content-Type: application/json; charset=utf8 Last-Modified: Thu, 17 Jun 2021 16:10:48 GMT Server: 10/10.3.120 Transfer-Encoding: chunked { "http_code": 200, "response_code": "SUCCESS", "response_msg": "", "data": { "folder": "inbox", "limit": "1000", "data": [ { "message_id": "ada7ee44-aefc-e746-9376-b76e3674442a", "from_connection": "http_user@localhost", "from_address": "+36203333333", "from_station": "%", "to_connection": "http_user@localhost", "to_address": "http_user", "to_station": "%", "text": "Hello world 3", "create_date": "2021-06-17 16:09:11", "valid_until": "2021-06-24 16:09:11", "time_to_send": "2021-06-17 16:09:11", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": true, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ] }, { "message_id": "fccc6211-c710-c80e-a28f-664ff8b0e964", "from_connection": "http_user@localhost", "from_address": "+36201111111", "from_station": "%", "to_connection": "http_user@localhost", "to_address": "http_user", "to_station": "%", "text": "Hello world 1", "create_date": "2021-06-17 16:09:11", "valid_until": "2021-06-24 16:09:11", "time_to_send": "2021-06-17 16:09:11", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": true, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ] }, { "message_id": "ba782a64-05cd-8ba8-9f4c-e8597ca30b59", "from_connection": "http_user@localhost", "from_address": "+36202222222", "from_station": "%", "to_connection": "http_user@localhost", "to_address": "http_user", "to_station": "%", "text": "Hello world 2", "create_date": "2021-06-17 16:09:11", "valid_until": "2021-06-24 16:09:11", "time_to_send": "2021-06-17 16:09:11", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": true, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ] } ] } }
كيفية استقبال رسائل SMS باستخدام Kotlin باستخدام واجهة برمجة تطبيقات الرسائل القصيرة ومشروع المثال أعلاه (فيديو تعليمي)
يوضح لك هذا الفيديو كيفية تنزيل واستخدام مشروع ReceiveSms.kt. بمجرد فتح مشروع المثال، قد تلاحظ وجود حزمة تسمى Ozeki.Libs.Rest. هذه هي الحزمة التي تحتوي على MessageApi وكل ما تحتاجه لاستقبال رسالة (رسائل) SMS باستخدام Kotlin.
كيفية التحقق من قبول الطلب من قبل مستخدم HTTP
بعد إرسال الرسالة القصيرة، من الجيد التحقق من بوابة الرسائل القصيرة الخاصة بك لمعرفة ما تم استلامه. يمكنك التحقق من السجل عن طريق فتح تفاصيل مستخدم HTTP من وحدة تحكم إدارة بوابة Ozeki SMS. في نهاية الفيديو أعلاه، يمكنك رؤية كيفية التحقق مما إذا كان الطلب قد تم استلامه من قبل http_user. (الشكل 3)
كيف يبدو استخدام التطبيق على الهاتف (فيديو تعليمي)
في الشكل 4، يمكنك رؤية كيف يبدو استخدام التطبيق على الهاتف. كما ترى في صورة قبل، افتراضيًا ليس لديك أي رسائل واردة. اضغط على 'تنزيل الوارد' للحصول على الرسائل المرسلة إليك. في صورة بعد، يمكنك رؤية أن جميع المعلومات حول الرسالة مرئية عند تنزيلها.
كيفية إضافة Ozeki.Libs.Rest إلى مشروعك الخاص
يمكن تنزيل واستخدام وتعديل مكتبة Ozeki.Libs.Rest مجانًا.
تنزيل: Ozeki.Libs.Rest.kt.zip (7.66 كيلوبايت)
إذا قررت إنشاء تطبيقك بنفسك فقط باستخدام مكتبة Ozeki.Libs.Rest، فهناك بعض الأشياء التي يجب تغييرها في تطبيقك الأساسي. لاستخدام مكتبة Ozeki.Libs.Rest، يجب وضعها في مجلد java في الدليل الرئيسي
في الفيديو التالي، سأوضح لك كيفية تنزيل وإضافة مكتبة Ozeki.Libs.Rest إلى مشروعك الخاص.
التبعيات
من المهم ذكر أن مكتبة Ozeki.Libs.Rest لديها بعض التبعيات. لاستخدامها، يجب إضافة هذه التبعيات إلى Gradle Scripts.
implementation "com.squareup.okhttp3:okhttp:4.2.2" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'
إضافة التبعيات (فيديو تعليمي)
في الفيديو التالي، سترى كيفية إرفاق التبعيات المذكورة سابقًا. سيبدأ بنسخ الكود وسيأخذك إلى التبعيات المضافة بنجاح. الفيديو مدته 53 ثانية فقط، لكنه يحتوي على جميع الخطوات المطلوبة لإكمال الطريقة. يمكنك متابعة هذا البرنامج التعليمي دون أي جهد.
الوصول إلى الإنترنت
لتمكين تطبيقك من إرسال طلب HTTP، يجب تمكين تطبيقك للاتصال بالإنترنت.
في الفيديو التالي، سأوضح لك كيفية تمكين الوصول إلى الإنترنت لتطبيق Kotlin الخاص بك.
<uses-permission android:name="android.permission.INTERNET" />
android:usesCleartextTraffic="true"
كيفية إضافة اتصال بالإنترنت إلى مشروعك (فيديو تعليمي)
تحتاج إلى إضافة كلتا هاتين السطور إلى ملف AndroidManifest.xml.
في الفيديو التالي، سأوضح لك أين يجب إدراج الأكواد أعلاه. سيبدأ الفيديو بنسخ الكود وسيأخذك إلى اتصال الإنترنت المضاف بنجاح. هذا الفيديو دقيق وسهل المتابعة.
الختام
تم كتابة هذا الدليل لإظهار خطوات استقبال الرسائل القصيرة (SMS) باستخدام لغة Kotlin عبر مستخدم HTTP الخاص ببوابة Ozeki للرسائل القصيرة. هذا الحل يساعدك في جمع الرسائل التي تستقبلها في مجلد الوارد ونقلها إلى برنامجك المكتوب بلغة Kotlin. استخدام هذا الحل يمنحك القدرة على الحفاظ على نظام مراسلتك منظمًا كما خططت.
هذه مجرد البداية، تعلم المزيد حول إدارة رسائلك على صفحة Ozekي الإلكترونية. لتبقى فعالًا ومحدثًا، رتب رسائلك، واقرأ المقال التالي حول كيفية حذف رسالة SMS في Kotlin.
لنبدأ العمل، قم بإعداد بوابة Ozeki للرسائل القصيرة الآن!
More information
- إرسال الرسائل القصيرة باستخدام Kotlin مع واجهة برمجة تطبيقات REST HTTP (عينة كود)
- إرسال رسائل متعددة باستخدام Kotlin مع واجهة برمجة تطبيقات REST HTTP (عينة كود)
- جدولة الرسائل القصيرة باستخدام Kotlin مع واجهة برمجة تطبيقات REST HTTP (عينة كود)
- استقبال الرسائل القصيرة باستخدام Kotlin مع واجهة برمجة تطبيقات REST HTTP (عينة كود)
- حذف الرسائل القصيرة باستخدام Kotlin مع واجهة برمجة تطبيقات REST HTTP (عينة كود)
- Github: واجهة برمجة تطبيقات الرسائل القصيرة لـ Kotlin