كيفية إرسال رسائل SMS متعددة من F#
أبسط طريقة لإرسال رسائل SMS من F# هي استخدام واجهة برمجة تطبيقات HTTP/Rest المدمجة في بوابة Ozeki SMS. عند استخدام هذه الواجهة، ستقوم بإرسال رسائل SMS عن طريق إرسال طلب HTTP Post إلى بوابة SMS. سيحتوي طلب HTTP Post على رسالة مُنسقة بتنسيق json. ستقوم بوابة SMS بإرسال هذه الرسالة إلى هاتف المستلم، وسيتم إرجاع استجابة HTTP 200 OK لطلبك.
كود F# لإرسال رسائل SMS متعددة إلى الهاتف المحمول
يوضح مثال كود F# لرسائل SMS أدناه كيفية إرسال رسائل SMS باستخدام واجهة برمجة تطبيقات HTTP Rest الخاصة ببوابة Ozeki SMS باستخدام مكتبة Ozeki.Libs.Rest في F#. هذه المكتبة مقدمة لك مجانًا، ويمكنك استخدامها وتعديلها في أي من مشاريعك.
Program.fsopen 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 msg1 = new Message( ToAddress = "+36201111111", Text = "Hello, World 1") let msg2 = new Message( ToAddress = "+36202222222", Text = "Hello, World 2") let msg3 = new Message( ToAddress = "+36203333333", Text = "Hello, World 3") let messages = [msg1; msg2; msg3] let api = new MessageApi(configuration) let result = api.Send(messages) printfn $"{result.ToString()}" 0
كيفية استخدام مثال F# لرسائل SMS:
يمكن استخدام مثال F# لرسائل SMS هذا في أي تطبيق .NET أو .NET core. لاستخدامه، يجب عليك إضافة ملف Ozeki.Libs.Rest.dll كمرجع إلى مشروعك. بعد إضافة المرجع، يجب وضع التوجيه using Ozeki.Libs.Rest; في قسم الرأس الخاص بـ كود F# المصدر. سيسمح لك ذلك باستخدام الفئات المقدمة من مكتبة Ozeki.Libs.Rest. يمكنك استخدام فئة Message لإنشاء رسالة SMS. ويمكنك استخدام فئة MessageApi لإرسال الرسالة SMS إلى بوابة SMS. ستقوم بوابة SMS بإعادة توجيه رسالتك إلى شبكة الهاتف المحمول إما عبر اتصال لاسلكي أو عبر الإنترنت.
تحميل SendMultipleSms.fs
يمكن تنزيل الكود المصدري الموضح في هذه المقالة واستخدامه وتعديله مجانًا.
تحميل: SendMultipleSms.fs.zip (59.6 كيلوبايت)
ما الموجود في ملف SendMultipleSms.fs؟
يحتوي ملف SendMultipleSms.fs على مكتبة Ozeki.Libs.Rest، والتي تمنحك جميع الأدوات اللازمة لإرسال واستقبال رسائل SMS. ستجد أيضًا مشروع SendMultipleSms في ملف zip، والذي يحتوي على كود المثال ليوضح لك كيفية إرسال رسائل SMS متعددة في وقت واحد. يتم سرد كود المثال هذا أدناه.
كيفية إرسال رسائل SMS من F# (خطوات سريعة)
لإرسال رسائل SMS من F#:
- قم بتثبيت بوابة Ozeki SMS
- قم بتوصيل بوابة Ozeki SMS بشبكة الهاتف المحمول
- أرسل رسالة SMS تجريبية من واجهة Ozeki
- قم بإنشاء مستخدم لواجهة برمجة تطبيقات HTTP لرسائل SMS
- ابدأ Visual Studio
- قم بإنشاء حل يسمى SendMultipleSms.sln
- أضف مشروع وحدة تحكم F#: SendMultipleSms.fsproj
- ضع الكود في Program.cs أو SendMultipleSms.fs
- اقرأ استجابة HTTP
- تحقق من السجلات في بوابة SMS
كيفية كتابة أول برنامج لك في F# (خطوات سريعة)
لكتابة أول برنامج لك في F#:
- قم بإعداد Visual Studio
- قم بتنزيل ملف SendMultipleSms.fs.zip
- استخرج ملف .zip من مجلد التنزيلات
- افتح ملف SendMultipleSms.sln في Visual Studio
- شغّل تطبيق بوابة Ozeki SMS
- انقر على مستخدم HTTP في علامة تبويب المستخدمين والتطبيقات
- شغّل Program.fs في Visual Studio
- تحقق من صندوق المرسلة في بوابة Ozeki SMS
تثبيت بوابة Ozeki SMS وإنشاء مستخدم لواجهة برمجة تطبيقات HTTP
لتتمكن من إرسال رسائل SMS من F#، تحتاج أولاً إلى إنشاء مستخدم لواجهة برمجة تطبيقات HTTP لرسائل SMS. قم بإنشاء مستخدم باسم مستخدم "http_user"، وكلمة مرور "qwe123" لجعل المثال يعمل دون تعديل.
بعد إعداد البيئة، يمكنك تشغيل كود F# الخاص بك.
رابط واجهة برمجة تطبيقات HTTP لإرسال رسائل SMS من F#
لإرسال رسائل SMS من F#، سيتعين على كود C# الخاص بك إرسال طلب HTTP إلى بوابة SMS. يظهر رابط واجهة برمجة التطبيقات أدناه. لاحظ أنه يجب استبدال عنوان IP (127.0.0.1) بعنوان IP الخاص ببوابة SMS. إذا تم تثبيت بوابة Ozeki SMS على نفس الكمبيوتر الذي يعمل عليه تطبيق F# لرسائل SMS، فيمكن أن يكون هذا 127.0.0.1. إذا تم تثبيته على كمبيوتر مختلف، فيجب أن يكون عنوان IP الخاص بهذا الكمبيوتر.
http://127.0.0.1:9509/api?action=rest
مصادقة HTTP لإرسال الرسائل القصيرة من 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 لإرسال الرسائل القصيرة من F#
لإرسال الرسائل القصيرة، تحتاج إلى تضمين الأسطر التالية كرؤوس في طلب HTTP. لاحظ أننا ندرج نوع المحتوى ورأس المصادقة.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
طلب HTTP لإرسال الرسائل القصيرة من F#
لإرسال الرسالة القصيرة، سيقوم تطبيق F# الخاص بك بإرسال طلب HTTP مشابه للطلب أدناه. لاحظ أن هذا الطلب يتضمن جزءًا من رأس HTTP وجزءًا من جسم HTTP. جسم HTTP هو سلسلة بيانات مشفرة بتنسيق JSON. يحتوي على رقم المستلم ونص الرسالة.
HTTP request received from 127.0.0.1:56003 POST /api?action=sendmsg HTTP/1.1 Connection: Keep-Alive Content-Length: 983 Content-Type: application/json Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw== Host: 127.0.0.1:9509 { "messages": [ { "message_id": "dcea98a0-7338-406a-96c8-86ddf9ccc1b6", "to_address": "+36201111111", "text": "Hello, World 1", "create_date": "2021-06-11 14:04:52", "valid_until": "2021-06-18 14:04:52", "time_to_send": "2021-06-11 14:04:52", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": true, "tags": [] }, { "message_id": "7af033fe-fc31-464a-b59a-992ec268f156", "to_address": "+36202222222", "text": "Hello, World 2", "create_date": "2021-06-11 14:04:52", "valid_until": "2021-06-18 14:04:52", "time_to_send": "2021-06-11 14:04:52", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": true, "tags": [] }, { "message_id": "29be6c7d-2474-4ab2-ad3c-d8d58e1cdd76", "to_address": "+36203333333", "text": "Hello, World 3", "create_date": "2021-06-11 14:04:52", "valid_until": "2021-06-18 14:04:52", "time_to_send": "2021-06-11 14:04:52", "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.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": 3, "success_count": 3, "failed_count": 0, "messages": [ { "message_id": "00da7d71-93f1-44c3-9975-4f9ce2ef6b28", "from_station": "%", "to_address": "+36201111111", "to_station": "%", "text": "Hello, World 1", "create_date": "2021-06-11 14:04:52", "valid_until": "2021-06-18 14:04:52", "time_to_send": "2021-06-11 14:04:52", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": false, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ], "status": "SUCCESS" }, { "message_id": "dde86f6d-7db6-4f77-aea2-2bafc8d09cf8", "from_station": "%", "to_address": "+36202222222", "to_station": "%", "text": "Hello, World 2", "create_date": "2021-06-11 14:04:52", "valid_until": "2021-06-18 14:04:52", "time_to_send": "2021-06-11 14:04:52", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": false, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ], "status": "SUCCESS" }, { "message_id": "c2a3275c-7015-4462-bde3-db0c9d45701b", "from_station": "%", "to_address": "+36203333333", "to_station": "%", "text": "Hello, World 3", "create_date": "2021-06-11 14:04:52", "valid_until": "2021-06-18 14:04:52", "time_to_send": "2021-06-11 14:04:52", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": false, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ], "status": "SUCCESS" } ] } }
مثال الرسائل القصيرة بلغة F#: SendMultipleSms.sln
كيفية تنزيل وفتح المشروع (فيديو تعليمي)
في هذا الفيديو، ستتعلم كيفية تنزيل مشروع F# المثال. يبدأ الفيديو بصفحة التنزيل وينتهي بالمشروع المفتوح. ستتعلم كيفية تنزيل المشروع وما يجب فعله بعد ذلك. الفيديو مدته دقيقة واحدة فقط ومفصّل جدًا. لن تواجه أي مشكلة في اتباع الخطوات. ستجد رابط التنزيل على صفحة البرنامج التعليمي.
كود المثال أدناه هو جزء من حل Visual Studio SendMultipleSms.sln. يمكن أن يحتوي حل Visual Studio على مشاريع متعددة وملفات متعددة. في هذا الحل هناك مشروع واحد فقط: SendMultipleSms.fsproj، وملف واحد: Program.fs.
كيفية استخدام المشروع (فيديو تعليمي)
في هذا الفيديو، ستتعلم كيفية استخدام المشروع لإرسال رسائل SMS متعددة في وقت واحد بمساعدة F#. سيبدأ الفيديو بفتح Ozeki SMS Gateway وسيأخذك حتى الوصول إلى مجلد الإرسال مع رسائل متعددة. ستتعلم كيفية تشغيل الكود وكيفية التحقق من مجلد الإرسال. الفيديو يستحق المشاهدة لأنه سهل المتابعة ومفصّل، لكنه يستغرق دقيقة واحدة فقط.
تشغيل مثال F# لرسائل SMS على Windows
عند استخدام Windows لتشغيل مثال رسائل SMS هذا المكتوب بلغة F#، ستلاحظ أن الأداء يكون أفضل قليلاً مقارنة بتشغيله على Linux. لفهم سبب حدوث ذلك، يجب أن تضع في اعتبارك أن F# تستخدم إطار عمل .NET لتنفيذ الكود. هذا لأن تنفيذ .NET على Windows مُحسّن للأداء، بينما mono، وهو تنفيذ .NET على Linux، ما زال يحتاج إلى اللحاق بهذا المجال.
ملخص
كما يمكن رؤيته في المقالة أعلاه، إرسال رسائل SMS متعددة باستخدام F# و Ozeki SMS Gateway بسيط جدًا. هذا الحل يسمح لك بالوصول إلى عملاء متعددين بكود واحد، مما يوفر التكلفة والوقت. من المهم ملاحظة أن Ozeki SMS Gateway يعمل في بيئة تتحكم فيها، لذا فإن بياناتك وقائمة جهات الاتصال الخاصة بك في أيدٍ أمينة. إذا تم اتباع الخطوات بعناية، يمكن إجراء المراسلة مع العملاء دون أي تعقيدات.
استمر في رحلة التعلم على صفحة البرامج التعليمية لـ Ozeki، حيث يوجد المزيد حول مواضيع مثل جدولة SMS و استقبال الرسائل باستخدام F#.
الشيء التالي الذي يجب عليك فعله الآن هو تنزيل Ozeki SMS Gateway والبدء في العمل!
More information
- كيفية إرسال SMS من F#
- كيفية إرسال عدة رسائل SMS من F#
- جدولة SMS باستخدام F# مع واجهة برمجة التطبيقات REST (HTTP) (عينة كود)
- استقبال SMS باستخدام F# مع واجهة برمجة التطبيقات REST (HTTP) (عينة كود)
- حذف SMS باستخدام F# مع واجهة برمجة التطبيقات REST (HTTP) (عينة كود)
- Github: F# SMS API
- مكتبة NuGet لإرسال SMS باستخدام F#