今天要跟大家介紹的是Line Bot進階的互動功能-「樣板訊息 template message」,回應訊息若只有文字、圖片等較為無法吸引使用者目光;而LINE Bot可以使用樣版組合多種回應訊息,並且內建四種樣版:按鈕樣版、確認樣版、轉盤樣版、圖片轉盤樣版,讓頁面更加多樣化,也大幅提升使用者互動的彈性。
按鈕樣版是回應樣版訊息中最常使用的樣版,可結合圖片、文字以及按鈕,並讓使用者點選按鈕後做適當的回應處理。
基本語法
buttons_template_message = TemplateSendMessage(
alt_text = 取代文字,
template = ButtonsTemplate(
thumbnail_image_url = 圖片網址,
title = 標題文字,
text = 說明文字,
actions = [
按鈕元件1,
按鈕元件2,
......
]
)
)
文字訊息
例如:按鈕文字為「文字訊息」,回傳文字為「@購買披薩」
MessageTemplateAction(
label = '文字訊息',
text = '@購買披薩'
)
根據回傳值「@購買披薩」做後續適當的回應處理
if mtext == '@購買披薩':
message = TextSendMessage(
text = '感謝您的購買,我們盡快為您製作',
)
line_bot_api.reply_message(event.reply_token,message)
連結按鈕
例如:按鈕文字為「連結網頁」,點選後開啟GOOGLE首頁
URITemplateAction(
label = '連結網頁',
uri = 'https://www.google.com.tw/?hl=zh_TW'
),
回傳按鈕
回傳按鈕除了可以回傳文字訊息外,還可以回傳一個Postback資料
例如:按鈕文字為「回傳訊息」,Postback資料為「action=buy」
PostbackTemplateAction(
label = '回傳訊息',
data = 'action=buy'
),
使用點選回傳按鈕會觸發Postback事件,後續動作必須在Postback事件中處理
if isinstance(event, PostbackEvent):
backdata = dict(parse_qsl(event.postback.data))
if backdata.get('action') == 'buy':
message = TextSendMessage(
text = '感謝您的購買,我們盡快為您製作',
)
line_bot_api.reply_message(event.reply_token,message)
練習程式
def sendButton(event):
try:
message = TemplateSendMessage(
alt_text = '按鈕樣板',
template = ButtonsTemplate(
thumbnail_image_url='https://i.imgur.com/pRdaAmS.jpg',
title='按鈕樣板範例',
text='請選擇:',
actions=[
MessageTemplateAction(
label='文字訊息',
text='@購買披薩'
),
URITemplateAction(
label='連結網頁',
uri='https://www.grazie.com.tw/menu#food=1&meal=1'
),
PostbackTemplateAction(
label='回傳訊息',
data='action=buy'
),
]
)
)
line_bot_api.reply_message(event.reply_token,message)
except:
line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!'))
def sendPizza(event):
try:
message = TextSendMessage(
text = '感謝您的購買,我們盡快為您製作',
)
line_bot_api.reply_message(event.reply_token,message)
except:
line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!'))
def sendBack_buy(event, backdata):
try:
text1 = '感謝您的購買,我們盡快為您製作。(action 的值為' + backdata.get('action') + ')'
message = TextSendMessage(
text = text1
)
line_bot_api.reply_message(event.reply_token,message)
except:
line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!'))
確認樣版為顯示確認、取消訊息的確認按鈕,讓使用者可以再次確認操作,以免在重要時刻不小心點選錯誤按鈕造成重大損失
基本語法
confirm_template_message = TemplateSendMessage(
alt_text = 取代文字,
template = ConfirmTemplate(
text = 提示文字,
actions = [
按鈕元件1,
按鈕元件2,
......
]
)
)
文字訊息、連結按鈕、回傳按鈕三種按鈕就可使用,大部分以文字訊息居多
練習程式
def sendConfirm(event):
try:
message = TemplateSendMessage(
alt_text = '按鈕樣板',
template = ConfirmTemplate(
text='確認是否購買這項產品?',
actions=[
MessageTemplateAction(
label='是',
text='@yes'
),
MessageTemplateAction(
label='否',
text='@no'
)
]
)
)
line_bot_api.reply_message(event.reply_token,message)
except:
line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!'))
def sendYes(event):
try:
message = TextSendMessage(
text = '感謝您的購買,\n我們會盡快寄出商品',
)
line_bot_api.reply_message(event.reply_token,message)
except:
line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!'))
轉盤樣版是多個按鈕樣版的結合,以並排的方式,使用者滑動按鈕樣版即可選擇不同按鈕樣版
基本語法
carousel_template_message = TemplateSendMessage(
alt_text = 取代文字,
template = CarouselTemplate(
columns=[
CarouselColumn(
#按鈕樣板一
thumbnail_image_url = 圖片網址,
title = 標題文字,
text = 說明文字,
actions = [
按鈕元件1,
按鈕元件2,
......
]
),
CarouselColumn(
按鈕樣板二
),
......
]
)
)
練習程式
def sendCarousel(event):
try:
message = TemplateSendMessage(
alt_text = '轉盤樣板',
template = CarouselTemplate(
columns = [
CarouselColumn(
thumbnail_image_url='https://i.imgur.com/pRdaAmS.jpg',
title='PIZZA 樣板',
text='PIZZA 轉盤樣板',
actions=[
MessageTemplateAction(
label='選擇披薩',
text='選擇披薩'
),
URITemplateAction(
label='連結披薩菜單網頁',
uri='https://www.grazie.com.tw/'
),
PostbackTemplateAction(
label='PIZZA 回傳訊息',
data='action=sell&item=披薩'
),
]
),
CarouselColumn(
thumbnail_image_url='https://i.imgur.com/MyLoA5d.jpg',
title='DRINK 樣板',
text='DRINK 轉盤樣板二',
actions=[
MessageTemplateAction(
label='選擇飲料',
text='選擇飲料'
),
URITemplateAction(
label='連結飲料菜單網頁',
uri='https://www.facebook.com/'
),
PostbackTemplateAction(
label='DRINK 回傳訊息',
data='action=sell&item=飲料'
),
]
)
]
)
)
line_bot_api.reply_message(event.reply_token,message)
except:
line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!'))
先點選設定好的圖文選單-轉盤樣版,而後依序點選按鈕
圖片轉盤樣版,以及圖片地圖、日期時間按鈕,將於下篇和大家介紹( •̀ ω •́ )✧