Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。
2016年9月3日對於大多數人來說是一個平凡的一天,但對於我來說卻是一個永遠都無法忘記的一天,因為這一天是我的婚禮。
當舉辦一場婚禮時,有許多事情需要我們考慮,比如,食物,裝飾,鮮花,住宿,交通,娛樂項目以及婚禮舉辦的場所等等各種方面。同時,還有許多其它未知的事情。在這裡,我唯一可以確定的就是,到時將會有許許多多隨處可見的表單。當看著越來越多的條目時,我開始思考是否有一個更好的方式來解決這個問題?純手工來整理這些項目實在是太低效了,是時候用技術來改善這一狀況了!
不必驚訝,邀請人們來參加婚禮通常是昂貴的(超過380磅)。首先,你需要發一個婚禮日期的請柬以及有關婚禮具體安排的邀請函。而這通常是很慢的,因為你不得不通過郵寄的方式來發送。然後你需要隨時查看人們是否收到了請柬以及是否能夠來參加婚禮,這個可以用自動化的過程來實現,不是嗎?最後,邀請函通常是一次性的而且很容易丟失和放錯地方,而這些都是非常不環保的。
回到列表的話題上,我要收集的列表內容一般分成下面幾個部分:
你想要邀請人的名單
回覆你請柬人的名單
能夠確定參加婚禮的人的名單
確定參加婚禮的人選擇的食物列表
有個匯總的列表總是好的,因為列表實際上是預先定義好的要求和格式,這樣很有助於自動化完成它們。
信息整理
不考慮年齡的話,每一個參加婚禮的人都有一個手機,而這意味著我可以用Twilio來解決這個問題。如果你想看這部分的代碼,可以看這個網址:
https://github.com/SeekTom/Twilio/tree/master/Wedication
簡訊是我最好的選擇,我可以快速高效發出大量的信息並且處理它們。在考慮軟體架構與資料庫時,我只想要一個容易分享的東西而不想浪費時間在視圖顯示上。儘管在python的表格管理gspread庫上遇到了一些麻煩,但是最終還是能夠使我讀取和寫入谷歌的電子表單。雖然這不是最快的選擇,可是它足夠靈活並且提供了一個易於訪問和可讀的輸出。
在最初的回覆中,我列出了下面的項目:
姓名
電話號碼
確認狀態
聯繫細節狀態
簡訊數量(包括總共發出的和隨後回復的)
當這些數據都收集完成之後,我用gspread遍歷這個列表向每個有手機號碼的客人發送邀請簡訊。
具體代碼如下:
因為簡訊看起來有點單調,我用unicode加入了一些樣式,最終接收到簡訊的人就像一個幸運的受邀者,效果如下;
接下來,我用Flask作為我的網頁伺服器,將指向/messages的連結創建一個簡單的if語句來進行恢復(yes,no)
代碼如下:
我的第一個簡訊是在2月19號早上8:37發出的,在三分鐘之後就收到了第一個確認回復。到了9:38我已經收到了23個回復,達到了32%的接收率。兩天之後經過初始的大量信息的發送,已經有58%的客人確定回復了。儘管取得了不錯的的效果,我的妻子並沒有把我的簡訊作為婚禮邀請服務給賣出去,所以我打算再加入一些功能。
之後,我又加入了一些統計功能,可以算出到場的客人名單並按要求進行回復,同時給新娘即時反饋客人名單的形成過程。這個代碼是很簡單的,因為我之前已經在電子表單裡設置了一些基本的計數器,只要把這些單元格的內容添加到簡訊裡就行。
這是最終的簡訊效果:
雖然不是很完美,但是很管用。
結果表明Lauren有效的緩解了這方面的壓力,可以很好的反饋出客人的狀態。從那時起,所有的系統都運行起來,簡訊也被融入了更多關於婚禮方面的信息。許多信息是顯而易見的,例如當向婚禮網站進行直播時發送一個通知,還有分享一下禮物列表以及那些我一直引以為豪的人。
食物,光榮的食物
完成客人的回覆後,最耽誤時間的地方在於讓客人確認食物。你會發現它是多麼的困難讓人們選擇免費的食物。第一步就是另發送一個簡訊告訴參加婚禮的人到特定的網址上以Google表單的形式選擇他們的食物。這個過程是很標準的,給客人填寫數據的表單都是一樣的,所以我現在有了參加婚禮人的填寫好的食物選擇表單。通常我可以慢慢的等客人選擇他們的食物,但是我的婚禮背後有Twillio,這意味著我可以以最小的代價來追蹤客人需求的變化。
這些數據需要與參加婚禮的客人名單相匹配,一旦匹配成功就更新客人的食物列表。雖然這需要花費一點功夫,但是一旦這個代碼完成,我就可以根據需求批量運行這些腳本,在簡訊上得到最新的參加婚禮人的選擇。
現在已經有了一個確認參加婚禮人的名單以及越來越多的食物列表。通過主程序將這些統計數據公開是有意義的,需要做的就是將相關單元格的內容提取出來並用簡訊進行回復。
這是非常方便的,向婚禮餐飲提供者提供我們的進展以及有關誰沒有選擇食物的數據。整個過程都是在自動化的過程中進行的,通過遍歷參加者的名單,找到那些沒有選擇食物的客人並向他們發送通知。
隨著那最重要的一天的來臨,唯一需要做的事就是發送最後一個簡訊,提醒客人一些基本的細節,記得帶一把傘來預防英國這總是下雨的夏季時間。
總結
舉辦一場婚禮從來都不是一件簡單的事情,許多事情都不在你的控制範圍之內。自動收集信息的過程提供了一種直接可以和客人溝通的過程,可以隨時追蹤和回復客人的要求。這使我的生活更加容易,幫助我不必將時間浪費在瑣碎的事情上,可以將精力集中在重要日子的其它更重要的事情上。
另外,構建複雜問題的可擴展解決方案從來都不是一件容易的事,即使在最後,我的應用程式有時也是很脆弱的。我已經計劃建立一個更完整的解決方案,包括數據可視化,語音集成以及更少的依賴CLI腳本。總而言之,我是非常高興它最終能夠很好的運行,沒有任何一個通訊系統是完美的,你需要通過實踐來找到最適合你的,無論是簡訊,語音,聊天還是視頻。
如果你想和我討論婚禮的自動化,可以在推特上找我@seektom