iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0
自我挑戰組

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

第25天:設置line bot 機器人管理者查閱權限

  • 分享至 

  • xImage
  •  

設置管理者,是因為管理者或店家不太可能時時都在操作電腦,那如果能讓他們在直接詢問機器人,讓機器人回復用戶預約情形,這樣也比較容易知曉狀況。所以就是設置特定用戶能使用的功能。
先在events資料夾下增加一個pyton的檔案,名字我取名為admin
https://ithelp.ithome.com.tw/upload/images/20221010/20144761Jk7qHxzCib.png

在admin.py會放入管理所可以使用的功能。

首先就是匯入line_bot_api、Reservation與datetime的模組。
然後定義一個list_reservation_event的function,功能式顯示預約的名單,這個功能會去搜尋預約的資料,過濾條件就是沒有被取消與當下時間之後。
並且設定依照預約時間排序,asc邏輯意思就是由小至大,就是說出來的時間排序就是最近到最遠未來。(desc是反向的,由大至小,未來可能在定義價格之類的會用到,那目前不用),最後用all()將所有資料轉換成物件,並存成列表回傳存至reservation。
另外定義一個function為reservation_data_text來顯示預約名單,然後透過for迴圈跑每一筆預約資料,就會依序將用戶的預約時間、服務項目、用戶名依序回傳,最後用line_bot_api.reply_message回傳資料。

from line_bot_api import *

from models.Reservation import Reservation
import datetime

def list_reservation_event(event):
    reservations = Reservation.query.filter(Reservation.is_canceled.is_(False),
                                            Reservation.booking_datetime > datetime.datetime.now(),
                                            ).order_by(Reservation.booking_datetime.asc()).all()
    reservation_data_text = '## book list: ## \n\n'
    for reservation in reservations:
        reservation_data_text += f'''booked date: {reservation.booking_datetime}
booked item: {reservation.booking_service}
name: {reservation.user.display_name}\n'''
        
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text=reservation_data_text)
        )        

接下來,先在主程式app.py上匯入events.admin

from events.admin import *

在來往下到@handler.add(MessageEvent, message=TextMessage),去增加判斷式
如果用戶傳送的訊息開頭如果式【*】,代表是管理者的功能,就會先判斷這用戶是否為管理者,如果不是就return,如果是,就判斷關鍵字【*data】或【*d】時,就呼叫前面定義的function。
"管理者的line id,可以到pgAdmin查看。"

    elif message_text.startswith('*'):
        if event.source.user_id not in ['管理者的line id,可以到pgAdmin查看。']:
            return
        if message_text in ['*data', '*d']:
            list_reservation_event(event)

https://ithelp.ithome.com.tw/upload/images/20221010/201447615GqTVLtCyg.png
https://ithelp.ithome.com.tw/upload/images/20221010/20144761hkc4v48R01.png

完畢後,就重新啟動SERVER進行測試,若沒問題,這功能也就完成。
重新啟動SEVER進行測試流程:
重啟ngrok,在terminal輸入服務時指令,程式碼:

ngrok http 5000 --region ap

複製Forwarding的網址,到line developers修改Webhook URL,網址貼上後面加上/callback
然後運行APP,
接下來就能操作linebot了。
https://ithelp.ithome.com.tw/upload/images/20221010/20144761j4RoBobUyt.jpg

下一篇,完成其他剩餘功能


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

尚未有邦友留言

立即登入留言