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

عند التخطيط لحفل زفاف ، تحتاج إلى النظر في العديد من النقاط: الطعام والديكور والديكور ومصابيح الطاولة (نعم ، منفصلة عن الزخرفة) ، والزهور ، وإقامة الضيوف ، والنقل ، والترفيه ، واختيار المكان. بشكل عام ، عند التخطيط لحفل زفاف ، تواجه العديد من الأشياء المجهولة ، لكنني متأكد من شيء واحد: لا يمكن لحفل زفاف الاستغناء عن مجموعة كاملة من القوائم ، القوائم المتداخلة التي لا تنتهي حتى النهاية. كلما زاد عدد القوائم التي تطفو أمام عيني ، بدأت أفكر في كثير من الأحيان في كيفية تحسين عملية التحضير. كان غير فعال بشكل مؤلم وتم تنفيذ جميع الأعمال يدويًا. كنت على يقين من أن التكنولوجيا يمكن أن تساعد بالتأكيد على تحسين بعض النقاط على الأقل.
قد تتفاجأ عندما تعلم أن دعوة الناس لحضور حفل زفاف مكلف (أكثر من 380 رطلاً للشخص الواحد). تحتاج أولاً إلى إرسال دعوات أولية مع تاريخ وإشعار قصير ، وعندها فقط - كاملة ، مع وصف أكثر تفصيلاً للحدث. علاوة على ذلك ، يتم إرسال كل هذا عن طريق البريد ، مما يعني أنه بطيء. محاولات "الإمساك" بالمدعوين والحصول على إجابة منهم حول ما إذا كانوا يريدون القدوم إلى العطلة مع طعام وشراب مجاني (على الرغم من أنه ، على ما يبدو ، من لا يريد؟!) يستغرق الكثير من الوقت. وأخيرًا ، فإن إرسال الدعوات ليس صديقًا للبيئة ، لأن البطاقات الورقية شيء لمرة واحدة ، فإنها تنسى بسرعة وتصبح عديمة الفائدة لأي شخص.
ولكن العودة إلى القوائم. نقسم الضيوف إلى عدة مجموعات:
- أولئك الذين تود رؤيتهم في المهرجان
- من رد على الدعوة الثانية طالبا الرد
- من قبل الدعوة
- أولئك الذين قبلوا الدعوة واختاروا الطعام
لكني أحب القوائم: لديهم بعض المتطلبات المحددة مسبقًا التي تحولها إلى كائن رائع للأتمتة.
رسالة في زجاجة
كنت متأكدًا من أن جميع الضيوف المحتملين ، بغض النظر عن أعمارهم ، لديهم هاتف محمول ، مما يعني أن الوقت قد حان لتويليو. يمكن تخطي الرمز الوارد هنا بأمان إذا كنت ترغب في ذلك ، لأنه متاح دائمًا في
مستودع GitHub المقابل.
SMS كقناة اتصال تناسب احتياجاتي تمامًا. يمكنني إعداد بريد جماعي للرسائل ، ومعالجة الردود بسرعة وكفاءة. من خلال عمل الرسومات التخطيطية الأولى للمنتج والنظر في خيارات قاعدة البيانات ، حاولت أن أفعل شيئًا بسيطًا يمكن مشاركته بسهولة ولا أرغب في تخصيص الكثير من الوقت للمظهر. في النهاية ، صادفت مكتبة بيثون gspread ، والتي سمحت لي بالقراءة من
جداول google والكتابة إليها. لم يكن هذا الخيار الأسرع ، بل كان خيارًا مرنًا إلى حد ما ، مما سهل الوصول إلى الجداول وقراءة النتائج.
بالنسبة للمطالبة الأولى ، قمت
بإنشاء جدول بثلاثة أعمدة:
- الاسم
- رقم الهاتف
- Confirmation_status (حالة التأكيد)
- حالة تفاصيل الاتصال
- Message_count (وصل عدد الرسائل المرسلة إلى الضيف في المستقبل)
بعد الانتهاء من إدخال البيانات الأساسية ، قمت
بتشغيل القائمة من خلال
gspread ، والتي أرسلت رسالة SMS إلى كل ضيف يمتلك رقم هاتف محمول:
import json import time import gspread from oauth2client.client import SignedJwtAssertionCredentials from twilio.rest import TwilioRestClient
وبما أن الرسائل النصية القصيرة تبدو عادة مملة بعض الشيء ، أضفت بعض
Unicode لتوابلها. إليك ما تبدو عليه الرسالة للضيوف المحظوظين:

بعد ذلك ، استخدمت Flask كخادم ويب ، وقدمت طلب URL الخاص بي لـ Twilio Messaging يشير إلى / رسائل ، وقمت بإضافة عمليات تحقق بسيطة لتحليل الاستجابات:
@app.route("/messages", methods=['GET', 'POST']) def hello_guest(): if "yes" in body_strip: # confirmation_status wks_attendees.update_acell("F"+str(guest_confirmation_cell.row), 'Accepted') # « » resp.message(u"\u2665" + "Thanks for confirming, we'll be in touch!" + u"\u2665") # r , elif "no" in from_body.lower(): # « » wks_attendees.update_acell("F"+str(guest_confirmation_cell.row), 'Declined') # resp.message("Sorry to hear that, we still love you though!") else: # , resp.message("You sent a different keyword, we need a yes or a no, you sent: "+ from_body) return str(resp)


تم إرسال الرسالة الأولى في الساعة 8:37 صباحًا يوم 19 فبراير ، وتم استلام التأكيد الأول بعد ذلك بقليل في الساعة 8:40. بحلول الساعة 9:38 ، تلقيت بالفعل 23 تأكيدًا ، أي أن 32٪ من الإجابات كانت في جيبي! بعد يومين من بدء البريد الجماعي ، أكد 58٪ من الضيوف مشاركتهم بالفعل. على الرغم من النجاح الواضح ، لم تعجب زوجتي المستقبلية حتى الآن بنسبة 100 ٪ بخدمة الرسائل القصيرة الخاصة بي لدعوات الزفاف ، وقررت إضافة المزيد من الوظائف إلى التطبيق.
إحصائيات! يمكنني إنشاء قائمة ضيوف محدثة وتقديمها عند الطلب ، مما يمنح عروس المستقبل ملاحظات فورية. تبين أن الرمز بسيط للغاية ، لأنني قد قمت بالفعل بإعداد بعض أبسط العدادات في الجدول من قبل ، وبالتالي فقد جاء كل ذلك للحصول على محتويات الخلايا الفردية وإضافتها إلى الرسائل القصيرة:
مثال على الرسائل القصيرة المرسلة بواسطة هذا الرمز:

قد لا تبدو جميلة للغاية ، لكنها مفيدة للغاية.
حقيقة أن لورين يمكنها الآن متابعة التحديثات التلقائية لقائمة المدعوين أنقذتنا من الكثير من الصداع. ونتيجة لذلك ، تلقيت موافقة منها على الدمج الواسع النطاق للرسائل القصيرة ، وسرعان ما تم استخدام هذه الأداة في جميع العمليات تقريبًا حيث كان ذلك ممكنًا. كانت بعض التطبيقات واضحة ، على سبيل المثال ، إرسال إشعارات عبر الرسائل القصيرة حول إطلاق موقع زفاف (تم إنشاؤها ، بالمناسبة ، على
Heroku ) ، أو العمل مع قوائم هدايا الزفاف والعديد من الحلول الأخرى التي أفتخر بها حتى يومنا هذا.
وليمة مجيدة
بعد تجميع قائمة المدعوين وجمع الإجابات ، وصلنا إلى الدرس ، والذي عادة ما يتم تأجيله حتى وقت لاحق - معرفة تفضيلات الذوق للضيوف. كانت الخطوة الأولى هي إرسال رسالة نصية قصيرة أخرى لإبلاغ الضيوف بالحاجة إلى زيارة الموقع وتحديد فئات الأطعمة المقدمة باستخدام نموذج google. كان النموذج يبدو عاديًا تمامًا ، ولكنه ملأ نفس الملف الذي كانت فيه بيانات عن الزوار. وهكذا ، أصبح لدينا الآن جدول للزوار الذين قبلوا الدعوات وجدولًا يملأ نموذج اختيار الطعام. إذا كنا نتحدث عن أي أداة أتمتة عادية ، فسوف يتعين علي الانتظار حتى يختار الضيوف أطباقهم ببطء ، ومع ذلك ، تم عقد حفل زفافي بدعم من Twillio ، وهذا يعني أنه يمكنني الحصول على رد من الضيوف بأقل جهد.
كان من الضروري التحقق من جدولين باسم الضيوف وتحديث حالة الأطباق المختارة عند استلام معلومات جديدة. تطلب ذلك بعض الأجراس وصفارات إضافية في الشفرة ، ولكن بمجرد انتهائي منها ، يمكنني تشغيل البرنامج النصي في أقرب وقت ممكن ، وتلقي رسالة نصية قصيرة تحتوي على أحدث المعلومات:
import json import time import gspread from oauth2client.client import SignedJwtAssertionCredentials from twilio.rest import TwilioRestClient
الآن بعد أن كان لدي قائمة ضيوف دقيقة وقائمة أطباق محدثة باستمرار ، كان من المنطقي إتاحة هذه الإحصاءات للجمهور باستخدام التطبيق الرئيسي. لهذا ، كان من الضروري فقط إضافة محتويات الخلايا المقابلة إلى رد SMS:

تبين أن هذا الإجراء مفيد للغاية ، لأنه سمح للشركة التي تخدم العطلة بأن تكون على دراية بتقدمنا وقدمت معلومات عملية جدًا من أولئك الذين لم يختاروا بعد. كان المنافس التالي للأتمتة عملية تلقي الردود من الضيوف. للقيام بذلك ، كان من الضروري فقط مراجعة القائمة ، والعثور على "المخالفين" الذين لم يختاروا أطباقهم ، وإرسال رسائل لهم!
for num in range(2, 72):

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

في الختام
تنظيم حفل الزفاف ليس بالأمر السهل. في أي وقت ، قد يبدو لك أن العديد من جوانب الحدث خارجة عن إرادتك. من المؤكد أن الأتمتة جعلت حياتي أسهل من خلال توفير قناة اتصال مباشرة مع الضيوف وأدوات لا حصر لها لمتابعة إجاباتهم وتذكيرهم بأي حاجة لاتخاذ القرار والإجابة. لقد ساعدتنا في أخذ واحدة من أكثر الأمور الشاقة المرافقة لمثل هذه الأحداث في أيدينا ، وسمحت لنا بتحرير الكثير من الوقت والتركيز على المكونات الهامة الأخرى لمثل هذا الحدث المهم في حياتنا.
إن إنشاء حلول قابلة للتطوير للمهام المعقدة ليس سهلاً على الإطلاق ، وحتى إحدى الإصدارات النهائية من تطبيقي بالكاد يمكنها التعامل مع المهام في الأماكن. في البداية ، خططت لتطوير حل أكثر شمولًا ، مع تصور التقدم ، وتكامل الصوت ، وأقل اعتمادًا على نصوص CLI ، ولكن الوقت ساد في هذا السباق. بشكل عام ، أنا سعيد بكيفية سير كل شيء. لا توجد أنظمة اتصال مثالية. يجب عليك دائمًا استخدام القناة الأكثر ملاءمة لجمهورك ، سواء كانت
SMS أو
Voice أو
Chat أو
Video أو
semaphore .
إذا كنت تريد التحدث عن أتمتة الزفاف ، راسلني عبر
تويتر .
