Reference:https://developers.line.biz/en/reference/messaging-api/#common-properties
基本的Webhook Event有以下幾種
Webhook Event | 說明 | 一對一聊天室 | 群組聊天室 |
---|---|---|---|
Message event | 表示使用者發送一則訊息(可以回覆的事件) | ✔ | ✔ |
Unsend event | 表示使用者收回一則訊息 | ✔ | ✔ |
Follow event | 表示你的Line官方帳號被加入好友或者是解除封鎖(可以回覆的事件) | ✔ | ❌ |
Unfollow event | 表示你的Line官方帳號被封鎖或被刪除好友 | ✔ | ❌ |
Join event | 表示你的帳號被加入群組(可以回覆的事件) | ❌ | ✔ |
Leave event | 表示你的帳號被從群組中移除 | ❌ | ✔ |
Member join event | 在您的帳號存在的群組中有人加入的事件(可以回覆的事件) | ❌ | ✔ |
Member leave event | 在您的帳號存在的群組中有人退出的事件 | ❌ | ✔ |
Postback event | 配合Postback action的訊息事件(可以回覆的事件) | ✔ | ✔ |
Video viewing complete event | 用戶觀看完從LINE官方帳號發送的指定TrackingId的影片訊息(可以回覆的事件) | ✔ | ❌ |
✔ Your bot server receives this event ❌ Your bot server doesn't receive this event
表示使用者發送一則訊息,官方帳號可以根據這則訊息進行應對的回覆
Message Object包括以下幾種 :
from linebot.v3.webhooks import (
MessageEvent,
TextMessageContent
)
@handler.add(MessageEvent, message=TextMessageContent)
def handle_text_message(event):
print(f'Got {event.type} event')
message的type(指要接收到的的訊息類型)有:
Reference : https://developers.line.biz/en/reference/messaging-api/#message-event
表示你的Line官方帳號被加入好友或者是解除封鎖
from linebot.v3.webhooks import (
FollowEvent
)
@handler.add(FollowEvent)
def handle_follow(event):
print(f'Got {event.type} event')
加入好友後會傳送一則"Got Follow Event"的訊息
Reference : https://developers.line.biz/en/reference/messaging-api/#follow-event
配合Postback action的訊息事件
當有action type為postback發生時,則會透過messaging API回傳event給Webhook URL
from linebot.v3.messaging import (
MessagingApi,
ReplyMessageRequest,
TemplateMessage,
ButtonsTemplate,
PostbackAction
)
from linebot.v3.webhooks import (
MessageEvent,
PostbackEvent
)
觸發postback action的前置作業(建立一個選單訊息)
@handler.add(MessageEvent, message=TextMessageContent)
def handle_message(event):
line_bot_api = MessagingApi(api_client)
with ApiClient(configuration) as api_client:
if event.message.text == 'postback':
buttons_template = ButtonsTemplate(
title='Postback Sample',
text='Postback Action',
actions=[
PostbackAction(label='Postback Action', text='Postback Action Button Clicked!', data='postback'),
])
template_message = TemplateMessage(
alt_text='Postback Sample',
template=buttons_template
)
line_bot_api.reply_message(
ReplyMessageRequest(
reply_token=event.reply_token,
messages=[template_message]
)
)
其中action有下列幾種 :
觸發action後的動作
@handler.add(PostbackEvent)
def handle_postback(event):
if event.postback.data == 'postback':
print('Postback event is triggered')
按下名為Postback Action的按鈕後,回應一個postback action且值為"postback"
當postback action傳送的值為"postback"時,會回覆一則訊息"Postback Action Button Clicked!"
在伺服器則會輸出一段訊息"Postback event is triggered"
Reference:https://developers.line.biz/en/reference/messaging-api/#postback-event