كيفية جدولة رسالة SMS في Python flask
أبسط طريقة لإرسال رسائل SMS مجدولة من Python هي استخدام واجهة برمجة تطبيقات HTTP/Rest SMS المدمجة في Ozeki SMS Gateway. عند استخدام هذه الواجهة، ستقوم بإرسال رسائل SMS عن طريق إصدار طلب HTTP Post إلى بوابة SMS. سيحتوي طلب HTTP Post على رسالة مُنسقة بتنسيق json. ستقوم بوابة SMS بإرسال هذه الرسالة إلى هاتف المستلم، وسيتم إرجاع استجابة HTTP 200 OK لطلبك.
كود Python لإرسال رسالة SMS مجدولة إلى الهاتف المحمول
يوضح مثال كود Python لرسائل SMS أدناه كيفية إرسال رسائل SMS مجدولة باستخدام واجهة برمجة تطبيقات HTTP REST SMS الخاصة بـ Ozeki SMS Gateway باستخدام مكتبة ozekilibsrest في Python. هذه المكتبة مقدمة لك مجانًا، ويمكنك استخدامها وتعديلها في أي من مشاريعك.
SendScheduledSms.py
from flask import Flask, render_template, request from ozekilibsrest import Configuration, Message, MessageApi from datetime import datetime 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'], time_to_send=datetime.strptime(request.form.get('time_to_send'), "%Y-%m-%d %H:%M:%S") ) log = api.send(message) logs.append(log) return render_template('SendScheduledSms.html', logs=logs) if __name__ == '__main__': app.run()
SendScheduledSms.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>إرسال رسالة SMS مجدولة باستخدام 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: 40vh; justify-content: space-evenly;"> <b>إلى العنوان:</b> <input class="form-control" type="text" name="to_address" placeholder="+36201111111" autocomplete=false> <b>النص:</b> <input class="form-control" type="text" name="text" placeholder="Hello world!" autocomplete=false> <b>وقت الإرسال:</b> <input class="form-control" type="text" name="time_to_send" placeholder="2021-08-06 16:30:00" autocomplete=false> <input class="btn btn-primary" style="font-weight: 600;" type="submit" name="submit" value="إرسال"> </form> <ul style="width: 40%; margin-left: 30%; height: 38vh; overflow-y: scroll;" class="list-group card"> <li class="list-group-item card"><b>السجلات:</b></li> {% if logs %} {% for log in logs %} <li class="list-group-item">{{ log }}</li> {% endfor %} {% endif %} </ul> </body> </html>
كيفية استخدام مثال Python لرسائل SMS:
يمكن استخدام هذا المثال في أي تطبيق Python. لاستخدامه، يجب عليك تثبيت حزمة ozekilibsrest باستخدام الأمر pip install ozekilibsrest. بعد تثبيت الحزمة، يجب عليك وضع التوجيه from ozekilibsrest import Configuration, Message, MessageApi في قسم الرأس من كود Python الخاص بك. سيسمح لك ذلك باستخدام الفئات المقدمة من مكتبة ozekilibsrest. يمكنك استخدام فئة Message لإنشاء الرسالة. يمكنك استخدام فئة MessageApi لإرسال الرسالة إلى بوابة SMS. ستقوم بوابة SMS بإعادة توجيه رسالتك إلى شبكة الهاتف المحمول إما عبر اتصال لاسلكي أو عبر الإنترنت.
تحميل SendScheduledSms.py
يمكن تنزيل الكود المصدري الموضح في هذه المقالة واستخدامه وتعديله مجانًا.
تحميل: SendScheduledSms.py.zip (1.62Kb)
ما الموجود في مجلد SendScheduledSms.py؟
يحتوي مجلد SendScheduledSms.py على سكريبت مثال Python لرسائل SMS الذي سيوضح لك كيفية إرسال رسائل SMS مجدولة باستخدام Python.
كيفية تثبيت مكتبة ozekilibsrest
لتثبيت مكتبة ozekilibsrest، يجب عليك فتح موجه الأوامر واستخدام الأمر التالي. سيؤدي هذا إلى تثبيت مكتبة ozekilibsrest والتبعيات التي تحتاجها.
pip install ozekilibsrest
لتثبيت مكتبة فلاسك، يجب عليك فتح موجه الأوامر واستخدام الأمر التالي. سيقوم هذا بتثبيت مكتبة فلاسك والتبعيات التي تحتاجها.
pip install flask
كيفية إرسال رسائل نصية مجدولة من بايثون (خطوات سريعة)
لإرسال رسائل نصية مجدولة من بايثون:
- قم بتنزيل وتثبيت بايثون
- قم بتثبيت مكتبة ozekilibsrest باستخدام pip أو codna
- قم بتنزيل ملف SendScheduledSms.py.zip
- استخرج ملف .zip من مجلد التنزيلات
- افتح ملف SendScheduledSms.py في أي محرر نصوص
- شغّل بوابة Ozeki للرسائل النصية القصيرة
- قم بإنشاء مستخدم واجهة برمجة تطبيقات HTTP في Ozeki
- شغّل كود SendScheduledSms.py باستخدام موجه الأوامر لإرسال رسائل الاختبار النصية
- تحقق من صندوق المرسلة في بوابة Ozeki للرسائل النصية القصيرة
تثبيت بوابة Ozeki للرسائل النصية القصيرة وإنشاء مستخدم واجهة برمجة تطبيقات HTTP
لتتمكن من إرسال رسائل نصية من بايثون، تحتاج أولاً إلى تثبيت بوابة Ozeki للرسائل النصية القصيرة. يمكن تثبيت بوابة الرسائل النصية القصيرة على نفس الكمبيوتر الذي تقوم فيه بتطوير كود بايثون الخاص بك. بعد التثبيت، الخطوة التالية هي ربط بوابة Ozeki للرسائل النصية القصيرة بشبكة الهاتف المحمول. يمكنك إنشاء مستخدم واجهة برمجة تطبيقات HTTP للرسائل النصية القصيرة. قم بإنشاء مستخدم باسم مستخدم "http_user"، وكلمة مرور "qwe123" لجعل المثال يعمل دون تعديل.
بعد إعداد البيئة، يمكنك تشغيل كود بايثون الخاص بك.
رابط واجهة برمجة تطبيقات HTTP لإرسال رسائل نصية من بايثون
لإرسال رسائل نصية من بايثون، سيتعين على بايثون إصدار طلب HTTP إلى بوابة الرسائل النصية القصيرة. رابط واجهة برمجة التطبيقات موضح أدناه. لاحظ أنه يجب استبدال عنوان IP (127.0.0.1) بعنوان IP الخاص ببوابة الرسائل النصية القصيرة. إذا كانت بوابة Ozeki للرسائل النصية القصيرة مثبتة على نفس الكمبيوتر الذي يعمل عليه تطبيق الرسائل النصية القصيرة الخاص ببايثون، يمكن أن يكون هذا 127.0.0.1. إذا كانت مثبتة على كمبيوتر مختلف، فيجب أن يكون عنوان IP لذلك الكمبيوتر.
http://127.0.0.1:9509/api?action=rest
مصادقة HTTP لإرسال رسائل نصية من بايثون
لمصادقة عميل الرسائل النصية القصيرة الخاص ببايثون، تحتاج إلى إرسال اسم المستخدم وكلمة المرور في سلسلة مشفرة base64 إلى الخادم في طلب HTTP. التنسيق المستخدم هو: base64(اسم المستخدم+":"+كلمة المرور). في بايثون يمكنك استخدام الكود التالي لإجراء هذا التشفير:
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 لإرسال رسائل نصية من بايثون
لإرسال الرسائل النصية القصيرة، تحتاج إلى تضمين الأسطر التالية كرؤوس في طلب HTTP. لاحظ أننا نضمن نوع المحتوى ورأس المصادقة.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
طلب HTTP لإرسال رسائل نصية من بايثون
لإرسال الرسائل النصية القصيرة، سيقوم تطبيق بايثون الخاص بك بإرسال طلب HTTP مشابه للطلب أدناه. لاحظ أن هذا الطلب يحتوي على جزء رأس HTTP وجسم HTTP. جسم HTTP هو سلسلة بيانات مشفرة JSON. يحتوي على أرقام المستلمين ونصوص الرسائل.
POST /api?action=sendmsg HTTP/1.1 Host: 127.0.0.1:9509 User-Agent: python-requests/2.26.0 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw== Content-Type: application/json Content-Length: 349 { "messages": [ { "message_id": "cd0067bf-0797-489e-8796-325dacc68552", "to_address": "+3620111111", "text": "Hello world!", "create_date": "2021-09-17T08:20:15", "valid_until": "2021-09-24T08:20:15", "time_to_send": "2021-09-17T08:25:00", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": true, "tags": [] } ] }
استجابة HTTP التي يتلقاها مثال الرسائل النصية القصيرة الخاص ببايثون
بمجرد أن تتلقى بوابة الرسائل النصية القصيرة هذا الطلب، ستقوم بإنشاء استجابة HTTP. ستتضمن استجابة HTTP رمز حالة للإشارة إلى ما إذا كان طلب إرسال الرسالة النصية القصيرة ناجحًا أم لا. كما ستعيد هيكلاً مشفرًا JSON لتزويدك بتفاصيل مفيدة حول إرسال الرسالة.
HTTP/1.1 200 OK Transfer-Encoding: chunked Content-Type: application/json; charset=utf8 Last-Modified: Thu, 16 Sep 2021 09:14:44 GMT Server: 10/10.3.124 Microsoft-HTTPAPI/2.0 User-Agent: OZEKI 10.3.124 (www.myozeki.com) Access-Control-Allow-Origin: * Date: Fri, 17 Sep 2021 06:20:15 GMT { "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": "cd0067bf-0797-489e-8796-325dacc68552", "from_station": "%", "to_address": "+3620111111", "to_station": "%", "text": "Hello world!", "create_date": "2021-09-17 08:20:15", "valid_until": "2021-09-24 08:20:15", "time_to_send": "2021-09-17 08:25:00", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": false, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ], "status": "SUCCESS" } ] } }
مثال الرسائل النصية القصيرة في بايثون: SendScheduledSms.py
كيفية تنزيل مشروع SendScheduledSMS.py (فيديو تعليمي)
في الفيديو التالي، ستتعلم كيفية استخدام مشروع Python SendScheduledSms.py. سيبدأ الفيديو بصفحة التنزيل وسيأخذك حتى لوحة محرر الأكواد المفتوحة. ستتعلم كيفية تنزيل وفتح ملف الكود. مدة الفيديو 34 ثانية فقط، لكنه يحتوي على جميع المعلومات الضرورية لاستخدام ملف الكود النموذجي بنجاح.
كود المثال أدناه هو جزء من مجلد SendScheduledSms.py.zip.
لإرسال رسالة SMS باستخدام المشروع النموذجي أعلاه، يجب تشغيل سكريبت Python باستخدام الأمر python SendSms.py. بعد تشغيل السكريبت، ستلاحظ أن موجه الأوامر يخبرك بفتح الرابط http://127.0.0.1:5000. هناك يمكنك رؤية أول مشروع Python Flask الخاص بك، القادر على إرسال رسالة SMS مجدولة إلى بوابة Ozeki SMS.
كيفية استخدام المشروع (فيديو تعليمي)
في المقطع التالي، ستشاهد كيفية تشغيل كود Python SendScheduledSms.py. سيبدأ الفيديو بالكود المفتوح وسيأخذك حتى تبويب الأحداث مع سجل الرسالة المرسلة. ستشاهد كيفية تشغيل الكود وما يحدث عند تنفيذ الكود. مدة الفيديو أكثر من دقيقة بقليل، لكنه يحتوي على جميع المعلومات الضرورية لتشغيل المشروع.
الختام
عرضت هذه المقالة خطوات إرسال رسالة SMS مجدولة في طلب واحد من Python.
باستخدام هذه المعرفة والأدوات المقدمة، يجب أن تكون قادرًا على الوصول إلى عدة عملاء بكود واحد. تلعب بوابة Ozeki SMS دورًا مهمًا في هذه العملية لأن هذا البرنامج ينظم عملية تسليم الرسائل. تعمل بوابة Ozeki SMS بجودة وأداء عاليين، مما يسمح لك بإرسال حتى 1000 رسالة SMS في الثانية.
واصل تعلمك في صفحات الدروس الخاصة بـ Ozeki، حيث يمكنك القراءة عن مواضيع مثل
استقبال رسائل SMS في Python.
الآن كل ما عليك فعله هو تنزيل بوابة Ozeki SMS والبدء في العمل!
More information
- إرسال SMS باستخدام Python flask مع واجهة برمجة التطبيقات REST (HTTP) (عينة كود)
- إرسال عدة رسائل SMS باستخدام Python flask مع واجهة برمجة التطبيقات REST (HTTP) (عينة كود)
- جدولة SMS باستخدام Python flask مع واجهة برمجة التطبيقات REST (HTTP) (عينة كود)
- استقبال SMS باستخدام Python flask مع واجهة برمجة التطبيقات REST (HTTP) (عينة كود)
- حذف SMS باستخدام Python flask مع واجهة برمجة التطبيقات REST (HTTP) (عينة كود)
- كيفية تنزيل أحدث مكتبة Python flask SMS من Github