كيفية جدولة رسالة 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# لإرسال الرسائل القصيرة أدناه كيفية إرسال الرسائل القصيرة باستخدام واجهة برمجة تطبيقات HTTP Rest الخاصة ببوابة Ozeki SMS باستخدام مكتبة Ozeki.Libs.Rest في F#. هذه المكتبة مقدمة لك مجانًا، ويمكنك استخدامها وتعديلها في أي من مشاريعك.

Program.fs
open System
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 msg = new Message(
        ToAddress = "+36201111111", 
        Text = "Hello, World!",
        TimeToSend = DateTime.Parse("2021-06-07 11:44:00"))

    let api = new MessageApi(configuration)

    let result = api.Send(msg)

    printfn $"{result.ToString()}"
    0

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

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

تنزيل SendScheduledSms.fs

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

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

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

الشكل 2 - ما الموجود داخل SendScheduledSms.fs.zip

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

لإرسال رسالة SMS من F#:

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

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

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

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

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

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

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

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

لمصادقة عميل F# لإرسال الرسائل القصيرة، تحتاج إلى إرسال اسم المستخدم وكلمة المرور في سلسلة مشفرة بـ 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 لإرسال رسائل SMS مجدولة من F#

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

POST /api?action=sendmsg HTTP/1.1
Connection: Keep-Alive
Content-Length: 336
Content-Type: application/json
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509

{
  "messages": [
    {
      "message_id": "d51ca3ba-4159-4dee-8541-106f8df76f91",
      "to_address": "+36201111111",
      "text": "Hello, World!",
      "create_date": "2021-06-11 14:09:22",
      "valid_until": "2021-06-18 14:09:22",
      "time_to_send": "2021-06-11 14:44:00",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": true,
      "tags": []
    }
  ]
}

استجابة HTTP المستلمة من مثال F# لرسائل SMS

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

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.118 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Fri, 11 Jun 2021 08:44:45 GMT
Server: 10/10.3.118
Transfer-Encoding: chunked

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Messages queued for delivery.",
  "data": {
    "total_count": 1,
    "success_count": 1,
    "failed_count": 0,
    "messages": [
      {
        "message_id": "04682902-5360-4189-8082-ab455433d141",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Hello, World!",
        "create_date": "2021-06-11 14:09:22",
        "valid_until": "2021-06-18 14:09:22",
        "time_to_send": "2021-06-11 14:44:00",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}

مثال F# لرسائل SMS: SendScheduledSms.sln



كيفية تنزيل ملف المشروع من صفحة التنزيل (فيديو تعليمي)

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

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

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

الشكل 3 - SendScheduledSms.sln

كيفية استخدام مشروع الرسائل المجدولة (فيديو تعليمي)

في هذا الفيديو، ستتعلم كيفية استخدام المشروع لإرسال رسائل SMS مجدولة. سيبدأ الفيديو بفتح بوابة Ozeki SMS وسيأخذك حتى التحقق من مجلد المؤجل المليء بالرسائل. يبلغ طول الفيديو 1:26 دقيقة وهو مفصل جدًا. بفضل ذلك، لن تواجه أي مشكلة في اتباع البرنامج التعليمي.

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

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

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

الختام

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

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

الآن الشيء الوحيد المتبقي هو تنزيل بوابة Ozeki SMS وليبدأ العمل!

More information