واجهة برمجة تطبيقات الرسائل القصيرة لـ C# مع كود المصدر الكامل
إذا كنت تبحث عن أداة قوية لمطوري C#.Net لإضافة قدرة إرسال واستقبال الرسائل القصيرة إلى تطبيقات C#.Net، فإن واجهة برمجة تطبيقات الرسائل القصيرة لـ C# المقدمة من Ozeki SMS Gateway هي الخيار الأفضل. هذه هي أفضل واجهة برمجة تطبيقات رسائل قصيرة لـ C# في عام 2025. إنها ممتازة لأنها فعالة جدًا من حيث الموارد، وتوفر معلومات عن الرسائل المرسلة في شكل تقارير إرسال وتقارير تسليم أسرع بكثير من واجهات برمجة تطبيقات الرسائل القصيرة الأخرى. تتيح لك واجهة برمجة تطبيقات الرسائل القصيرة لـ C# أيضًا جدولة الرسائل القصيرة للتسليم في المستقبل، ويمكنك استخدامها لإرسال واستقبال الرسائل القصيرة من الهواتف المحمولة دون تأخير. اقرأ هذه المقالة للتعرف على هذا الحل الرائع للرسائل القصيرة لـ C#، ولمعرفة كيف يمكنك الاستفادة منه في بيئتك.
ما هي واجهة برمجة تطبيقات الرسائل القصيرة لـ C#؟
واجهة برمجة تطبيقات الرسائل القصيرة لـ C# من Ozeki هي واجهة برمجية مقدمة من Ozeki SMS Gateway تتيح لك إرسال واستقبال الرسائل القصيرة من كود C#.Net. يمكن استخدام هذه الواجهة مع مكتبة عميل واجهة برمجة تطبيقات الرسائل القصيرة لـ C# من أجهزة كمبيوتر متعددة في وقت واحد. (الشكل 1) يمكنك تنزيل مكتبة عميل واجهة برمجة تطبيقات الرسائل القصيرة لـ C# من هذه الصفحة.
تنزيل مكتبة عميل واجهة برمجة تطبيقات الرسائل القصيرة لـ C#
يمكنك تنزيل عميل الرسائل القصيرة لـ C# (كود المصدر) من الرابط التالي. يحتوي ملف ZIP على مشروع Visual Studio مع كود المصدر الكامل. يمكنك تعديل هذا الكود أو استخدامه أو إعادة توزيعه أو مشتقاته بحرية.
تنزيل: OzekiConsole.zip (51 كيلوبايت)
الرابط: https://ozeki-sms-gateway.com/attachments/5755/OzekiConsole.zip
كيف تعمل واجهة برمجة تطبيقات الرسائل القصيرة لـ C#؟
مع واجهة برمجة تطبيقات الرسائل القصيرة لـ C# من Ozeki، يمكنك إرسال الرسائل القصيرة واستقبالها بكفاءة أكبر بكثير من استخدام حلول واجهة برمجة تطبيقات SMP التقليدية مثل HTTP أو REST. يمكنك القيام بذلك لأن واجهة برمجة تطبيقات الرسائل القصيرة لـ C# من Ozeki تنشئ وتحافظ على اتصال TCP/IP دائم مع بوابة الرسائل القصيرة وتتواصل عبر بروتوكول رسائل قصيرة محسن للغاية يسمى OZX. تتطلب طريقة الاتصال هذه موارد أقل من حيث وحدة المعالجة المركزية والذاكرة وعرض النطاق الترددي للشبكة مقارنة ببروتوكولات الرسائل القصيرة الأخرى. على سبيل المثال، إرسال رسالة قصيرة في طلب واجهة برمجة تطبيقات REST HTTP يتطلب بيانات أكثر بعشر مرات على الأقل من طلب إرسال OZX.
تكمن الميزة الأهم في اتصال TCP/IP الدائم. بفضل هذا الاتصال الدائم، سيستقبل تطبيق الرسائل القصيرة لـ C# الخاص بك تقارير إرسال وتقارير تسليم فورية في شكل أحداث C#. ستستقبل أيضًا الرسائل القصيرة الواردة دون أي تأخير. بدون مثل هذا الاتصال، سيتعين عليك إما استجواب بوابة الرسائل القصيرة للحصول على تقارير التسليم أو تنزيل الرسائل القصيرة الواردة، أو سيتعين عليك إعداد مستمع TCP/IP أو خدمة ويب وفتح منفذ جدار الحماية لاستقبال رسائلك.
يمكن تشفير اتصال TCP/IP هذا باستخدام SSL/TLS ويمكنك بسهولة إضافة التحقق من شهادات العميل والخادم لجعل اتصال واجهة برمجة تطبيقات الرسائل القصيرة لـ C# هذا آمنًا للغاية.
كيفية استخدام واجهة برمجة تطبيقات الرسائل القصيرة لـ C#:
- تنزيل Ozeki SMS Gateway
- تثبيت اتصال اختبار الرسائل القصيرة
- تثبيت مستخدم OZX
- إنشاء اسم مستخدم وكلمة مرور
- تمكين تسجيل الاتصالات
- فتح مشروع الرسائل القصيرة لـ C# في Visual Studio
- تعديل كود C# باسم المستخدم وكلمة المرور
- إرسال رسالة قصيرة اختبارية من C#
- التحقق من السجلات في بوابة الرسائل القصيرة
- محاكاة رسالة قصيرة واردة باستخدام اتصال الاختبار
- إجراء اختبار مباشر بهاتف Android الخاص بك
فيديو تعليمي لواجهة برمجة تطبيقات الرسائل القصيرة لـ C# (دقيقتان)
للحصول على فكرة سريعة عن كيفية إعداد بوابة الرسائل القصيرة الخاصة بك لقبول اتصالات واجهة برمجة تطبيقات الرسائل القصيرة لـ C# وكيفية إرسال أول رسالة قصيرة من تطبيق C# الخاص بك، تحقق من الفيديو التالي. يبلغ طول هذا الفيديو دقيقتين و 21 ثانية فقط، وهو يستحق الوقت. يوضح الفيديو كيف يمكن إنشاء مستخدم OZX في بوابة الرسائل القصيرة لقبول عملاء واجهة برمجة تطبيقات الرسائل القصيرة لـ C#، وكيف يمكنك بدء وتشغيل مكتبة عميل واجهة برمجة تطبيقات الرسائل القصيرة لـ C# التي تم تنزيلها في Visual Studio. يوضح الجزء الأخير كيف يمكنك إرسال رسالة قصيرة اختبارية.
لماذا واجهة برمجة تطبيقات الرسائل القصيرة لـ C# من Ozeki أفضل؟
واجهة برمجة تطبيقات الرسائل القصيرة لـ C# من Ozeki رائعة لأن كمية البيانات المطلوبة لإرسال رسالة قصيرة أقل، وتشفير وفك تشفير وحدة بيانات البروتوكول (PDU) يتطلب موارد وحدة معالجة مركزية أقل بكثير. إذا استخدمتها، فسوف يستهلك حلّك موارد أقل في جميع المجالات الرئيسية الثلاثة: الذاكرة، وحدة المعالجة المركزية، وعرض النطاق الترددي للشبكة. نتيجة لذلك، ستكون تطبيقاتك أسرع وأكثر استجابة.
كيف يمكنني استخدام واجهة برمجة تطبيقات الرسائل القصيرة لـ C#؟
واجهة برمجة تطبيقات الرسائل القصيرة لـ C# من Ozekي هي مجموعة من فئات C# التي تمكنك من إرسال واستقبال الرسائل القصيرة. يمكنك استخدامها عن طريق فتح المشروع الذي تم تنزيله في Visual Studio. بمجرد فتح المشروع، سترى أن الكود الكامل مكتوب بلغة C#.Net. يتم إرسال الرسائل باستخدام استدعاءات طرق C#، وتصل الرسائل الواردة في شكل أحداث C#. سيكون تطبيق الرسائل القصيرة الذي تقوم ببنائه بناءً على واجهة برمجة التطبيقات هذه قادرًا على إرسال رسائل قصيرة مباشرة إلى شبكة الهاتف المحمول باستخدام هاتف Android أو باستخدام جهاز كمبيوتر مزود باتصال رسائل قصيرة عبر IP. سيتم توفير الاتصال بشبكة الهاتف المحمول بواسطة Ozeki SMS gateway، والتي تحتاج إلى Linux. (الشكل 2)
واجهة برمجة التطبيقات هي مكتبة، يتم توفيرها لك مجانًا، بترخيص MIT. يمكنك تعديلها بحرية وتوزيعها كما تشاء. عند تنزيل واجهة برمجة التطبيقات، تحتوي الحزمة على تطبيق وحدة تحكم مثال وكود المصدر الكامل لـ Ozeki.Libs.OZX dll.
التكلفة الوحيدة التي يتعين عليك دفعها هي رسوم الترخيص لـ برنامج بوابة الرسائل القصيرة Ozeki. يمكن استخدام بوابة رسائل قصيرة واحدة لخدمة عدة مئات من عملاء الرسائل القصيرة لـ C# عبر الشبكة. يمكنك تثبيت بوابة الرسائل القصيرة على أجهزة كمبيوتر متعددة لزيادة السعة أو للاستفادة من عروض الرسائل القصيرة من الشبكات المحلية.
بخصوص تكاليف الرسائل القصيرة، إذا كنت ترسل رسائل نصية عبر هاتف محمول متصل بجهاز الكمبيوتر الخاص بك، فإن التكلفة تعتمد على تعريفة الرسائل القصيرة لبطاقة SIM في هاتفك. في معظم البلدان، يمكنك إرسال رسائل SMS مجانًا إذا اخترت هذا الخيار. ومع ذلك، هناك قيد: لا يمكن لهاتف محمول واحد إرسال أكثر من 12000 رسالة قصيرة في اليوم. يمكنك زيادة هذه السعة فقط عن طريق توصيل عدة هواتف محمولة بجهاز الكمبيوتر الخاص بك. عند إرسال رسالة قصيرة عبر هاتفك المحمول (الشكل 2)، تحتاج إلى تثبيت برنامج بوابة الرسائل القصيرة Ozeki لنظام Android على هاتفك المحمول وتحتاج إلى الاتصال به عبر شبكة Wi-fi.
إذا قمت بتثبيت Linux الخاص بك، يمكنك إرسال رسائل SMS لاسلكيًا باستخدام حوض مودم GSM متصل بجهاز الكمبيوتر. في هذه الحالات، تنطبق نفس تعريفات الرسائل القصيرة المجانية لأن مودمات GSM وأحواض مودم GSM تعمل لاسلكيًا مع بطاقات SIM.
إذا كنت بحاجة إلى نظام بوابة رسائل قصيرة محلي عالي الأداء، حيث يمكن إرسال واستقبال عدة آلاف (أو ملايين) من الرسائل، فأنت بحاجة إلى الاتصال بـ مزود خدمة الرسائل القصيرة عبر الإنترنت. في هذه الحالة، يتم تحديد تعريفات الرسائل القصيرة من قبل خدمة الرسائل القصيرة التي تشترك فيها. لاحظ أنه من الجيد دائمًا الاتصال بخدمتين أو أكثر من خدمات الرسائل القصيرة عبر الإنترنت لتكون متسامحًا مع الأخطاء، ولتتمكن من الاستفادة من خيارات توجيه الرسائل القصيرة بأقل تكلفة. كما أنه من الجيد إعداد رابط لاسلكي احتياطي.
كيف يمكنني الاتصال ببوابة الرسائل القصيرة؟
عند تطوير تطبيق الرسائل القصيرة لـ C# الخاص بك، من المحتمل أن تستخدم جهاز الكمبيوتر المحمول الخاص بك. سيكون Visual Studio مثبتًا على جهاز الكمبيوتر المحمول الخاص بك. سيتصل هذا الكمبيوتر المحمول بشبكة المنطقة المحلية (LAN) للمكتب إما عبر Wi-fi أو عبر اتصال Ethernet. سيتصل هاتفك المحمول بنظام Android أو نظام بوابة الرسائل القصيرة لنظام Windows (الشكل 3) أيضًا بشبكة LAN للمكتب. عند الاتصال ببوابة الرسائل القصيرة، ستستخدم عنوان IP لشبكة LAN لجهاز كمبيوتر بوابة الرسائل القصيرة.
لربط تطبيق C# الخاص بك ببوابة الرسائل القصيرة، ستحتاج إلى معرفة عنوان IP ورقم منفذ بوابة الرسائل القصيرة، وستحتاج إلى اسم مستخدم وكلمة مرور. سيكون عنوان IP لبوابة الرسائل القصيرة هو عنوان IP لشبكة LAN الخاص بها. نظرًا لأن معظم الوقت سيتم تثبيت برنامج بوابة الرسائل القصيرة على جهاز كمبيوتر مختلف عن جهاز الكمبيوتر المحمول للتطوير الخاص بك، سيكون هذا العنوان IP مختلفًا عن عنوان IP لجهاز الكمبيوتر المحمول الخاص بك. رقم المنفذ سهل. عادةً ما يكون رقم المنفذ الافتراضي، وهو 9580. للحصول على اسم مستخدم وكلمة مرور، تحتاج إلى إنشاء مستخدم OZX (الشكل 4). عند إنشاء مستخدم OZX، يمكنك تحديد أي اسم مستخدم أو كلمة مرور تريدها.
بمجرد معرفة عنوان IP ورقم المنفذ وإنشاء اسم المستخدم وكلمة المرور، تحتاج إلى إدخال هذه التفاصيل في طريقة الاتصال لتطبيق الرسائل القصيرة لـ C# الخاص بك.
إذا كنت لا تريد استخدام جهازي كمبيوتر، يمكنك تثبيت بوابة الرسائل القصيرة على جهاز الكمبيوتر المحمول الخاص بك (نفس الكمبيوتر حيث تقوم بتطوير تطبيق C# الخاص بك). في هذه الحالة، ستوفر "127.0.0.1" كعنوان IP والمنفذ "9580" في طريقة الاتصال. (نعم، يمكنك أيضًا استخدام عناوين IPv6 أو أسماء المضيفين، مثل 'localhost")
فوائد استخدام بوابة الرسائل القصيرة الخاصة بك
اختبار مجاني: من المفيد جدًا تشغيل بوابة الرسائل القصيرة الخاصة بك، لأنه يمكنك اختبار تطبيق الرسائل القصيرة الخاص بك مجانًا. يمكنك محاكاة رسائل SMS الواردة، يمكنك إرسال رسائل اختبار إلى اتصال الاختبار الخاص ببوابة الرسائل القصيرة، ويمكنك محاكاة تقارير تسليم الرسائل القصيرة التي تشير إلى التسليم الناجح والفاشل. من الجيد قراءة دليل محاكي SMPP للحصول على مزيد من المعلومات حول الاختبار.
اختبار أداء غير محدود: بمجرد تطوير حل الرسائل القصيرة الخاص بك في C#، من المحتمل أنك تريد إجراء بعض اختبارات الأداء. مع بوابة الرسائل القصيرة Ozeki من السهل جدًا اختبار نظامك بحجم كبير من رسائل SMS. في معظم الحالات، ستقوم بإرسال بضعة آلاف من الرسائل القصيرة فقط، ولكن إذا طلب العميل ذلك يمكنك حتى إجراء اختبار بعدة ملايين من الرسائل. تحقق من نتائج اختبار أداء الرسائل القصيرة التي أجريناها مع بوابة الرسائل القصيرة Ozeki مع 1،000،000 رسالة قصيرة.
تبديل المزودين بسهولة: إذا قمت بتطوير كود C# الخاص بك الذي يعمل مع بوابة الرسائل القصيرة Ozeki، فلن تقلق بشأن التقييد بشبكة رسائل قصيرة واحدة أو مزود خدمة رسائل قصيرة واحد. يمكنك استخدام نفس كود C# والتبديل ببساطة إلى مزود خدمة رسائل قصيرة آخر إذا حصلت على صفقة أفضل عن طريق تكوين اتصال المزود الجديد في بوابة الرسائل القصيرة.
ما هو OZX؟OZX تعني OZeki eXchange. وهو بروتوكول SMS مُحسّن للغاية يُستخدم للتواصل بين تطبيق C# الخاص بك وبوابة Ozeki للرسائل القصيرة. إنه بروتوكول يعتمد على TCP/IP وهو أكثر كفاءة بكثير من بروتوكولات SMS التقليدية، مثل بروتوكولات C# HTTP SMS API، أو بروتوكولات C# REST SMS API أو بروتوكول SMPP SMS. تأتي الكفاءة من حقيقتين رئيسيتين: عدم إرسال بيانات غير ضرورية (لاحظ أن هناك حمل بيانات كبير في كل من HTTP و SMPP)، وإمكانية معالجة البروتوكول بشكل أسهل وأكثر كفاءة بسبب هيكل PDU الخاص بالبروتوكول.
ما الموجود في ملف zip الخاص بـ C# SMS API؟
يحتوي ملف zip على مشروعين (كما في الشكل 5): تطبيق console وهو كود سهل جدًا لفهمه ليوضح لك كيفية استخدام C# SMS API، ويحتوي أيضًا على الكود المصدر لـ C# SMS API نفسه.
محتويات حزمة C# SMS API:
- كود مثال (كود مصدر كامل)
- مكتبة Ozeki للعميل (كود مصدر كامل)
كيف يمكنني فتح ملف الحل .sln الخاص بـ C# SMS API؟
لفتح Ozeki SMS API، تحتاج إلى تحديد ملف OzekiConsole.sln بعد فك ضغط حزمة OzekiConsole.zip، ثم تحتاج إلى فتح هذا الملف في Visual Studio. (الشكل 6) يمكنك النقر مرتين على ملف الحل (.sln)، أو يمكنك تصفحه في Visual Studio.
بمجرد فتح ملف .sln، سترى مشروعين في الحل الخاص بك. مشروع OzekiConsole يحتوي على كود المثال الذي يوضح لك كيف يمكنك استخدام مكتبة عميل C# SMS API للاتصال بـ بوابة الرسائل القصيرة. (الشكل 7) المشروع الآخر هو مشروع Ozeki.Libs.OZX dll. هذا المشروع يحتوي على الكود المصدر الكامل لمكتبة عميل C# SMS API.
كيفية تسجيل الدخول إلى بوابة الرسائل القصيرة باستخدام C# SMS API
لاستخدام C# SMS API، تحتاج إلى إنشاء اسم مستخدم وكلمة مرور في بوابة الرسائل القصيرة الخاصة بك. إذا كنت قد قمت بتثبيت بوابة الرسائل القصيرة على هاتفك Android، فأنت بحاجة إلى تسجيل الدخول إلى الهاتف باستخدام متصفح الويب. إذا كنت قد قمت بتثبيت بوابة الرسائل القصيرة على Windows أو Linux، ما عليك سوى الاتصال بها باستخدام متصفحك. إذا لم تقم بعد بتثبيت بوابة الرسائل القصيرة، فيمكنك إعدادها الآن باستخدام أحد إرشادات الإعداد التالية: كيفية إعداد بوابة الرسائل القصيرة على Windows، كيفية إعداد بوابة الرسائل القصيرة على Linux. (الشكل 8)
//*********************************************************************
// واجهة برمجة تطبيقات الرسائل القصيرة (SMS) بلغة C# من Ozeki - الإصدار 1.0.0
// التوثيق: https://ozeki-sms-gateway.com/p_5755-c-sharp-sms-api.html
//*********************************************************************
using System;
using OZX;
namespace OzekiConsoleClient
{
class Program
{
static OzxClient Client;
//*************************************************************
// الدالة الرئيسية
//*************************************************************
static void Main(string[] args)
{
createClient();
printWelcome();
string command = null;
string parameters;
while (command != "exit")
{
if (!_promptAvailable) printPrompt();
readCommand(out command, out parameters);
_promptAvailable = false;
dispatchCommand(command, parameters);
}
}
//*************************************************************
// قراءة الأمر التالي
//*************************************************************
static bool _promptAvailable;
static void printPrompt()
{
Console.Write("> ");
_promptAvailable = true;
}
static void readCommand(out string command, out string parameters)
{
command = Console.ReadLine();
parameters = null;
int paramSep = command.IndexOf(' ');
if (paramSep > -1)
{
parameters = command.Substring(paramSep + 1);
command = command.Substring(0, paramSep);
}
}
static void dispatchCommand(string command, string parameters)
{
switch (command)
{
case "help":
printHelp();
break;
case "exit":
Console.WriteLine("شكرًا لاستخدامك عميل Ozeki!");
break;
case "connect":
connect(parameters);
break;
case "disconnect":
disconnect();
break;
case "send":
send(parameters);
break;
}
}
//*************************************************************
// الأوامر / رسالة الترحيب
//*************************************************************
static void printWelcome()
{
Console.WriteLine("**********************************");
Console.WriteLine("* مرحبًا بكم في عميل Ozeki الإصدار 1.0.0 *");
Console.WriteLine("**********************************");
Console.WriteLine("اكتب 'help' لرؤية الأوامر المتاحة");
}
//*************************************************************
// الأوامر / المساعدة
//*************************************************************
static void printHelp()
{
Console.WriteLine("**********************");
Console.WriteLine("* الأوامر المتاحة *");
Console.WriteLine("**********************");
Console.WriteLine("help");
Console.WriteLine("connect [host:port] [username] [password]");
Console.WriteLine("disconnect");
Console.WriteLine("send [recipient] [message]");
Console.WriteLine("exit");
}
//*************************************************************
// الأوامر / الاتصال
//*************************************************************
static void connect(string parameters)
{
if (!parseConnectParameters(parameters, out string host, out int port, out string username, out string password, out string errormessage))
{
Console.WriteLine("خطأ. "+errormessage);
Console.WriteLine("الصيغة: connect [host:port] [username] [password]");
Console.WriteLine("مثال: connect 127.0.0.1:9580 testuser testpass");
}
Console.WriteLine("جارٍ الاتصال بـ "+parameters+"...");
Client.Connect(host, port, username, password);
}
static bool parseConnectParameters(string parameters, out string host, out int port, out string username, out string password, out string errormessage)
{
string[] parts = parameters.Split(' ');
if (parts.Length < 3)
{
errormessage = "يتوقع الأمر connect 3 معاملات.";
username = null;
password = null;
host = null;
port = 0;
return false;
}
string hostandport = parts[0];
username = parts[1];
password = parts[2];
string[] hostandportparts = hostandport.Split(':');
if (hostandportparts.Length < 2)
{
errormessage = "مضيف ومنفذ غير صالحين.";
host = null;
port = 0;
return false;
}
host = hostandportparts[0];
string portstring = hostandportparts[1];
if (!int.TryParse(portstring, out port))
{
errormessage = "رقم المنفذ غير صالح.";
port = 0;
return false;
}
errormessage = null;
return true;
}
//*************************************************************
// الأوامر / قطع الاتصال
//*************************************************************
static void disconnect()
{
Client.Disconnect();
}
//*************************************************************
// الأوامر / إرسال
//*************************************************************
static void send(string parameters)
{
string[] parts = parameters.Split(new char[] { ' ' },2);
if (parts.Length < 2)
{
Console.WriteLine("خطأ. يتوقع الأمر send معاملين.");
Console.WriteLine("الصيغة: send [recipient] [message]");
Console.WriteLine("مثال: send +441234567 مرحبًا بالعالم");
return;
}
string recipient = parts[0];
string message = parts[1];
var msg = new OzxMessage();
msg.ToAddress = recipient;
msg.Text = message;
Console.WriteLine("جارٍ إرسال الرسالة. المعرف: "+msg.ID);
Client.Send(msg);
}
//*************************************************************
// إنشاء العميل
//*************************************************************
static void createClient()
{
Client = new OzxClient();
Client.AutoReconnect = true;
Client.OnMessageReceived += Client_OnMessageReceived;
Client.OnMessageAcceptedForDelivery += Client_OnMessageAcceptedForDelivery;
Client.OnMessageNotAcceptedForDelivery += Client_OnMessageNotAcceptedForDelivery;
Client.OnMessageSubmitSuccess += Client_OnMessageSubmitSuccess;
Client.OnMessageSubmitFailed += Client_OnMessageSubmitFailed;
Client.OnMessageDeliverySuccess += Client_OnMessageDeliverySuccess;
Client.OnMessageDeliveryFailed += Client_OnMessageDeliveryFailed;
Client.OnMessageViewed += Client_OnMessageViewed;
Client.OnConnected += Client_OnConnected;
Client.OnDisconnected += Client_OnDisconnected;
}
//*************************************************************
// أحداث المراسلة
//*************************************************************
static void Client_OnConnected(object sender, EventArgs e)
{
Console.WriteLine("تم الاتصال بنجاح.");
printPrompt();
}
static void Client_OnDisconnected(object sender, OzxArgs< string > e)
{
Console.WriteLine("تم إغلاق الاتصال. السبب: " + e.Item.ToString());
printPrompt();
}
static void Client_OnMessageReceived(object sender, OzxArgs< IOzxMessage > e)
{
Console.WriteLine("تم استلام الرسالة: " + e.Item.ToString());
printPrompt();
}
static void Client_OnMessageAcceptedForDelivery(object sender, OzxArgs< string > e)
{
Console.WriteLine("تم قبول الرسالة للتسليم. المعرف: " + e.Item.ToString());
printPrompt();
}
static void Client_OnMessageNotAcceptedForDelivery(object sender, OzxArgs< string, string > e)
{
Console.WriteLine("تم رفض الرسالة. المعرف: " + e.Item1.ToString()+" السبب: "+e.Item2);
printPrompt();
}
static void Client_OnMessageSubmitSuccess(object sender, OzxArgs< string, DateTime > e)
{
Console.WriteLine("تم إرسال الرسالة. المعرف: "+e.Item1+" التاريخ: "+e.Item2);
printPrompt();
}
static void Client_OnMessageSubmitFailed(object sender, OzxArgs< string, DateTime, string > e)
{
Console.WriteLine("فشل إرسال الرسالة. المعرف: " + e.Item1 + " التاريخ: " + e.Item2+" السبب: "+e.Item3);
printPrompt();
}
static void Client_OnMessageDeliverySuccess(object sender, OzxArgs< string, DateTime > e)
{
Console.WriteLine("تم تسليم الرسالة. المعرف: " + e.Item1 + " التاريخ: " + e.Item2);
printPrompt();
}
static void Client_OnMessageDeliveryFailed(object sender, OzxArgs< string, DateTime, string > e)
{
Console.WriteLine("فشل تسليم الرسالة. المعرف: " + e.Item1 + " التاريخ: " + e.Item2 + " السبب: " + e.Item3);
printPrompt();
}
static void Client_OnMessageViewed(object sender, OzxArgs< string, DateTime > e)
{
Console.WriteLine("تمت مشاهدة الرسالة. المعرف: " + e.Item1 + " التاريخ: " + e.Item2);
printPrompt();
}
}
}
ماذا تفعل إذا لم أتمكن من الاتصال؟
إذا لم يتمكن تطبيق الرسائل القصيرة الخاص بك من الاتصال ببوابة الرسائل القصيرة، فمن المحتمل أنك أدخلت عنوان IP أو رقم المنفذ بشكل خاطئ في عميل الرسائل القصيرة. كما قد يكون من الممكن أن جدار الحماية على بوابة الرسائل القصيرة يمنع الاتصال.
للتحقق من أنك تستخدم عنوان IP والمنفذ الصحيحين، افتح واجهة مستخدم بوابة الرسائل القصيرة. في شريط أدوات تطبيق بوابة الرسائل القصيرة، انقر على زر "متقدم". سيؤدي هذا إلى فتح صفحة الخدمات لبوابة الرسائل القصيرة. تحتاج إلى العثور على خدمة OZX في القائمة والنقر على "تفاصيل" (الشكل 11)
بعد فتح الصفحة، يمكنك العثور على عنوان IP في شريط عنوان النافذة (الشكل 12)، ورقم المنفذ على الجانب الأيسر من نموذج التكوين. (لاحظ أنه يمكنك تغيير رقم المنفذ هذا عن طريق فتح نموذج تكوين خدمة OZX.)
يمكنك كتابة هذه التفاصيل مباشرة في كود C# الخاص بك. على سبيل المثال، يمكنك استخدام الوظيفة التالية لإعداد اتصال ببوابة الرسائل القصيرة على 192.168.93.192:9580 مع اسم مستخدم OZX "tester" وكلمة مرور "test":
static void createClient() { Client = new OzxClient(); Client.AutoReconnect = true; Client.Connect("192.168.93.192", 9580, "testuser", "testpass"); }
أفكار أخيرة
لتلخيص ذلك، يسمح لك API الرسائل القصيرة لـ C# بالاتصال بـ بوابة الرسائل القصيرة باستخدام بروتوكول OZX. يوفر هذا البروتوكول أداءً ممتازًا واتصالًا ثنائي الاتجاه للرسائل القصيرة. حقيقة أن مكتبة API الرسائل القصيرة المجانية المقدمة من Ozeki تسمح لك بإرسال رسائل SMS باستدعاءات بسيطة، واستلام تقارير إرسال وتسليم الرسائل القصيرة في شكل أحداث C# تجعل هذا الخيار هو الخيار الممكن إذا كنت ترغب في بناء تطبيق رسائل قصيرة بـ C# في عام 2025.
More information