Line bot API 中有一种只有 line bot 专属的讯息种类,叫做 Template message,他跟 Flex message 有类似的功能,不过最不一样的地方是,电脑无法看到 Template message,如图一。也因此,大多数人会选择使用 Flex message 而非 Template message。
(图一,从电脑上看 Template message)
Template message 中有四种类型的样式可以选择,分别为 Buttons、Confirm、Carousel、ImageCarouselTemplate。下面程序码为使用 Template message 的范例
line_bot_api.reply_message(event.reply_token, TemplateSendMessage(
thumbnail_image_url=<image uil>,
alt_text=<template title>,
template=<template type>()
))
其他参数可以参照 Messaging API reference
下面来介绍不同种类的 template以及其特色。
该 template 能有4个 action
buttons_template_message = TemplateSendMessage(
alt_text='Buttons template',
template=ButtonsTemplate(
title='Menu',
text='请选择地区',
actions=[
MessageTemplateAction(
label='选项一',
text='option one',
),
MessageTemplateAction(
label='option two',
text='选项二',
)
]
)
)
line_bot_api.reply_message(event.reply_token, buttons_template_message)
(图二)
该 template 只能有两个 action,通常用来用在使用者只有两个选择的时候。
confirm_template_message = TemplateSendMessage(
alt_text='Confirm template',
template=ConfirmTemplate(
text='Are you sure?',
actions=[
PostbackAction(
label='postback',
display_text='postback text',
data='action=buy&itemid=1'
),
MessageAction(
label='message',
text='message text'
)
]
)
)
line_bot_api.reply_message(event.reply_token, confirm_template_message)
该 template 能最多有五个区块,每个区块内最多三个 action,这些区块会呈横向排列,并可以滑动。
(图三)
carousel_template_message = TemplateSendMessage(
alt_text='Carousel template',
template=CarouselTemplate(
columns=[
CarouselColumn(
thumbnail_image_url='https://example.com/item1.jpg',
title='this is menu1',
text='description1',
actions=[
PostbackAction(
label='postback1',
display_text='postback text1',
data='action=buy&itemid=1'
),
MessageAction(
label='message1',
text='message text1'
),
URIAction(
label='uri1',
uri='http://example.com/1'
)
]
),
CarouselColumn(
thumbnail_image_url='https://example.com/item2.jpg',
title='this is menu2',
text='description2',
actions=[
PostbackAction(
label='postback2',
display_text='postback text2',
data='action=buy&itemid=2'
),
MessageAction(
label='message2',
text='message text2'
),
URIAction(
label='uri2',
uri='http://example.com/2'
)
]
)
]
)
)
line_bot_api.reply_message(event.reply_token, carousel_template_message)
该 template 和 Carousel template 相似,不同的地方是每个区中没有选项,而是显示一张大图。
(图四)
image_carousel_template_message = TemplateSendMessage(
alt_text='ImageCarousel template',
template=ImageCarouselTemplate(
columns=[
ImageCarouselColumn(
image_url='https://example.com/item1.jpg',
action=PostbackAction(
label='postback1',
display_text='postback text1',
data='action=buy&itemid=1'
)
),
ImageCarouselColumn(
image_url='https://example.com/item2.jpg',
action=PostbackAction(
label='postback2',
display_text='postback text2',
data='action=buy&itemid=2'
)
)
]
)
)
line_bot_api.reply_message(event.reply_token, image_carousel_template_message)
actions 是用来决定下面 button 分别的功能,而每一个 action 有三种功能可以选:postback、message、uri。action 的参数 label 为 button 上所显示的文字。text 为按下按钮後,会让使用者回传的文字。
当使用者按了这个 button 时,Line Server 会传一个 postback event 给我们,里面包含着 data 参数中设定的字串,可以透过 event.postback.postback.data 取出 data。
Postback 可以不给 text 参数
text 参数在 Message Action 是必须的,也不能给空字串
如果希望这个按键,只有显示但不会由使用者传文字过来,可以给一串空白 (e.g. ' ')
使用者按下这个按键就会用 Line 的浏览器跳到外部网页
<<: [Day31] Hexo x GitHub Pages 打造个人部落格
能够载入与以动作触发声音 能够使用图片结合物件互动 了解如何解构图片为粒子跟像素 了解如何将影片放...
Explore Azure service health Provide personalized ...
一直遭到攻击的山姆,生命值也快用尽了。 「快离开我们的地盘!」山姆被 Rain 跟 Storm 团...
在上一篇,我们完成了 三大法人 vs. 非三大法人占比。 不过,三大法人占比还可以再用细项来分出,把...
传统的安全性资讯与事件管理(SIEM)系统通常需要很长的时间 来安装及设定。这类系统在设计时也不一定...