ردود SMS من قاعدة بيانات SQL
يمكن لمستخدم قاعدة البيانات الآلي في Ozeki SMS Gateway الاتصال بقاعدة بيانات Microsoft SQL أو Oracle أو MySQL أو Sybase وغيرها... باستخدام سلسلة اتصال. يقوم بتشغيل أي استعلام SELECT توفره، بعد استلام رسالة SMS. سيتم إرسال مجموعة النتائج من الاستعلام كرسائل صادرة. يمكن أيضًا تعديل الاستعلامات والجداول من تطبيقك الخاص.
كيفية إرسال رد SMS من SQL
لإرسال رد SMS من SQL:
- تشغيل Ozeki SMS Gateway
- إضافة مستخدم قاعدة بيانات آلي جديد
- إنشاء هيكل جدول قاعدة بيانات SQL
- إعداد مستخدم قاعدة البيانات الآلي
- توفير نص البرنامج النصي للرد الآلي
- استخدام أرقام وكلمات رئيسية قابلة للتحديد
- إرسال رسالة SMS اختبارية للحصول على رد من SQL
- التحقق من سجلات مستخدم قاعدة البيانات الآلي
يمكنك إنشاء الخدمة التالية باستخدام هذا الحل (الشكل 1):
1.) يتم استلام رسالة SMS بواسطة Ozeki SMS Gateway من هاتف محمول.
2.) يبحث مستخدم قاعدة البيانات الآلي في Ozeki SMS Gateway عن الكلمات الرئيسية في رسالة SMS باستخدام ملف نصي.
3.) اعتمادًا على البحث، سيتم اختيار رسالة رد آلي من خادم قاعدة البيانات الخاص بك بنفس الملف النصي.
من المهم أن يكون لديك موفر خدمة IP SMS أو مودم GSM مُهيأ على Ozeki SMS Gateway الخاص بك، حتى تتمكن من استلام رسائل SMS والرد عليها تلقائيًا باستخدام هذا المثال.
الخطوة 1 - إعداد مستخدم قاعدة البيانات الآلي في Ozeki SMS Gateway
أولاً، تحتاج إلى تثبيت مستخدم قاعدة بيانات آلي لإنشاء الخدمة المذكورة. في وحدة التحكم 'الإدارة'، يرجى النقر على 'إضافة' كما هو موضح في الشكل 2.
ابحث عن مستخدم قاعدة البيانات الآلي وانقر على رابط 'تثبيت' الأزرق بجواره. كما ترى في الشكل 3.
الخطوة 2 - إنشاء هيكل جدول قاعدة البيانات
سيقوم مستخدم قاعدة البيانات الآلي باختيار رسائل SMS الرد من جدول قاعدة بيانات. قم بإنشاء هيكل قاعدة البيانات التالي لتخزين رسائل SMS (الشكل 4). يستخدم هذا المثال خادم قاعدة بيانات MySQL، ولكن يمكنك استخدام قواعد بيانات أخرى مثل Microsoft SQL أو Oracle أو Sybase وغيرها... يمكنك أيضًا استخدام جداول وتخطيطات أخرى.
CREATE TABLE autoreplymessage ( id int(11) NOT NULL auto_increment, keyword varchar(30) default NULL, msg text default NULL, PRIMARY KEY (id) ); INSERT INTO autoreplymessage (keyword,msg) VALUES ("default","لا توجد بيانات لهذه الكلمة الرئيسية."), ("red","اللون الأحمر لون جيد."), ("blue","اللون الأزرق ليس الخيار الأفضل.");الشكل 4 - إنشاء جدول وإدراج صفوف في جدول 'autoreplymessage'
يمكن عرض جداولك باستخدام عبارات SELECT * FROM (الشكل 5). على الرغم من أن هذا المثال يحتوي على جدول واحد فقط.
> SELECT * FROM autoreplymessage;
id keyword msg ---------- ------------------------------ ------------------------------------- 1 default لا توجد بيانات لهذه الكلمة الرئيسية. 2 red اللون الأحمر لون جيد. 3 blue اللون الأزرق ليس الخيار الأفضل. (3 صفوف متأثرة)الشكل 5 - قراءة جدول 'autoreplymessage' باستخدام عبارة SELECT
في حالة عدم تثبيت برنامج تشغيل قاعدة البيانات مع خادم قاعدة البيانات، يجب عليك تثبيت برنامج تشغيل، لأن ستحتاج إلى سلسلة الاتصال في الخطوة التالية. يقوم برنامج تشغيل قاعدة البيانات بالاتصال بين Ozeki SMS Gateway وخادم قاعدة البيانات. في معظم الحالات، يتم تثبيت برنامج تشغيل قاعدة البيانات مع خادم قاعدة البيانات.
الخطوة 3 - تكوين مستخدم قاعدة بيانات الرد التلقائي لاستخدام قاعدة البيانات الخاصة بك
سوف تحتاج إلى إدخال نوع اتصال قاعدة البيانات وسلسلة الاتصال في لوحة 'إعداد قاعدة البيانات' لمستخدم قاعدة بيانات الرد التلقائي (الشكل 6). يمكن اختيار النوع من مربع الاختيار، بينما يجب وضع السلسلة في مربع النص.
في الشكل 7 يمكنك رؤية سلسلة اتصال نموذجية لاتصال قاعدة بيانات MySQL.
ضع في اعتبارك أنه يمكنك استخدام نوع سلسلة الاتصال الخاص بك (OleDB، ODBC،
SQLServer، Oracle) لخادم قاعدة البيانات الخاص بك
والذي يمكن أن يكون Microsoft SQL أو Oracle أو Sybase إلخ... في حال كنت تستخدم برنامج تشغيل ODBC
لـ MySQL،
فإنك تحتاج فقط إلى تعديل IP خادم MySQL واسم قاعدة البيانات واسم المستخدم وكلمة
المرور إلى القيم الخاصة بك في السلسلة التالية:
نوع الاتصال: ODBC
سلسلة الاتصال: Driver={MySQL ODBC 5.3 Unicode Driver}; Server=127.0.0.1;Database=ozekisms;User=ozeki;Password=abc123;Option=4;
للعثور على سلسلة الاتصال لخوادم قواعد البيانات الأخرى، يُقترح قراءة دليل سلاسل اتصال قاعدة بيانات الرسائل القصيرة.
الخطوة 4 - كتابة سكريبت للرد التلقائي من قاعدة بيانات SQL
حان الوقت الآن لكتابة ملف السكريبت القادر على تحديد صف من جدول قاعدة البيانات الخاص بك إذا تم إنشاء الجدول بنجاح في الخطوة 2. سيتم الرد على سمة الرسالة للصف المحدد إلى رسالة SMS. هنا يمكنك العثور على مسار نموذج السكريبت: C:\Program Files\Ozeki\Ozeki10\Data\NG\config\OzekiUsername\sqlscript.txt
يمكن لمحرر نصوص بسيط تعديل هذه الملفات أو يمكنك إنشاء ملف txt الخاص بك وتعديله باستخدام تطبيقك الخاص، وهو مفيد إذا كنت ترغب في تعديل الاستعلامات. يرجى توفير مسار الملف باستخدام مستخدم قاعدة بيانات الرد التلقائي بالضغط على 'إعداد قاعدة البيانات' واختيار صفحة تبويب 'سكريبت الرد التلقائي' (الشكل 8)
الخطوة 5 - هيكل نصوص استعلام SQL
سكريبت SQL لمستخدم قاعدة بيانات الرد التلقائي يحتوي على أزواج من العبارات المرشحة، والتي تعمل تمامًا مثل هيكل if-then في لغات البرمجة. تمر رسالة SMS المستلمة عبر المرشح وإذا كانت صحيحة، سيتم تشغيل عبارة SELECT SQL. سيتم إعادة توجيه محتوى الرسالة للصفوف المحددة إلى رقم هاتف. هذا الرقم هو المعامل الأول لمجموعة نتائج عبارة SELECT، بينما نص الرسالة هو الثاني. المرشح قادر على تحديد أرقام الهواتف ومقتطفات النصوص والكلمات المفتاحية. الكلمة المفتاحية لكل رسالة هي الكلمة الأولى من النص. يحدث التوجيه إذا كان عنوان المستلم مدرجًا في قاعدة البيانات (الشكل 11).
الخطوة 6 - مثال بسيط للكلمة المفتاحية
هذا المثال سيعمل على الجدول التالي الذي يمكنك رؤيته في الشكل 9.
id keyword msg ---------- ------------------------------ ------------------------------------- 1 default لا توجد بيانات لهذه الكلمة المفتاحية. 2 red الأحمر لون جيد. 3 blue الأزرق ليس الخيار الأفضل.الشكل 9 - محتوى جدول 'autoreplymessage'
يمكنك تشغيل السكريبت التالي في الشكل 10 على جدول 'autoreplymessage' بإضافته إلى 'sqlscript.txt'. كتذكير، الكلمة المفتاحية، التي يرمز لها بالحرف 'k'، هي الكلمة الأولى في رسالة SMS. سيتم اختبار هذه الكلمة بواسطة المرشح. إذا نجح اختبار المرشح، تشغيل عبارة SELECT ويتوقف السكريبت. كما ترى، يمكنك وضع قيم ثابتة في عبارة SELECT. على سبيل المثال، '$sender'، وهو مرسل الرسالة الواردة.
عناصر السكريبت التي يمكن وضعها في sqlscript.txtSELECT '$sender',msg FROM autoreplymessage WHERE keyword='red' #المرشح الأول يتحقق مما إذا كانت الكلمة 'RED' هي الكلمة المفتاحية. #إذا كانت صحيحة، فإنها تختار 'الأحمر لون جيد.' كرسالة رد. #إذا كانت خاطئة تنتقل إلى المرشح التالي. k^BLUE SELECT '$sender',msg FROM autoreplymessage WHERE keyword='blue' #المرشح الثاني يتحقق مما إذا كانت الكلمة 'BLUE' هي الكلمة المفتاحية. #إذا كانت صحيحة، فإنها تختار 'الأزرق ليس الخيار الأفضل.' كرسالة رد. #إذا كانت خاطئة تنتقل إلى المرشح التالي. k.* SELECT '$sender',msg FROM autoreplymessage WHERE keyword='default' #المرشح الثالث سيقبل أي كلمة مفتاحية أخرى. #يختار 'لا توجد بيانات لهذه الكلمة المفتاحية.' كرسالة رد.الشكل 10 - نموذج سكريبت يمكن وضعه في sqlscript.txt
يعمل جزء المرشح من سكريبت استعلام SQL بشكل مشابه لجزء المرشح من سكريبت رسائل SMS، ولكن ضع في اعتبارك البحث فقط عن أمثلة المرشحات، حيث أن الجزء الثاني هو دائمًا عبارة SELECT SQL.
الخطوة 7 - الكلمات المفتاحية المحددة مسبقًا في Ozeki SMS Gateway
يمكن وضع هذه الأنواع من الكلمات المفتاحية في النص البرمجي. على سبيل المثال '$sender':
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'الشكل 11 - يرسل msg إلى '$sender'
يمكن لمستخدم قاعدة البيانات للرد التلقائي التعرف على الكلمات المفتاحية التالية:
الكلمة المفتاحية | القيمة | $originator | يتم استبدالها برقم هاتف المرسل. |
---|---|
$sender | =$originator ($sender هو اسم آخر لـ $originator.) |
$recipient | يتم استبدالها برقم الهاتف الذي استلم الرسالة. |
$receiver | =$recipient ($receiver هو اسم آخر لـ $recipient.) |
$messagedata | يتم استبدالها بنص الرسالة. |
$keyword | يتم استبدالها بالكلمة الأولى في الرسالة. تسمى هذه الكلمة بالكلمة المفتاحية. |
$after | يتم استبدالها بالنص المتبقي بعد الكلمة المفتاحية. |
$senttime | يتم استبدالها بطابع زمني يوضح وقت إرسال الرسالة. |
$receivedtime | يتم استبدالها بطابع زمني يوضح وقت استلام الرسالة. |
$messagetype | يتم استبدالها بنوع الرسالة، وهو في معظم الحالات 'SMS:TEXT'. |
$id | يتم استبدالها بسلسلة فريدة، تحدد الرسالة في Ozeki SMS Gateway. |
$operator | يتم استبدالها باسم مزود الخدمة، الذي استلم الرسالة في Ozeki SMS Gateway. |
$1 | يتم استبدالها بالكلمة الأولى في الرسالة. |
$2 | يتم استبدالها بالكلمة الثانية في الرسالة. |
$3 | يتم استبدالها بالكلمة الثالثة في الرسالة، وهكذا... |
يتم شرح هيكل النص البرمجي للرد التلقائي على هذه الصفحات:
الخطوة 8 - اختبار حل الرد التلقائي من قاعدة البيانات
بعد تنفيذ الخطوات من 1 إلى 6، يمكنك تجربة الحل. سيقوم Ozeki SMS Gateway بإعادة توجيه رسائل SMS الواردة إلى مستخدم قاعدة البيانات للرد التلقائي الخاص بك. يقوم نص استعلام SQL بتصفية رسالة SMS لإنشاء مجموعات نتائج SELECT المناسبة. كل صف في مجموعة النتائج سيمثل رسالة يجب الرد عليها أو إعادة توجيهها.
يمكنك تتبع سجل المراسلات لمستخدم قاعدة البيانات للرد التلقائي الخاص بك في المسار التالي:
C:\Program Files\Ozeki\Ozeki10\Data\NG\Logs
عندما أقوم بإدخال بيانات في جدول Ozekimessageout لم أتلقى الرسالة على هاتفي الخلوي. ما الذي قد يكون سبب عدم استلامي للرسالة النصية التي تم إدراجها في الجدول الخارجي باستخدام وحدة التحكم SQL الخاصة بي؟
أولاً، دعونا نستبعد مشكلة في شبكة الهاتف المحمول. أرسل رسالة SMS اختبارية مباشرة من واجهة المستخدم الرسومية (GUI) لـ Ozeki. إذا وصلت الرسالة بنجاح، يبدو أن اتصال الشبكة يعمل بشكل صحيح.
بعد ذلك، نحتاج إلى التحقق مما إذا كانت الرسائل يتم نقلها من قاعدة البيانات الخاصة بك إلى برنامج Ozeki. أدخل بعض رسائل الاختبار في جدول Ozekimessageout. ثم، داخل واجهة المستخدم الرسومية لـ Ozeki، انتقل إلى صندوق الصادر المرتبط بمستخدم قاعدة البيانات الذي تستخدمه. إذا كانت رسائل الاختبار هذه غير موجودة في صندوق الصادر، تكمن المشكلة في عملية نقل البيانات بين قاعدة البيانات و Ozeki.
أرغب في استخدام قاعدة بيانات واحدة للعديد من "مستخدمي قاعدة البيانات". هل هذا ممكن؟
بالتأكيد! يسمح لك Ozeki SMS Gateway بالحفاظ على سجلات رسائل منفصلة لأغراض مختلفة باستخدام مستخدمي قاعدة بيانات منفصلين.
إليك دليل خطوة بخطوة:
- إنشاء جداول قاعدة بيانات جديدة: قم بإعداد جدولين جديدين داخل قاعدة البيانات الخاصة بك. لتسهيل التعرف عليهما، يمكنك تسميتهما ozekimessagein2 و ozekimessageout2. يجب أن تعكس هذه الجداول هيكل الجداول الحالية ozekimessagein و ozekimessageout المستخدمة من قبل مستخدم قاعدة البيانات الأول.
- تكوين مستخدم قاعدة البيانات الثاني: قم بالوصول إلى نموذج التكوين لـ مستخدم قاعدة البيانات الثاني في Ozeki.
- تعديل قوالب SQL: حدد قسم قوالب SQL داخل نموذج التكوين. تحدد هذه القوالب كيفية حفظ الرسائل في جداول قاعدة البيانات.
- تحديث أسماء الجداول: داخل قوالب SQL لمستخدم قاعدة البيانات الثاني، قم بتحديث أسماء الجداول الحالية (ozekimessagein و ozekimessageout) لـ تطابق الجداول الجديدة (ozekimessagein2 و ozekimessageout2).
يتعرض Ozeki SMS Gateway الخاص بي دائمًا لقطع الاتصال من خادم MySQL مع الرسالة التالية: MySQL Server has gone away. ماذا يجب أن أفعل؟
لتحسين الاستجابة عند استخدام Ozeki مع MySQL، اضبط إعداد المهلة. إليك الطريقة:
تكوين مهلة MySQL:
- قم بتحرير ملف تكوين MySQL (مثل my.ini) وقم بتعيين المعلمة interactive_timeout إلى المدة المطلوبة بالثواني (مثل interactive_timeout = 28800 لمدة 8 ساعات).
- احفظ التغييرات وأعد تشغيل خدمة MySQL.
تحديث سلسلة اتصال Ozeki:
-
قم بتعديل سلسلة اتصال Ozeki لاستخدام Interactive بدلاً من wait_timeout. التنسيق الصحيح هو Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;Interactive=قيمة_المهلة_الخاصة_بك.
- تذكر استبدال قيمة_المهلة_الخاصة_بك بالمهلة المطلوبة بالثواني.
Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;interactive=;Option=8;
More information
- رد الرسائل من الكمبيوتر إلى الهاتف المحمول
- كيفية كتابة نص برمجي للرد على الرسائل القصيرة
- كيفية إرسال رد على الرسائل القصيرة من SQL