LIFF 是一种 Line 提供让 line bot 可以不跳脱 Line 去开启网页的 API。
LIFF API 能做的功能可以参考官方文档,这篇则是会先介绍如何创建一个 LIFF 页面。
首先安装 liffpy 套件
$ pip install liffpy
liff 建立的时候需要分别给他 view_type 跟 view_url 两个参数,view_type 是要用来设定开启的网页的大小,有三种可以选择,可以参考下列表格。view_url 则是要给想转成 liff 格式的网址,需要是 https开头。
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 idliff_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"))