DAY 11 Quick replies & Action objects in Messaging API

在写这篇时发现,因为在上篇文章有提到模板讯息,里面有大量出现Action objects,Quick replies也会用到Action objects,这篇应该要放在DAY10之前的,不过这篇会来介绍Quick replies和继续介绍上篇模板中没讲到的 Action objects。

Quick replies

Quick replies(快速回覆)的功能是当机器人传送讯息时在聊天室底部会出现按钮,你可以点击按钮快的回复讯息。
实现方式是在一般讯息中加入quick_reply参数。

quick_replies参数中的元素

  • item:在其中会放入Quick reply button object这个按钮物件,最多可放13个。

Quick reply button object属性

  • imageUrl:在开头第一个按钮的icon图片连结
  • action:在点击按钮时触发的动作
quick_reply_message=TextSendMessage(text='iThome铁人赛2021',
  quick_reply=QuickReply(items=[
    QuickReplyButton(action=MessageAction(label="quick reply1", text="iThome铁人赛")),
    QuickReplyButton(action=MessageAction(label="quick reply2", text="2021"))]))

https://ithelp.ithome.com.tw/upload/images/20210923/20140165l8KRLQ46nn.jpg

Action objects

Action objects(动作物件)为当使用者点击讯息中的按钮或点击图片会触发的动作。
可触发的Action objects分为八种

  • Postback action:回发动作
  • Message action:讯息动作
  • URI action:URI动作
  • Datetime picker action:日期和时间选取动作
  • Camera action:相机动作
  • Camera roll action:相机胶卷动作
  • Location action:位置资讯动作
  • Richmenu Switch Action:图文选单切换动作

Postback action

Postback action(回发动作)的特点是可以传送一个文字讯息到聊天室,并透过postback event回传data到bot server,传送到聊天室的讯息不一定会为回传的data,亦可不传讯息到聊天室,直接传data到bot server。
bot server可以透过
@handler.add(PostbackEvent)
监听PostbackEvent(回发事件)并从中提取回传的data

PostbackAction (
                label='postback1',
                display_text='postback text1',
                data='action=buy&itemid=1'
                )

*为必要的属性

  • label * :Action objects的标签,详细规则可见#postback-action
  • display_text:要传送到聊天室的讯息
  • data * :透过postback event回传data到bot server,资料与资料间以&间隔

Message action

Message action(讯息动作)可以传送一个文字讯息到聊天室,之後可以透过监听Message event接收并处理讯息资料。

MessageAction(
              label='message1',
              text='message text1'
             )

*为必要的属性

  • label * :Action objects的标签,详细规则可见#message-action
  • display_text:要传送到聊天室的讯息

URI action

URI action可以开启LINE APP内建浏览器并定位到你设定的uri位址

URIAction(
          label='uri1',
          uri='http://example.com/1'
         )

*为必要的属性

  • label * :Action objects的标签,详细规则可见#uri-action
  • uri * :你要定位到的位址
  • altUri.desktop:指定在Mac OS 及Windows开启的uri位址

Datetime picker action

Datetime picker action(日期和时间选取动作)可以选择并传送一个包含日期和时间的postback event

DatetimePickerAction(
                label='Select date',
                data='storeId=12345',
                mode= 'datetime',
                initial='2021-09-01t00:00',
                max="2021-10-15t23:59",
                min="2021-09-01t00:00"
            )

*为必要的属性

  • label * :Action objects的标签,详细规则可见#datetime-picker-action
  • data * :透过postback event回传data到bot server,资料与资料间以&间隔
  • mode * :选取时间的模式,分为三种
    • date:选取日期
    • time:选取时间
    • datetime:选取日期和时间
  • initial:预设的日期及时间
  • max:选取的日期和时间的必须小於这个值
  • min:选取的日期和时间必须大於这个值

日期和时间格式

日期及时间必须依照这个格式

Mode 格式 范例
date 最大:2100-12-31 最大:2100-12-31 2017-06-18
time 最大:23:59 最大:00:00 06:15
datetime 最大:2100-12-31T23:59 最大:1900-01-01T00:00 2017-06-18T06:15

Camera action

Camera action(相机动作)可开启相机,拍照後并传至聊天室

CameraAction(
             label='Camera'
             )

*为必要的属性

  • label * :Action objects的标签,最大长度为20

Camera roll action

Camera roll action(相机胶卷动作)可开启相簿,选择图片後并传至聊天室

CameraRollAction(
                label='Camera Roll'
            )

*为必要的属性

  • label * :Action objects的标签,最大长度为20

Location action

透过GPS传送你的位置资讯到聊天室,这个动作只能透过quick replies按钮触发

LocationAction(
               label='Location'
              )

*为必要的属性

  • label * :Action objects的标签,最大长度为20

Richmenu Switch Action

Richmenu(图文选单)之後会介绍,Richmenu Switch Action(图文选单切换动作)不能透过quick replies及Flex Messages触发,可以透过点击图文选单触发,触发後会切换图文选单并透过postback event回传data到bot server

RichMenuSwitchAction(
                richMenuAliasId= "richmenu-alias-b",
                data="richmenu-changed-to-b"
            )

*为必要的属性

  • label:Action objects的标签,最大长度为20
  • richMenuAliasId * :要切换的图文选单的Alias Id
  • data * :透过postback event回传data到bot server

参考来源:
https://developers.line.biz/en/reference/messaging-api/#quick-reply
https://developers.line.biz/en/docs/messaging-api/using-quick-reply/
https://developers.line.biz/en/reference/messaging-api/#action-objects


<<:  [DAY 08]新成员进来时靠bot进行说明事项

>>:  Day 10 克服系统异常流量的另一帖药CloudFront

D11. 学习基础C、C++语言

D11: 关於EOF 这是一个在C语言里面才有的语法,EOF的意思就是End Of File,是AS...

Day 23:获取位置权限

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 Udemy 和 Youtu...

【在 iOS 开发路上的大小事-Day30】结语

哇,不知不觉就来到了铁人赛的最後一天了,从一开始不知道要写什麽内容,到慢慢想到要写什麽,再到最後终於...

Windows Server 2019 如何安装 IIS 运行 ASP.NET 专案

ASP.NET 是微软推出的网页语言,其主要由 C# 所开发,也有少数人使用 VB.Net 开发。 ...

离职事项:我被裁员了,该准备哪些东西?

前言 最近这两年受到疫情的冲击,尤其是从今年五月中开始疫情第三级警戒,许多企业开始裁员,失业率创近期...