LIFF 是一種 Line 提供讓 line bot 可以不跳脫 Line 去開啟網頁的 API。
LIFF API 能做的功能可以參考官方文檔,這篇則是會先介紹如何創建一個 LIFF 頁面。
首先安裝 liffpy 套件
$ pip install liffpy
liff 建立的時候需要分別給他 view_type 跟 view_url 兩個參數,view_type 是要用來設定開啟的網頁的大小,有三種可以選擇,可以參考下列表格。view_url 則是要給想轉成 liff 格式的網址,需要是 https開頭。
參數 | 大小 |
---|---|
compact | 50% |
tall | 80% |
full | 100% |
from liffpy import (
LineFrontendFramework as LIFF,
ErrorResponse
)
liff_api = LIFF(<Your line channel token>)
......
@handler.add(MessageEvent)
def handle_message(event):
if(event.message.text[:5] == "https"):
try:
#新增LIFF頁面到LINEBOT中,取得liff id
liff_id = liff_api.add(view_type="tall", view_url=event.message.text)
print(liff_id)
line_bot_api.reply_message(event.reply_token,
TextSendMessage(text='https://liff.line.me/'+liff_id))
except:
print(err.message)
一個 line bot 最多可以用30個 liff id,當你忘記現在已經建立多少個 liff id,或是忘記 id 對應到的網頁是什麼的時候,可以使用liff_api.get()
去查看現在有的 liff id,liff_api.get()
回傳的內容會是一個包有很多個 dict 的 list,每個 dict 就對應一個 liff id。
@handler.add(MessageEvent)
def handle_message(event):
if(event.message.text[:5] == "https"):
......
elif(event.message.text == "查看id"):
for j in liff_api.get():
print(j['liffId'])
那如果已經用完30個 liff id 的額度,想要刪除不用的 liff id,可以使用liff_api.delete(<id>)
來刪除指定 id,但如果你現在想把全部都刪除清空,一個一個去找 id 刪除太麻煩了,我們可以寫一個 for 迴圈去一次刪除。
@handler.add(MessageEvent)
def handle_message(event):
if(event.message.text[:5] == "https"):
......
elif(event.message.text == "查看id"):
for j in liff_api.get():
print(j['liffId'])
elif(event.message.text == "del"):
print(type(liff_api.get()))
for j in liff_api.get():
liff_api.delete(j['liffId'])
try:
print(liff_api.get())
line_bot_api.reply_message(event.reply_token,TextSendMessage(text=del_liff + "已刪除"))
except:
line_bot_api.reply_message(event.reply_token,TextSendMessage(text="沒有任何 LIFF"))