كيفية إرسال رسالة نصية من F#

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

كيفية إرسال رسالة نصية من F#
الشكل 1 - كيفية إرسال رسالة نصية من F#

مثال كود إرسال رسالة نصية من F#

Program.fs
open System
open Ozeki.Libs.Rest

[]
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!")

    let api = new MessageApi(configuration)

    let result = api.Send(msg)

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

تحميل SendSms.fs

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

ما الموجود في ملف SendSms.fs.zip؟

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

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

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

لإرسال رسالة نصية من F#:

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

كيفية كتابة أول برنامج لك بلغة F# (أوامر سريعة)

لكتابة أول برنامج لك بلغة F#:

  1. قم بإعداد Visual Studio
  2. قم بتنزيل ملف SendSms.fs.zip
  3. استخرج ملف .zip من مجلد التنزيلات
  4. افتح ملف SendSms.sln في Visual Studio
  5. قم بتشغيل تطبيق بوابة Ozeki SMS
  6. انقر على مستخدم HTTP في علامة تبويب المستخدمين والتطبيقات
  7. قم بتشغيل SendSMS.fs في Visual Studio
  8. تحقق من صندوق المرسلة في بوابة Ozeki SMS
  9. حدد اتصال عميل SMPP في الصفحة الرئيسية
  10. حدد جميع مربعات اختيار مستوى السجل في علامة التبويب المتقدمة في قائمة التكوين
  11. قم بتشغيل Program.fs مرة أخرى في Visual Studio
  12. ابحث عن الحدث إذا تلقى المستلم رسالتك

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

لتتمكن من إرسال رسائل SMS من F#، تحتاج أولاً إلى تثبيت بوابة Ozeki SMS. يمكن تثبيت بوابة الرسائل النصية على نفس الكمبيوتر الذي تقوم فيه بتطوير كود F# في Visual Studio. بعد التثبيت، تكون الخطوة التالية هي توصيل بوابة Ozeki SMS بشبكة الهاتف المحمول. يمكنك إنشاء مستخدم لواجهة برمجة تطبيقات 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:9511

{
  "messages": [
    {
      "message_id": "9380ab2d-a185-4cc1-abad-c18ec459e40f",
      "to_address": "+36201111111",
      "text": "Hello, World!",
      "create_date": "2021-06-11 13:45:30",
      "valid_until": "2021-06-18 13:45:30",
      "time_to_send": "2021-06-11 13:45:30",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": true,
      "tags": []
    }
  ]
}

استجابة 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: Fri, 11 Jun 2021 13:06:37 GMT
Server: 10/10.3.116
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": "9380ab2d-a185-4cc1-abad-c18ec459e40f",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Hello, World!",
        "create_date": "2021-06-11 13:45:30",
        "valid_until": "2021-06-18 13:45:30",
        "time_to_send": "2021-06-11 13:45:30",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}

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

يُظهر لك هذا الفيديو كيفية إنشاء مشروع وحدة تحكم جديد بـ .Net core في Visual Studio، وكيفية تسميته إلى SendSms.sln. بمجرد إنشاء الحل، قد تلاحظ أنه تمت إضافة SendSms.fsproj إلى الحل، وبشكل افتراضي يتم فتح ملف Program.cs. يمكنك إعادة تسمية Program.fs إلى SendSms.fs إذا رغبت. سترى أيضًا في الفيديو، كيف يمكن نسخ رمز المثال أدناه إلى ملف Program.fs، وكيف يمكن تجميعه وتنفيذه.

الفيديو 1 - كيفية تنزيل وفتح الحل (فيديو تعليمي)

SendSms.sln

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

الشكل 3 - SendSms.sln

كيفية التحقق من قبول HTTP user للرسالة القصيرة

بعد إرسال الرسالة القصيرة، من الجيد التحقق من بوابة الرسائل القصيرة الخاصة بك، لمعرفة ما تم استلامه. يمكنك التحقق من السجل عن طريق فتح تفاصيل مستخدم HTTP من وحدة تحكم إدارة بوابة Ozeki للرسائل القصيرة. يُظهر لك الفيديو التالي ما الذي يجب البحث عنه.

الفيديو 2 - كيفية إرسال رسائل SMS باستخدام كود F# أعلاه (فيديو تعليمي)

كيفية التحقق من إرسال الرسالة القصيرة إلى شبكة الهاتف المحمول

الخطوة الأخيرة في التحقق من الإجراء هي إلقاء نظرة على سجلات اتصال شبكة الهاتف المحمول. قد تحتاج إلى تشغيل التسجيل في إعدادات الاتصال قبل إرسال الرسالة لرؤية السجلات. إذا تم تمكين التسجيل، فسترى رقم الهاتف والنص الرسالة التي أرسلتها.

الفيديو 3 - كيفية تشغيل التسجيل في بوابة Ozeki للرسائل القصيرة (فيديو تعليمي)

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

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

الختام

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

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

الآن كل ما عليك فعله هو تحميل بوابة Ozeki SMS Gateway والبدء في العمل!

More information