iT邦幫忙

0

用 Python 暢玩 Line bot - 21:LIFF(一)

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"))

尚未有邦友留言

立即登入留言