كيفية إرسال رسائل SMS من بايثون فلاسك

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

كيفية إرسال رسائل SMS من بايثون فلاسك
الشكل 1 - كيفية إرسال رسائل SMS من بايثون فلاسك

كود بايثون لإرسال رسائل SMS إلى الهاتف المحمول

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

SendSms.py

		from flask import Flask, render_template, request
		from ozekilibsrest import Configuration, Message, MessageApi
		app = Flask(__name__)
		
		configuration = Configuration(
		    username="http_user",
		    password="qwe123",
		    api_url="http://127.0.0.1:9509/api"
		)
		
		api = MessageApi(configuration)
		
		logs = []
		
		
		@app.route('/', methods=['GET', 'POST'])
		def index():
		    if request.method == 'POST':
		        message = Message(
		            to_address=request.form['to_address'],
		            text=request.form['text']
		        )
		        log = api.send(message)
		        logs.append(log)
		    return render_template('SendSms.html', logs=logs)
		
		
		if __name__ == '__main__':
		    app.run()
	

الكود 1 - SendSms.py

SendSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Send SMS with Ozeki SMS Gateway</title>
		        <link rel="stylesheet"
		        href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
		        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
		        crossorigin="anonymous">
		    </head>
		    <body>
		        <form action="/" method="POST" class="form-group" style="width: 40%;
		        margin-top: 10vh; margin-left: 30%;
		        display: flex; flex-direction: column;
		        height: 30vh; justify-content: space-evenly;">
		            <b>To address:</b>
		            <input class="form-control" type="text"
		                   name="to_address" placeholder="+36201111111"
		                   autocomplete=false>
		            <b>Text:</b>
		            <input class="form-control"
		                   type="text" name="text"
		                   placeholder="Hello world!"
		                   autocomplete=false>
		            <input class="btn btn-primary"
		                   style="font-weight: 600;"
		                   type="submit"
		                   name="submit"
		                   value="SEND">
		        </form>
		        <ul style="width: 40%; margin-left: 30%; height: 40vh; overflow-y: scroll;"
		            class="list-group card">
		            <li class="list-group-item card"><b>Logs:</b></li>
		            {% if logs %}
		                {%for log in logs%}
		                    <li class="list-group-item">{{ log }}</li>
		                {%endfor%}
		            {% endif  %}
		        </ul>
		    </body>
		</html>
	

الكود 2 - SendSms.html

كيفية استخدام مثال SMS في بايثون:

يمكن استخدام هذا المثال في أي تطبيق بايثون. لاستخدامه، يجب تثبيت حزمة ozekilibsrest باستخدام الأمر pip install ozekilibsrest وحزمة flask باستخدام الأمر pip install flask. بعد تثبيت الحزم، يجب إضافة التوجيهات from ozekilibsrest import Configuration, Message, MessageApi و from flask import Flask, render_template, request إلى قسم الرأس في كود المصدر الخاص بك. سيسمح لك ذلك باستخدام الفئات المقدمة من مكتبة ozekilibsrest. يمكنك استخدام فئة Message لإنشاء الرسالة النصية، وفئة MessageApi لإرسال الرسالة إلى بوابة الرسائل. ستقوم بوابة الرسائل بإعادة توجيه رسالتك إلى شبكة الهاتف المحمول إما عبر اتصال لاسلكي أو عبر الإنترنت.

تحميل SendSms.py

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

ما الموجود في مجلد SendSms.py؟

يحتوي مجلد SendSms.py على سكريبت مثال SMS في بايثون والذي سيوضح لك كيفية إرسال رسائل SMS متعددة باستخدام بايثون.

مجلد send sms py
الشكل 2 - ما الموجود داخل SendSms.py.zip

كيفية تثبيت مكتبة ozekilibsrest

لتثبيت مكتبة ozekilibsrest، يجب فتح موجه الأوامر واستخدام الأمر التالي. سيؤدي هذا إلى تثبيت مكتبة ozekilibsrest والتبعيات التي تحتاجها.

		pip install ozekilibsrest
	

الكود 3 - أمر تثبيت مكتبة ozekilibsrest

كيفية تثبيت مكتبة flask

لتثبيت مكتبة flask، يجب فتح موجه الأوامر واستخدام الأمر التالي. سيؤدي هذا إلى تثبيت مكتبة flask والتبعيات التي تحتاجها.

		pip install flask
	

الكود 4 - أمر تثبيت مكتبة flask

كيفية إرسال رسائل SMS من بايثون (إرشادات بسيطة)

لإرسال رسائل SMS من بايثون:

  1. قم بتنزيل وتثبيت بايثون
  2. قم بتثبيت مكتبة ozekilibsrest باستخدام pip أو codna
  3. قم بتثبيت مكتبة flask باستخدام pip أو codna
  4. قم بتثبيت مستخدم HTTP API
  5. قم بتمكين تسجيل أحداث الاتصال في علامة التبويب المتقدمة
  6. قم بتنزيل ملف SendSMS.py
  7. افتح ملف SendSms.py في المفكرة
  8. قم بتغيير البيانات إلى بياناتك الخاصة
  9. قم بتشغيل تطبيق Ozeki SMS Gateway
  10. قم بتشغيل كود بايثون SendSms.py عن طريق فتحه
  11. تحقق من السجلات لمعرفة ما إذا كانت الرسالة قد أرسلت

قم بتثبيت Ozeki SMS Gateway وإنشاء مستخدم HTTP API

لتتمكن من إرسال رسائل SMS من بايثون، تحتاج أولاً إلى تثبيت Ozeki SMS Gateway. يمكن تثبيت بوابة الرسائل القصيرة على نفس الكمبيوتر الذي تقوم فيه بتطوير كود بايثون في Python IDLE أو المفكرة. بعد التثبيت، تكون الخطوة التالية هي ربط Ozeki SMS Gateway بشبكة الهاتف المحمول. يمكنك إنشاء مستخدم HTTP SMS API. قم بإنشاء مستخدم باسم مستخدم "User1"، وكلمة مرور "qwe123" لجعل المثال يعمل دون تعديل.

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

رابط HTTP API لاستخدام إرسال SMS من بايثون

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

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

مصادقة HTTP لاستخدام إرسال SMS من بايثون

لمصادقة عميل الرسائل القصيرة بايثون، تحتاج إلى إرسال اسم المستخدم وكلمة المرور في سلسلة مشفرة base64 إلى الخادم في طلب HTTP. التنسيق المستخدم هو: base64(username+":"+password). في بايثون، يمكنك استخدام الكود التالي لإجراء هذا التشفير:

		def create_authorization_header(username, password):
		    username_password = f'{ username }:{ password }'
		    return f'Basic { b64encode(username_password.encode()).decode() }'
	

على سبيل المثال، إذا قمت بتشفير اسم المستخدم 'http_user' وكلمة المرور 'qwe123'، ستحصل على السلسلة المشفرة base64 التالية: aHR0cF91c2VyOnF3ZTEyMw==. للإرسال

رأس طلب HTTP لإرسال SMS من بايثون

لإرسال رسائل SMS، تحتاج إلى تضمين الأسطر التالية كرؤوس في طلب HTTP. لاحظ أننا نضمن نوع المحتوى ورأس المصادقة.

		Content-Type: application/json
		Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	

طلب HTTP لإرسال SMS من بايثون

لإرسال الرسالة القصيرة، سيقوم تطبيق بايثون الخاص بك بإرسال طلب 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": "b570dbae-3a05-456d-9dad-a02161b16f1c",
		      "to_address": "+36201111111",
		      "text": "Hello, World!",
		      "create_date": "2021-06-11 11:20:02",
		      "valid_until": "2021-06-18 11:20:02",
		      "time_to_send": "2021-06-11 11:20:02",
		      "submit_report_requested": true,
		      "delivery_report_requested": true,
		      "view_report_requested": true,
		      "tags": []
		    }
		  ]
		}
	

استجابة HTTP التي يتلقاها مثال الرسائل القصيرة بايثون

بمجرد أن تتلقى بوابة الرسائل القصيرة هذا الطلب، ستقوم بإنشاء استجابة 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 11:17:49 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": "b570dbae-3a05-456d-9dad-a02161b16f1c",
		        "from_station": "%",
		        "to_address": "+36201111111",
		        "to_station": "%",
		        "text": "Hello, World!",
		        "create_date": "2021-06-11 11:20:02",
		        "valid_until": "2021-06-18 11:20:02",
		        "time_to_send": "2021-06-11 11:20:02",
		        "submit_report_requested": true,
		        "delivery_report_requested": true,
		        "view_report_requested": false,
		        "tags": [
		          {
		            "name": "Type",
		            "value": "SMS:TEXT"
		          }
		        ],
		        "status": "SUCCESS"
		      }
		    ]
		  }
		}
	

قم بربط بوابة الرسائل القصيرة الخاصة بك بشبكة الهاتف المحمول وإنشاء حساب مستخدم HTTP API

نفترض أنك قمت بالفعل بتثبيت Ozeki SMS Gateway، وقمت بربطها بشبكة الهاتف المحمول. لكي تتمكن من إرسال رسائل SMS إلى هاتف محمول من بايثون، تحتاج إلى إعداد حساب مستخدم HTTP API في Ozeki SMS Gateway.

إنشاء مستخدم جديد (فيديو تعليمي)

يعرض هذا الفيديو كيفية إعداد حساب مستخدم جديد لـ HTTP API. سيبدأ من الصفحة الرئيسية لبوابة Ozeki SMS وينتهي بعلامة تبويب الأحداث للمستخدم الجديد. سيوضح لك الفيديو كيفية إنشاء وتكوين المستخدم الجديد. الشيء الرائع في هذا الفيديو هو أنه لا يستغرق سوى 30 ثانية ولكنه يحتوي على جميع المعلومات التي تحتاجها لإنشاء مستخدم HTTP API جديد.

الفيديو 1 - كيفية إعداد حساب مستخدم HTTP API (فيديو تعليمي)

كيفية إرسال SMS من Python باستخدام واجهة برمجة تطبيقات Python SMS (فيديو تعليمي)

يوضح هذا الفيديو كيفية تنزيل ملف SendSms.py.zip من هذه الصفحة، وكيفية فتح محتوى الملف المضمن في أي محرر نصوص مثل Notepad في Windows. إذا شاهدت الفيديو، ستلاحظ أن محتويات ملف SendSms.py.zip موضوعة على سطح مكتب Windows.

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

مثال SMS باستخدام Python: SendSms.py

كود المثال أدناه هو جزء من ملف SendSms.py.zip.

كيفية إرسال SMS باستخدام سكربت Python
الشكل 3 - SendSms.py

لإرسال SMS باستخدام مشروع المثال أعلاه، يجب تشغيل سكربت Python باستخدام الأمر python SendSms.py. بعد تشغيل السكربت، ستلاحظ أن موجه الأوامر يقول أنه يجب فتح الرابط http://127.0.0.1:5000. هناك يمكنك رؤية أول مشروع Python Flask الخاص بك، القادر على إرسال رسالة SMS إلى بوابة Ozeki SMS.

تشغيل سكربت SendSms.py
الشكل 4 - ناتج سكربت SendSms.py

نتيجة سكربت Python
الشكل 5 - صفحة SendSms.html

كيفية التحقق من قبول SMS من قبل مستخدم HTTP (فيديو تعليمي)

بعد إرسال SMS، من الجيد التحقق من بوابة SMS الخاصة بك، لمعرفة ما تم استلامه. يمكنك التحقق من السجل عن طريق فتح تفاصيل مستخدم HTTP من وحدة تحكم إدارة بوابة Ozeki SMS. يوضح الفيديو التالي ما يجب البحث عنه. سيبدأ الفيديو بالكود المفتوح وينتهي بتفاصيل الرسالة المرسلة. ستتعلم كيفية إطلاق المشروع، وكيف يبدو المشروع أثناء التشغيل وكيف يبدو ملف السجل بعده. الفيديو لا يستغرق سوى 42 ثانية وسهل الفهم. لن تواجه أي مشكلة في متابعته.

الفيديو 3 - كيفية إرسال SMS باستخدام سكربت Python أعلاه (فيديو تعليمي)

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

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

اختبار ما إذا كان الطلب مقبولاً (فيديو تعليمي)

في الفيديو التالي، سترى كيفية التحقق مما إذا كان عميل SMPP قد نجح في إرسال رسالتك. ستتعلم كيفية فتح علامة تبويب الأحداث لمستخدم SMPP وما يجب البحث عنه. الفيديو لا يستغرق سوى 18 ثانية ولكنه سيكون مفيدًا جدًا.

الفيديو 4 - كيفية اختبار ما إذا كان الطلب مقبولاً من قبل عميل SMPP (فيديو تعليمي)

استلام SMS على الهاتف (فيديو تعليمي)

في الفيديو التالي، سترى كيف تبدو الرسالة الواردة التي تم إرسالها من بوابة Ozeki SMS. سيبدأ بشاشة رئيسية لهاتف Android وينتهي بفتح الرسالة. لا يستغرق سوى 18 ثانية ويمكنك رؤية عملية استلام الرسالة بالكامل.

الفيديو 5 - كيف تبدو رسالة SMS مستلمة على الهاتف المحمول (فيديو تعليمي)

ملخص

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

لا تنهي القراءة هنا، تصفح صفحة البرامج التعليمية لأوزيكي وتعلم عن استقبال الرسائل القصيرة في بايثون.

الشيء التالي الذي عليك فعله هو تحميل أوزيكي بوابة الرسائل القصيرة وابدأ العمل!

More information