iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
Software Development

LINE Messaging API SDK for Python 實現群組團購輔助機器人系列 第 11

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 10 Template message in Messaging API
下一篇
DAY 12 群組相關事件及命令
系列文
LINE Messaging API SDK for Python 實現群組團購輔助機器人30

尚未有邦友留言

立即登入留言