學習日記 — Line Liff 點數活動

--

每一年我們站上都會有許多活動,主要的目的不外乎是增加顧客與站上的黏著度,一但黏著度建立後,顧客才會在你的媒體渠道願意接收站上的行銷與促銷的內容,顧客再選擇進站轉換成訂單。

這次的 Line Liff 活動也是建立在公司同事的架構下,開發新的活動機制,這篇會紀錄我學習到的知識與問題解決過程。

接到工作到開發前

我是於 2020/12/10 接到需求,上線日為 2021/1/11,活動時間 1/12 至 1/19。先前的開發摸到顧客的部分,經驗沒其他資深工程師多,沒有活動開發的經驗,跟一般開發時程比較不一樣的點,活動的上線時間是 hard deadline,比較難以變動,對我是一大挑戰,於是我列了一些開發時程如下。

天真的預計開發時程

當拿到這個需求的時候,當然是把前人的程式碼看過一次,然後理解一下架構,知道哪些功能已經有強者幫我做完了,我不用操心,以免不必要的重工。因為整個活動檔案分成三個 repo , line_liff 是前端與後端(顧客登入 line liff 活動頁等邏輯)、還有一個 repo 處理 api 部分(點數是否發完、參與活動細節包含使用者是否參與活動等等狀態)、剩下一個 repo 處理 cronjob (定時配發點數、紀錄活動資料統整、發送推播訊息給使用者),上述這些也是問公司們強者再整理出來的,心裡 OS: 光是啃完強者巨人的肩膀,我還不確定我是不是能成為艾蓮葉卡呢!

開發時遇到痛點

跟需求單位釐清需求後,這次活動需要做一個 Line 連結站上帳號的機制,開發初期都不認為是個很難的問題。因此就決定要把站上登入機制在實作一個頁面出來,利用 bootstrap 完成,並利用打 api 到站上去確認帳號是否登入成功,如登入成功就綁 line。

但後續遇到需求單位調整需求,不用再重刻一個頁面,利用原先已有登入機制就可以,當下心情當然會受影響,不過應該減輕一些畫面的工,畢竟拿現成的,因此開發流程變成要在使用者剛進入頁面時,打 api 看是否已登入活動,但開發時痛點在於,手機上的 application 滑掉後,application cookie 紀錄會消失,可能也是我不熟這塊。

因此我需要利用 mongo 去紀錄使用者 line 資訊並綁在站上 user 上,經過自己一番折騰後,把想法化成下面的圖片,大概就是要確認使用者是否已經參加過此活動、參加過的使用者要撈出活動資訊等等,不畫下來真的會在實作開發時,懷疑人生!

line 綁站上機制

其他痛點,就是像 CORS,line_liff & 站上的資訊會 sessions 傳不回來等等,解法就是上面的 mongo db 去紀錄每一個使用者裝置的 token 對上 line。

line 兌換點數與推播訊息,因為這次機制 PM 需求比較複雜,要分為參加活動、綁定活動,因此在 cronjob 會去撈出不同形式的使用者資料進行推播。

結語

這次的專案在開發的時候很刺激,但也詢問了同事的想法去幫助我更快解決問題,我認為寫程式前的思考在相對大 scope 專案,更為重要。不要盲目下筆,因為你可能會懷疑人生,不確定你此時此刻在做什麼(我是誰?我在哪?)。

另外,跟需求單位的溝通也是相當重要,需求單位有時候不會很清楚他們要什麼,可以一步一步溝通幫助他們勾勒出更多需求細節,並幫助他們排出需求的先後順序畢竟 hard deadline 情況下,不可能全部都做到,一定是挑出重要的且能做到的先做

對於活動的想法,我認為這次活動設計太過複雜,對於使用者體驗可能不太直觀,大多數人看到綁定,應該就會回上一頁了!我個人比較傾向利用每個活動獲取消費者的一些 insight (遊戲機制類型問卷等),不光光只有導流等成效,不過這一塊又是另一片汪洋惹~

2021 第一篇文章,祝大家新年快樂

--

--