نص بيثون مكون من 20 سطرًا يتمنى الأهل صباح الخير كل يوم من خلال WhatsApp

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

في هذا الدليل ، سنكتب نصًا بيثونًا بسيطًا مصممًا لإرسال رسائل WhatsApp. في سياق العمل ، سوف نستخدم حزمة Twilio Python. لتنظيم الإطلاق اليومي للبرنامج النصي في وقت معين ، سنضع الكود في السحابة.



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

سيتألف العمل في المشروع من ثلاث خطوات:

  1. الإعداد Twilio.
  2. التعلم وتعديل الرمز.
  3. نشر مشروع في السحابة وإعداد برنامج تشغيل.

الخطوة 1. إعداد Twilio


قم بإنشاء حساب مجاني على موقع Twilio الإلكتروني ، وأكد عنوان بريدك الإلكتروني ورقم هاتفك.


تسجيل حساب Twilio

بالإضافة إلى ذلك ، كجزء من عرض Twilio المجاني ، يجب عليك استخدام WhatsApp sandbox (WhatsApp Sandbox). هذا يعني أنه لا يمكنك استخدام رقم هاتفك الخاص ، وأنه يجب عليك مراجعة الإجراء الخاص بإصدار إذن لتلقي رسائل WhatsApp.

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

كل هذا لا يسبب الكثير من الفرح ، ولكن ما هو متاح لنا كجزء من عرض Twilio المجاني يتيح لنا حل مشكلتنا. بالإضافة إلى ذلك ، اتضح أن صندوق حماية WhatsApp لا يزال هو الخيار الوحيد المتاح على نطاق واسع.

تحتاج الآن إلى توصيل هاتف مستلم الرسائل بالرمل ، وبعد ذلك يمكنك إرسال رسائل إلى هذا الهاتف. لمعرفة كيفية القيام بذلك ، تحتاج إلى الانتقال إلى قسم وحدة التحكم Twilio ، المخصص لـ WhatsApp. على وجه الخصوص ، يُقترح هنا إرسال رسالة WhatsApp مع النص المحدد إلى رقم محدد.


صفحة وحدة التحكم Twilio مع تعليمات لتوصيل الهاتف الذي يمكنك إرسال الرسائل إليه


طلب الاتصال المرسلة من الهاتف

احفظ رقم WhatsApp الصادر لك في جهات الاتصال الخاصة بك. يمكن تعيين أي اسم. من أجل عدم تعقيد حياتي ، اتصلت بجهة الاتصال هذه Twilio Sandbox ، ثم أرسلت رسالة إليه من هاتف والدي (يمكن ملاحظة ذلك في الشكل السابق). يتم تنفيذ هذا الإجراء مرة واحدة فقط.

أنت الآن بحاجة إلى الانتقال إلى وحدة التحكم Twilio والحصول على رمز الأمان SID والمصادقة لحسابك. ستساعد هذه البيانات Twilio في التعرف عليك عندما تعمل برمجيًا مع الخدمة.

الخطوة 2. تعلم وتعديل التعليمات البرمجية


قم بتنزيل مستودع جيثب وفك ضغط الأرشيف.


محتويات ملف مضغوط

ستجد هنا الملف المصدر ( whatsapp_messaging.py ) وحزمة نشر المشروع ( aws_lambda_deploy.zip ).

هنا هو رمز البرنامج النصي:

 from twilio.rest import Client def msg_mom_and_dad(event=None, context=None):    #    SID   ,     Twilio    twilio_sid = 'AC84c9f1602d7fb6af4eda5b0c39a03b37'    auth_token = '4a2021b28f1aa606d9c6945d3c248ebd'    whatsapp_client = Client(twilio_sid, auth_token)    #        ,    #         contact_directory = {'daddy':'+919624666836'}    for key, value in contact_directory.items():        msg_loved_ones = whatsapp_client.messages.create(                body = 'good morning {} !'.format(key),                from_= 'whatsapp:+14155238886',                to='whatsapp:' + value,            )        print(msg_loved_ones.sid) 

الآن سوف نقوم بتحليل هذا الرمز. هنا ، للراحة ، لقطة شاشة مع خطوط مرقمة.

Whatsapp_messaging.py رمز الملف مع خطوط مرقمة

  • السطر 1. استيراد عميل للعمل مع Twilio REST-API.
  • السطر 3. إنشاء دالة msg_mom_and_dad . سنقوم بتمرير هذه الوظيفة إلى AWS. سيتم استدعاؤه يوميًا في الوقت المحدد.
  • خطوط 6-7. هنا تحتاج إلى استبدال sid الموجود و auth_token في الكود برمز خاص بك (تحدثنا عن استلامهم في نهاية القسم السابق).
  • السطر 9. قم بإنشاء كائن عميل Twilio باستخدام بيانات الاعتماد.
  • سطر 13. إنشاء قاموس. هنا ، يتم استخدام اسم مستلم الرسالة كمفتاح ، ورقم هاتفه كقيمة. يمكنك إضافة معلومات اتصال إضافية إلى هذا القاموس.
  • السطر 15. حلقة for ، التي يتم فيها عبور القاموس (يوجد حتى الآن إدخال واحد فقط فيه). في النص body تحتاج إلى تحديد نص الرسالة. قمت بإنشاء رسالة بسيطة تحتوي على نص "صباح الخير" ، متبوعة بقيمة مأخوذة من مفتاح عنصر القاموس الحالي. في حالتي ، يؤدي هذا إلى تكوين رسالة "صباح الخير يا أبي!". يشير from_ إلى رقم WhatsApp الذي تلقيناه مسبقًا. في لكتابة عدد مستلم الرسالة - الذي أرسلوا منه سابقًا طلبًا للاتصال بصندوق Twilio WhatsApp.
  • السطر 23. هنا ، من أجل التحقق من حالة الرسالة ، نعرض SID الخاص بها. لن نستخدم هذه المعلومات.

لاستخدام هذا الرمز لإرسال الرسائل ، تحتاج إلى تغيير ما يلي فيه:

  • twilio_sid
    auth_token
    contact_directory
    from_
    الجسم (هذا اختياري)

بعد إجراء تغييرات على الكود ، احفظ الملف. ثم قم بفك ضغط أرشيف aws_lambda_deploy.zip ، واستبدل ملف whatsapp_messaging.py aws_lambda_deploy.zip بنفس الاسم ، ثم aws_lambda_deploy.zip حزم كل شيء مرة أخرى في أرشيف .zip. معنى هذه الإجراءات هو أن تدرج في الكود بيانات الاعتماد الخاصة بك ومعلومات حول من تريد إرسال رسائل إليهم. كل شيء آخر في الحزمة ، المصممة للنشر على AWS ، لم يتغير. الآن دعونا نعمل مع AWS.

الخطوة 3. نشر المشروع على AWS وتكوين المشغل


الرمز جاهز لتشغيل وإرسال رسائل WhatsApp. إذا كنت مهتمًا بالدور الذي تلعبه ملفات أخرى من تشغيل أرشيف aws_lambda_deploy.zip في المشروع ، aws_lambda_deploy.zip على أن من بين هذه الملفات حزمة Twilio وجميع التبعيات الأخرى للمشروع. نحتاج إلى كل هذا لأننا نخطط لاستخدام وظائف AWS Lambda في بيئة Python التي لا تحتوي على حزمة Twilio. ولماذا لا نصلح هذا الأمر من خلال تشغيل الأمر pip install twilio لتثبيت الحزمة الصحيحة؟ الحقيقة هي أنه هنا ليس لدينا خادم.

للقيام بذلك ، نستخدم AWS Lambda - بيئة حوسبة بدون خادم يمكنك من خلالها وضع أجزاء من التعليمات البرمجية ، والتي يتم تشغيل استدعاءها وفقًا لاحتياجات المستخدم من خلال العديد من الأحداث والمشغلات. من المخطط تشغيل الشفرة الخاصة بنا مرة واحدة فقط يوميًا ، لذا فإن استخدام شيء مثل خادم EC2 على AWS الذي يعمل على مدار الساعة سيكون مضيعة لموارد الحوسبة والمال. سيتم استدعاء وظيفة Lambda الخاصة بنا يوميًا في وقت محدد بناءً على طلب من المشغل ، وسيستغرق تنفيذها القليل جدًا من الوقت.

البدء في إنشاء وظيفة Lambda

تسجيل الدخول إلى حسابك AWS. بعد ذلك ، انتقل إلى Services → Compute → Lambda → Create a function .


شاشة إنشاء وظيفة Lambda

دعنا نعطي الوظيفة اسما.

نظرًا لأن البيئة التي سيتم فيها تنفيذ الوظيفة ، سنختار Python 3.6. لا نحتاج إلى الاتصال بخدمات AWS الأخرى. لذلك ، نحن راضون عن مستوى الأذونات المحدد بواسطة خيار Create a new role with basic Lambda permissions .

بعد الانتهاء من الإعدادات ، فقط اضغط على زر Create function . الآن سنكون على لوحة التحكم الرئيسية.


لوحة التحكم

هنا ، في قسم Function code ، تحتاج إلى تحديد Handler يمكن للنظام من خلاله تشغيل التعليمات البرمجية الخاصة بنا. في حالتنا ، في حقل Handler ، اكتب whatsapp_messaging. msg_mom_and_dad whatsapp_messaging. msg_mom_and_dad ، مع تحديد اسم الملف مع الكود والوظيفة التي نريد الاتصال بها.

في حقل Function package ، تحتاج إلى تحميل ملف .zip الخاص بنا ، أي الملف الذي أنشأناه في الخطوة السابقة.

الآن الرمز جاهز للتشغيل. يمكنك التحقق مما إذا كانت الوظيفة تعمل وترسل الرسائل من خلال النقر على زر Test .

ستكون الخطوة الأخيرة في عملنا هي إعداد مشغل يطلق على الوظيفة يوميًا في وقت معين. اتبع المسار Add trigger → CloudWatch Events .


وضع الزناد

نحن بحاجة إلى إنشاء قاعدة جديدة ( Rule ). يحتاج إلى تعيين اسم ( Rule name ). إذا رغبت في ذلك ، يمكنك إضافة وصف لها ( Rule description ).

حدد نوع Rule type ( Rule type ) Schedule expression .

يتم ضبط وقت استدعاء الوظيفة باستخدام cron(30 1 * * ? *) . دعنا نحلل هذا البناء:

  • 30 1 يعني التوقيت UTC 1:30 في الصباح. الساعة 7 صباحًا في وقت IST.
  • يشير الحرفان التاليان ، * * ، إلى يوم الشهر والشهر.
  • الشخصين المقبلين ? * ? * ، اسمح لك بتحديد يوم الأسبوع والسنة. هذا التصميم يعني أنه سيتم استدعاء الوظيفة يوميًا ، دون قيود على السنوات والشهور.

هنا يمكنك معرفة كيفية إعداد وظائف cron الخاصة بك.

بعد اكتمال إعداد المشغل ، تحقق مما إذا كانت خانة الاختيار Enable trigger ممكّنة ، والتي تمكن المشغل. الآن يبقى فقط النقر على زر " Add " وسيتم إنشاء المشغل.


معلومات الزناد


Lambda تفاصيل الوظيفة

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

النتائج



رسالة مرسلة بواسطة بيثون النصي

لقد أكملنا العمل في المشروع. يمكنك الآن تغيير اسم جهة اتصال Twilio Sandbox إلى اسمك الخاص على هاتف مستلم الرسالة ، في جهات اتصال WhatsApp (لقد غيرته إلى Son). يتيح لك نظامنا أيضًا التواصل مع مستلم الرسائل من لوحة التحكم Twilio.

أعزائي القراء! هل تستخدم Twilio في مشاريعك؟

Source: https://habr.com/ru/post/ar463933/


All Articles