前面一篇已經在SQL內建立好的table並也看到建立好的欄位名稱。
接下來,再回去Pycharm的service.py下方新增一個function叫做service_confirmed_event。
透過service_id取得關於服務項目的資料。
透過datetime的strptime將原本單純的字串轉換成datetime的資料型態。
然後透過line_id取得user的物件。
然後建立Reservation的物件,再透過db.session將物件加到session中,然後用session.commit將資料儲存到資料庫。
存好之後就用reply_message回復客戶預約完成。
程式碼:
def service_confirmed_event(event):
data = dict(parse_qsl(event.postback.data))
booking_service = services[int(data['service_id'])]
booking_datetime = datetime.datetime.strptime(f'{data["date"]} {data["time"]}', '%Y-%m-%d %H:%M')
print(booking_datetime)
user =User.query.filter(User.line_id == event.source.user_id).first()
reservation = Reservation(
user_id=user.id,
booking_service_itemid=f'{booking_service["itemid"]}',
booking_service=f'{booking_service["title"]} {booking_service["duration"]}',
booking_datetime=booking_datetime
)
db.session.add(reservation)
db.session.commit()
line_bot_api.reply_message(
event.reply_token,
[TextSendMessage(text='OK,thank you!')]
)
再來進入主程式app.py內,添加上一個新的判斷程式為confirmed,就是確認預約後,就會呼叫程式service_confirmed_event,完成之後再來重新啟動SEVER進行測試。
程式碼:
elif data.get('action') == 'confirmed':
service_confirmed_event(event)
重新啟動SEVER進行測試流程:
重啟ngrok,在terminal輸入服務時指令,程式碼:
ngrok http 5000 --region ap
複製Forwarding的網址,到line developers修改Webhook URL,網址貼上後面加上/callback
然後運行APP,
接下來就能操作linebot了。
在LINEBOT上按照操作,最後按下確認預約。
再到pgAdmin查看資料,確認剛剛的預約是否有寫入。
這樣就已經完成,讓客戶預約的操作與將客戶預約的資料儲存在資料庫的操作了。
如果給予客戶預約,那也要給予客戶取消預約的操作以及從資料庫將客戶的預約改成取消,這樣才會完整。
下一篇,取消預約功能