كيفية استقبال رسالة SMS باستخدام F#

أبسط طريقة لإرسال رسائل SMS من F# هي استخدام واجهة برمجة تطبيقات HTTP/Rest المدمجة في بوابة Ozeki SMS. عند استخدام هذه الواجهة، ستقوم بإرسال رسائل SMS عن طريق إرسال طلب HTTP Post إلى بوابة الرسائل القصيرة. سيحتوي طلب HTTP Post على رسالة مُنسقة بتنسيق json. ستقوم بوابة الرسائل القصيرة بإرسال هذه الرسالة إلى هاتف المستلم، وسيتم إرجاع استجابة HTTP 200 OK لطلبك.

كيفية استقبال رسائل SMS باستخدام F#
الشكل 1 - استقبال رسائل SMS باستخدام F#

كود F# لاستقبال رسائل SMS

يوضح مثال كود F# لرسائل SMS أدناه كيف يمكنك استقبال رسائل SMS باستخدام واجهة برمجة تطبيقات HTTP Rest الخاصة ببوابة Ozeki SMS باستخدام مكتبة Ozeki.Libs.Rest في F#. هذه المكتبة مقدمة لك مجانًا، ويمكنك استخدامها وتعديلها في أي من مشاريعك.

Program.fs
open Ozeki.Libs.Rest

[<EntryPoint>]
let main argv =
    let configuration = new Configuration (
        Username = "http_user",
        Password = "qwe123",
        ApiUrl = "http://127.0.0.1:9509/api")

    let api = new MessageApi(configuration)

    let result = api.DownloadIncoming();

    printfn $"There are {result.Length} messages in the inbox folder:"
    for message in result do
        printfn $"From: {message.FromAddress} - Text: {message.Text}"
    0

كيفية استخدام مثال F# لرسائل SMS:

يمكن استخدام مثال F# لرسائل SMS هذا في أي تطبيق .NET أو .NET core. لاستخدامه، يجب عليك إضافة ملف Ozeki.Libs.Rest.dll كمرجع إلى مشروعك. بعد إضافة المرجع، يجب وضع التوجيه using Ozeki.Libs.Rest; في قسم الرأس الخاص بـ كود F# المصدر. سيسمح لك ذلك باستخدام الفئات المقدمة من مكتبة Ozeki.Libs.Rest. يمكنك استخدام فئة MessageApi لـ استقبال الرسائل القصيرة من بوابة الرسائل القصيرة.

تنزيل ReceiveSms.fs

يمكن تنزيل الكود المصدري الموضح في هذه المقالة واستخدامه وتعديله مجانًا.
تنزيل: ReceiveSms.fs.zip (51.2 كيلوبايت)

ما الموجود في ملف ReceiveSms.fs؟

يحتوي ملف ReceiveSms.fs على مكتبة Ozeki.Libs.Rest، والتي تمنحك جميع الأدوات اللازمة لإرسال واستقبال رسائل SMS. ستجد أيضًا مشروع ReceiveSms في ملف zip، والذي يحتوي على الكود المثال ليوضح لك كيفية استقبال رسائل SMS. يتم سرد هذا الكود المثال أدناه.

ما الموجود في ملف zip الخاص بـ Ozeki لاستقبال الرسائل القصيرة
الشكل 2 - ما الموجود داخل ReceiveSms.fs.zip

كيفية استقبال رسائل SMS من F# (خطوات سريعة)

لاستقبال رسائل SMS من F#:

  1. قم بتثبيت بوابة Ozeki SMS
  2. قم بتوصيل بوابة Ozeki SMS بشبكة الهاتف المحمول
  3. أرسل رسالة SMS اختبارية من واجهة Ozeki
  4. قم بإنشاء مستخدم لواجهة برمجة تطبيقات HTTP لرسائل SMS
  5. ابدأ Visual Studio
  6. قم بإنشاء حل يسمى ReceiveSms.sln
  7. أضف مشروع وحدة تحكم F#: ReceiveSms.fsproj
  8. ضع الكود في Program.fs أو ReceiveSms.fs
  9. قم بإنشاء طلب HTTP لاستقبال الرسائل القصيرة
  10. اقرأ استجابة HTTP
  11. اكتب الاستجابة على وحدة التحكم
  12. تحقق من السجلات في بوابة الرسائل القصيرة

قم بتثبيت بوابة Ozeki SMS وأنشئ مستخدمًا لواجهة برمجة تطبيقات HTTP

لتتمكن من إرسال رسائل SMS من F#، تحتاج أولاً إلى إنشاء مستخدم لواجهة برمجة تطبيقات HTTP لرسائل SMS. قم بإنشاء مستخدم باسم مستخدم "http_user"، وكلمة مرور "qwe123" لجعل المثال يعمل دون تعديل.

بعد إعداد البيئة، يمكنك تشغيل كود F# الخاص بك.

رابط واجهة برمجة تطبيقات HTTP لاستقبال رسائل SMS من F#

لإرسال رسائل SMS من F#، سيتعين على F# الخاص بك إصدار طلب HTTP إلى بوابة الرسائل القصيرة. يظهر رابط واجهة برمجة التطبيقات أدناه. لاحظ أنه يجب استبدال عنوان IP (127.0.0.1) بعنوان IP الخاص ببوابة الرسائل القصيرة. إذا تم تثبيت بوابة Ozeki SMS على نفس الكمبيوتر الذي يعمل عليه تطبيق F# لرسائل SMS، يمكن أن يكون هذا 127.0.0.1. إذا تم تثبيته على كمبيوتر مختلف، فيجب أن يكون عنوان IP الخاص بهذا الكمبيوتر.

http://127.0.0.1:9509/api?action=rest

مصادقة HTTP لاستقبال رسائل SMS من F#

لمصادقة عميل F# لرسائل SMS، تحتاج إلى إرسال اسم المستخدم وكلمة المرور في سلسلة مشفرة بـ base64 إلى الخادم في طلب HTTP. التنسيق المستخدم هو: base64(username+":"+password). في C#، يمكنك استخدام الكود التالي لإجراء هذا التشفير:

var encoding = Encoding.GetEncoding("iso-8859-1");
var usernamePassword = username + ":" + password;
var usernamePasswordEncoded = Convert.ToBase64String(encoding.GetBytes(usernamePassword));

على سبيل المثال، إذا قمت بتشفير اسم المستخدم 'http_user' وكلمة المرور 'qwe123'، فستحصل على السلسلة المشفرة بـ base64 التالية: aHR0cF91c2VyOnF3ZTEyMw==. للإرسال

رأس طلب HTTP لاستقبال رسائل SMS من F#

لإرسال رسائل SMS، تحتاج إلى تضمين الأسطر التالية كرؤوس في طلب HTTP. لاحظ أننا نضمن نوع المحتوى ورأس المصادقة.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

طلب HTTP لاستقبال الرسائل القصيرة باستخدام F#

لإرسال الرسالة القصيرة، سيقوم تطبيق F# الخاص بك بإرسال طلب HTTP مشابه للطلب الموضح أدناه. لاحظ أن هذا الطلب يتكون من جزء رأس HTTP وجزء جسم HTTP. جسم HTTP هو سلسلة بيانات مشفرة بتنسيق JSON. يحتوي على رقم المستلم ونص الرسالة.

GET /api?action=receivemsg&folder=inbox HTTP/1.1
Connection: Keep-Alive
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
	

استجابة HTTP المستلمة بواسطة مثال F# للرسائل القصيرة

بمجرد أن يستقبل بوابة الرسائل القصيرة هذا الطلب، ستقوم بإنشاء استجابة HTTP. ستحتوي استجابة HTTP على رمز حالة، للإشارة إلى ما إذا كان طلب إرسال الرسالة ناجحًا أم لا. كما ستعود ببنية مشفرة بتنسيق JSON لتزويدك بتفاصيل مفيدة حول إرسال الرسالة.

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.116 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Thu, 10 Jun 2021 11:02:26 GMT
Server: 10/10.3.116
Transfer-Encoding: chunked
{
	"http_code": 200,
	"response_code": "SUCCESS",
	"response_msg": "",
	"data": {
	  "folder": "inbox",
	  "limit": "1000",
	  "data": [
	    {
	      "message_id": "94219121-e5b5-4845-9721-074f5307c9a4",
	      "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-10 11:46:16",
	      "valid_until": "2021-06-17 11:46:16",
	      "time_to_send": "2021-06-10 11:46:16",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    },
	    {
	      "message_id": "d6f832b2-dbc8-4b1b-8b47-44b3bb6658bf",
	      "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-10 11:46:16",
	      "valid_until": "2021-06-17 11:46:16",
	      "time_to_send": "2021-06-10 11:46:16",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    },
	    {
	      "message_id": "0bf86b3a-e4a9-4d8e-970c-ed486b02db7a",
	      "from_connection": "http_user@localhost",
	      "from_address": "+362011111111",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 1",
	      "create_date": "2021-06-10 11:46:16",
	      "valid_until": "2021-06-17 11:46:16",
	      "time_to_send": "2021-06-10 11:46:16",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    }
	  ]
	}
}
	

مثال F# للرسائل القصيرة: ReceiveSms.sln

كيفية تنزيل مشروع ReceiveSms.sln (فيديو تعليمي)

في هذا الفيديو، ستتعلم كيفية تنزيل مشروع F# المثال. سيبدأ الفيديو بصفحة التنزيل وسينتهي بالمشروع المفتوح. ستتعلم كيفية تنزيل المشروع وما يجب فعله لاستقبال رسائل SMS. يبلغ طول الفيديو 58 ثانية فقط، ولكنه مفيد جدًا. بفضل هذه التفاصيل، لن تواجه أي مشكلة في اتباع الخطوات.

الفيديو 1 - كيفية تنزيل وتشغيل المشروع المثال أعلاه (فيديو تعليمي)

كود المثال أدناه هو جزء من حل Visual Studio ReceiveSms.sln. يمكن أن يحتوي حل Visual Studio على مشاريع وملفات متعددة. في هذا الحل يوجد مشروعان فقط: ReceiveSms.fsproj, Ozeki.Libs.Rest.csproj, وملف واحد: Program.fs.

الشكل 3 - ReceiveSms.sln

كيفية استخدام مشروع ReceiveSms.sln (فيديو تعليمي)

في هذا الفيديو، ستتعلم كيفية استخدام المشروع لاستقبال رسائل SMS بمساعدة F#. سيبدأ الفيديو بفتح بوابة Ozeki SMS وسيأخذك حتى التحقق من موجه الأوامر بالرسائل المستلمة. يبلغ طول الفيديو 54 ثانية فقط وهو مفصل جدًا. بفضل ذلك، لن تواجه أي مشكلة في اتباع البرنامج التعليمي.

الفيديو 2 - كيفية استخدام حل ReceiveSms.fs (فيديو تعليمي)

تشغيل مثال F# للرسائل القصيرة على Windows

عند استخدام Windows لتشغيل مثال الرسائل القصيرة هذا المكتوب بلغة F#، ستلاحظ أنك تحصل على أداء أفضل قليلاً مقارنة بتشغيله على Linux. لفهم سبب حدوث ذلك، يجب أن تضع في اعتبارك أن F# تستخدم إطار عمل .NET لتنفيذ الكود. وذلك لأن تنفيذ .NET على Windows مُحسّن للأداء، بينما mono، تنفيذ .NET على Linux، ما زال يحتاج إلى تحسين في هذا المجال.

الختام

لقد شرح المقال أعلاه خطوات استقبال الرسائل القصيرة (SMS) بلغة F# باستخدام بوابة Ozeki للرسائل القصيرة. مع هذا الحل، يمكنك استقبال الرسائل النصية من عملائك إلى برنامجك المكتوب بلغة F# بمساعدة بوابة Ozeki للرسائل القصيرة. من المهم ذكر أن بوابة Ozeki للرسائل القصيرة تعمل في أي بلد ويمكنها إرسال واستقبال الرسائل القصيرة عبر اتصالات متنوعة، لذلك لا داعي للقلق إذا أصبح تبادل المعلومات دوليًا.

لمواصلة رحلة التعلم، قم بزيارة صفحة البرامج التعليمية لـ Ozeki حيث يمكنك العثور على المزيد من المعلومات حول مواضيع مثل الجدولة في F#.

الآن كل ما عليك فعله هو تحميل بوابة Ozeki للرسائل القصيرة والبدء في العمل!

More information