在寫這篇時發現,因為在上篇文章有提到模板訊息,裡面有大量出現Action objects,Quick replies也會用到Action objects,這篇應該要放在DAY10之前的,不過這篇會來介紹Quick replies和繼續介紹上篇模板中沒講到的 Action objects。
Quick replies(快速回覆)的功能是當機器人傳送訊息時在聊天室底部會出現按鈕,你可以點擊按鈕快的回復訊息。
實現方式是在一般訊息中加入quick_reply參數。
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"))]))
Action objects(動作物件)為當使用者點擊訊息中的按鈕或點擊圖片會觸發的動作。
可觸發的Action objects分為八種
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'
)
*為必要的屬性
Message action(訊息動作)可以傳送一個文字訊息到聊天室,之後可以透過監聽Message event接收並處理訊息資料。
MessageAction(
label='message1',
text='message text1'
)
*為必要的屬性
URI action可以開啟LINE APP內建瀏覽器並定位到你設定的uri位址
URIAction(
label='uri1',
uri='http://example.com/1'
)
*為必要的屬性
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"
)
*為必要的屬性
日期及時間必須依照這個格式
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(相機動作)可開啟相機,拍照後並傳至聊天室
CameraAction(
label='Camera'
)
*為必要的屬性
Camera roll action(相機膠捲動作)可開啟相簿,選擇圖片後並傳至聊天室
CameraRollAction(
label='Camera Roll'
)
*為必要的屬性
透過GPS傳送你的位置資訊到聊天室,這個動作只能透過quick replies按鈕觸發
LocationAction(
label='Location'
)
*為必要的屬性
Richmenu(圖文選單)之後會介紹,Richmenu Switch Action(圖文選單切換動作)不能透過quick replies及Flex Messages觸發,可以透過點擊圖文選單觸發,觸發後會切換圖文選單並透過postback event回傳data到bot server
RichMenuSwitchAction(
richMenuAliasId= "richmenu-alias-b",
data="richmenu-changed-to-b"
)
*為必要的屬性
參考來源:
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