用 Python 畅玩 Line bot - 17:Template message

Line bot API 中有一种只有 line bot 专属的讯息种类,叫做 Template message,他跟 Flex message 有类似的功能,不过最不一样的地方是,电脑无法看到 Template message,如图一。也因此,大多数人会选择使用 Flex message 而非 Template message。

(图一,从电脑上看 Template message)
http://img2.58codes.com/2024/201425644DW7qRBeIp.png

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 type

1. Buttons 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)

(图二)
http://img2.58codes.com/2024/20142564nW59XNrtAQ.png

2. Confirm template

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

3. Carousel template

该 template 能最多有五个区块,每个区块内最多三个 action,这些区块会呈横向排列,并可以滑动。

(图三)
http://img2.58codes.com/2024/20142564MHbuUd9yzN.png

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)

4. ImageCarousel Template

该 template 和 Carousel template 相似,不同的地方是每个区中没有选项,而是显示一张大图。
(图四)
http://img2.58codes.com/2024/20142564mpjaIZUpRQ.png

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)

Action

actions 是用来决定下面 button 分别的功能,而每一个 action 有三种功能可以选:postback、message、uri。action 的参数 label 为 button 上所显示的文字。text 为按下按钮后,会让使用者回传的文字。

Postback

当使用者按了这个 button 时,Line Server 会传一个 postback event 给我们,里面包含着 data 参数中设定的字串,可以透过 event.postback.postback.data 取出 data。
Postback 可以不给 text 参数

Message

text 参数在 Message Action 是必须的,也不能给空字串
如果希望这个按键,只有显示但不会由使用者传文字过来,可以给一串空白 (e.g. ' ')

URI

使用者按下这个按键就会用 Line 的浏览器跳到外部网页


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章