iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0
自我挑戰組

30天玩轉規劃LINE BOT系列 第 23

第23天:增加 line bot 機器人功能(七)

  • 分享至 

  • xImage
  •  

前面一篇已經在SQL內建立好的table並也看到建立好的欄位名稱。
https://ithelp.ithome.com.tw/upload/images/20221008/20144761e2qDt2fjDo.png

接下來,再回去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上按照操作,最後按下確認預約。
https://ithelp.ithome.com.tw/upload/images/20221008/20144761MdHmDBvy6a.jpg

再到pgAdmin查看資料,確認剛剛的預約是否有寫入。
https://ithelp.ithome.com.tw/upload/images/20221008/20144761Wrkx2bNG0w.png

這樣就已經完成,讓客戶預約的操作與將客戶預約的資料儲存在資料庫的操作了。

如果給予客戶預約,那也要給予客戶取消預約的操作以及從資料庫將客戶的預約改成取消,這樣才會完整。

下一篇,取消預約功能


上一篇
第22天:增加 line bot 機器人功能(六)
下一篇
第24天:line bot 機器人取消預約功能
系列文
30天玩轉規劃LINE BOT30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言