前言
目标:掌握 Line Messaging API,客製自动回覆功能,这次串接是参考 Line Messaging API 串接手册
Channel 设定跟 Access token 都好了之后,就可以来玩玩 Line Messaging API
Line Messaging API 串接需要了解两个部分:
接收讯息或动作 - Webhook event object
Receiving messages (webhooks) 这篇有写,如果有人家好友或是传讯息到这个 Line 官方帐号,LINE 会用 HTTP POST 的方式传送 webhook event object 到你在 LINE Developers Console(Channel) 的 Webhook URL 填写的网址。
Webhook event
图片来源:https://developers.line.biz/en/docs/messaging-api/receiving-messages/#webhook-event-in-one-on-one-talk-or-group-chat
几个比较基本的
Message Event:只要有人发讯息给官方帐号,不管是个人或是群组都会收到,cx 有人发了 「你好」,收到的 event object 就会有 「你好」,就可以再透过「你好」这个讯息来做一些判断了~Follow Event:加入官方帐号好友Join Event:加入有官方帐号在的群组有了 event object 之后,你就可以透过 event object 的资讯来决定要发送怎样的讯息到 Line
发送讯息 - Sending Message
发送讯息依发送的方式有两种,一个被动发送(Send reply message)、一个是主动发送(Send push message),两者的差别在于「被动发送」一定是要先有人发送讯息(或其他动作)给你,然后会收到 replyToken
,再透过 replyToken
回讯息给他,「主动发送」则不用 replyToken
就可以发送讯息。
Send reply message
Body 参数:
以 PHP 为例
<?php //设定Token $ChannelAccessToken = '你的 Channel access token...'; // 我用 long-lived// get message event 接受 webhook 用的$HttpRequestBody = file_get_contents('php://input'); $data = json_decode($HttpRequestBody, true);foreach($data as $value){if(is_array($value)){foreach($value as $events){ extract($events); // 取出 object 里的 key value}}}$Payload = '{ "replyToken":"'.$replyToken.'", //webhook event object 里的 event object "messages":[ { "type":"text", "text":"Hello, user" }, { "type":"text", "text":"May I help you?" } ]}';$ChannelAccessToken = "你的 Channel Access Token....";// 我用的是 long-lived$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.line.me/v2/bot/message/reply'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $Payload); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Authorization: Bearer ' . $ChannelAccessToken ]); $Result = curl_exec($ch); curl_close($ch);?>
发出讯息的讯息会长这样
这样就成功用 Line Messaging API 发出 reply message
参考资料
Send reply message
Receiving messages (webhooks)