目標:掌握 Line Messaging API,客製自動回覆功能,這次串接是參考 Line Messaging API 串接手冊
Channel 設定跟 Access token 都好了之後,就可以來玩玩 Line Messaging API
Line Messaging API 串接需要了解兩個部分:
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
幾個比較基本的
有了 event object 之後,你就可以透過 event object 的資訊來決定要發送怎樣的訊息到 Line
發送訊息依發送的方式有兩種,一個被動發送(Send reply message)、一個是主動發送(Send push message),兩者的差別在於「被動發送」一定是要先有人發送訊息(或其他動作)給你,然後會收到 replyToken
,再透過 replyToken
回訊息給他,「主動發送」則不用 replyToken
就可以發送訊息。
格式 | application/json |
---|---|
URL | https://api.line.me/v2/bot/message/reply |
請求方式 | POST |
Authorization | Bearer {channel access token} |
Body 參數:
參數 | 類型 | 說明 |
---|---|---|
replyToken | string | webhook event 傳給你的 replyToken |
messages | obj | 要傳送的訊息 (最多 5 則) |
以 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)